@@ -, +, @@ --- Koha/Item.pm | 5 ++++ api/v1/swagger/definitions/item.yaml | 4 ++++ api/v1/swagger/paths/biblios.yaml | 1 + .../prog/en/modules/catalogue/detail.tt | 23 +++++++++++++++---- 4 files changed, 28 insertions(+), 5 deletions(-) --- a/Koha/Item.pm +++ a/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, --- a/api/v1/swagger/definitions/item.yaml +++ a/api/v1/swagger/definitions/item.yaml @@ -288,6 +288,10 @@ properties: type: - object - "null" + analytics_count: + type: + - integer + - "null" _strings: type: - object --- a/api/v1/swagger/paths/biblios.yaml +++ a/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 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ a/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) { + 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 ""; // FIXME Display analytic count + link + return 'Create analytics'.format(row.biblio_id, row.item_id); } }, [% END %] --