diff --git a/public/openapi/read/admin/manage/categories/category_id/analytics.yaml b/public/openapi/read/admin/manage/categories/category_id/analytics.yaml index 4805c4729b..eb6922114f 100644 --- a/public/openapi/read/admin/manage/categories/category_id/analytics.yaml +++ b/public/openapi/read/admin/manage/categories/category_id/analytics.yaml @@ -39,4 +39,6 @@ get: type: array items: type: number + selectedCategory: + $ref: ../../../../../components/schemas/CategoryObject.yaml#/CategoryObject - $ref: ../../../../../components/schemas/CommonProps.yaml#/CommonProps \ No newline at end of file diff --git a/public/src/admin/manage/category-analytics.js b/public/src/admin/manage/category-analytics.js index a4366d07d1..634f7a7e57 100644 --- a/public/src/admin/manage/category-analytics.js +++ b/public/src/admin/manage/category-analytics.js @@ -1,10 +1,20 @@ 'use strict'; -define('admin/manage/category-analytics', ['Chart'], function (Chart) { +define('admin/manage/category-analytics', [ + 'Chart', 'categorySelector', +], function (Chart, categorySelector) { const CategoryAnalytics = {}; CategoryAnalytics.init = function () { + categorySelector.init($('[component="category-selector"]'), { + onSelect: function (selectedCategory) { + ajaxify.go('admin/manage/categories/' + selectedCategory.cid + '/analytics'); + }, + showLinks: true, + template: 'admin/partials/category/selector-dropdown-right', + }); + const hourlyCanvas = document.getElementById('pageviews:hourly'); const dailyCanvas = document.getElementById('pageviews:daily'); const topicsCanvas = document.getElementById('topics:daily'); diff --git a/src/controllers/admin/categories.js b/src/controllers/admin/categories.js index 597f8ff55e..852adee41c 100644 --- a/src/controllers/admin/categories.js +++ b/src/controllers/admin/categories.js @@ -134,12 +134,14 @@ async function buildBreadcrumbs(categoryData, url) { categoriesController.buildBreadCrumbs = buildBreadcrumbs; categoriesController.getAnalytics = async function (req, res) { - const [name, analyticsData] = await Promise.all([ + const [name, analyticsData, selectedData] = await Promise.all([ categories.getCategoryField(req.params.category_id, 'name'), analytics.getCategoryAnalytics(req.params.category_id), + helpers.getSelectedCategory(req.params.category_id), ]); res.render('admin/manage/category-analytics', { name: name, analytics: analyticsData, + selectedCategory: selectedData.selectedCategory, }); }; diff --git a/src/views/admin/manage/category-analytics.tpl b/src/views/admin/manage/category-analytics.tpl index dcb6ce1d26..18ca7666c0 100644 --- a/src/views/admin/manage/category-analytics.tpl +++ b/src/views/admin/manage/category-analytics.tpl @@ -1,6 +1,14 @@