diff --git a/Koha/Item.pm b/Koha/Item.pm
index ea99889e69..17f4ebfe59 100644
--- a/Koha/Item.pm
+++ b/Koha/Item.pm
@@ -2366,6 +2366,11 @@ sub is_denied_renewal {
return 0;
}
+sub analytics_count {
+ my ($self) = @_;
+ return C4::Items::GetAnalyticsCount($self->itemnumber);
+}
+
=head3 strings_map
Returns a map of column name to string representations including the string,
diff --git a/api/v1/swagger/definitions/item.yaml b/api/v1/swagger/definitions/item.yaml
index a5d6066fd6..5dbde98c70 100644
--- a/api/v1/swagger/definitions/item.yaml
+++ b/api/v1/swagger/definitions/item.yaml
@@ -288,6 +288,10 @@ properties:
type:
- object
- "null"
+ analytics_count:
+ type:
+ - integer
+ - "null"
_strings:
type:
- object
diff --git a/api/v1/swagger/paths/biblios.yaml b/api/v1/swagger/paths/biblios.yaml
index 65dbcd6f88..4e94d04128 100644
--- a/api/v1/swagger/paths/biblios.yaml
+++ b/api/v1/swagger/paths/biblios.yaml
@@ -441,6 +441,7 @@
- bundle_items_lost+count
- bundle_items_not_lost+count
- course_item.course_reserves.course
+ - analytics_count
- cover_image_ids
- item_group_item.item_group.description
- serialitem.serial
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
index c845bf4876..be047cec1b 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
@@ -2197,6 +2197,10 @@
// For host records
embed.push('biblio.title');
+ [% IF analyze %]
+ embed.push('analytics_count');
+ [% END %]
+
let items_table_settings = {
holdings: [% TablesSettings.GetTableSettings('catalogue', 'detail','holdings_table','json') | $raw %],
otherholdings: [% TablesSettings.GetTableSettings('catalogue', 'detail','otherholdings_table','json') | $raw %],
@@ -2601,13 +2605,22 @@
return '%s'.format(row.biblio_id, row.biblio.title);
}
},
- [% IF ( analyze ) %]
+ [% IF analyze %]
{
- data: "",
- searchable: false, // FIXME
- orderable: true,
+ data: "analytics_count",
+ searchable: false,
+ orderable: false,
render: function (data, type, row, meta) {
- return ""; // FIXME Display analytic count + link
+ if (row.analytics_count == 0) return ""
+ return '%s analytics'.format(row.item_id, row.analytics_count);
+ }
+ },
+ {
+ data: "analytics_count", // create analytics link
+ searchable: false,
+ orderable: false,
+ render: function (data, type, row, meta) {
+ return 'Create analytics'.format(row.biblio_id, row.item_id);
}
},
[% END %]