mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 12:05:57 +01:00
@@ -39,4 +39,6 @@ get:
|
|||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: number
|
type: number
|
||||||
|
selectedCategory:
|
||||||
|
$ref: ../../../../../components/schemas/CategoryObject.yaml#/CategoryObject
|
||||||
- $ref: ../../../../../components/schemas/CommonProps.yaml#/CommonProps
|
- $ref: ../../../../../components/schemas/CommonProps.yaml#/CommonProps
|
||||||
@@ -1,10 +1,20 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
|
||||||
define('admin/manage/category-analytics', ['Chart'], function (Chart) {
|
define('admin/manage/category-analytics', [
|
||||||
|
'Chart', 'categorySelector',
|
||||||
|
], function (Chart, categorySelector) {
|
||||||
const CategoryAnalytics = {};
|
const CategoryAnalytics = {};
|
||||||
|
|
||||||
CategoryAnalytics.init = function () {
|
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 hourlyCanvas = document.getElementById('pageviews:hourly');
|
||||||
const dailyCanvas = document.getElementById('pageviews:daily');
|
const dailyCanvas = document.getElementById('pageviews:daily');
|
||||||
const topicsCanvas = document.getElementById('topics:daily');
|
const topicsCanvas = document.getElementById('topics:daily');
|
||||||
|
|||||||
@@ -134,12 +134,14 @@ async function buildBreadcrumbs(categoryData, url) {
|
|||||||
categoriesController.buildBreadCrumbs = buildBreadcrumbs;
|
categoriesController.buildBreadCrumbs = buildBreadcrumbs;
|
||||||
|
|
||||||
categoriesController.getAnalytics = async function (req, res) {
|
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'),
|
categories.getCategoryField(req.params.category_id, 'name'),
|
||||||
analytics.getCategoryAnalytics(req.params.category_id),
|
analytics.getCategoryAnalytics(req.params.category_id),
|
||||||
|
helpers.getSelectedCategory(req.params.category_id),
|
||||||
]);
|
]);
|
||||||
res.render('admin/manage/category-analytics', {
|
res.render('admin/manage/category-analytics', {
|
||||||
name: name,
|
name: name,
|
||||||
analytics: analyticsData,
|
analytics: analyticsData,
|
||||||
|
selectedCategory: selectedData.selectedCategory,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,14 @@
|
|||||||
|
|
||||||
<div class="px-lg-4">
|
<div class="px-lg-4">
|
||||||
<h5>[[admin/manage/categories:analytics.title, {name}]]</h5>
|
|
||||||
|
<div class="row border-bottom py-2 m-0 sticky-top acp-page-main-header align-items-center">
|
||||||
|
<div class="col-12 px-0 mb-1 mb-md-0 d-flex justify-content-between align-items-center">
|
||||||
|
<h4 class="fw-bold tracking-tight mb-0">[[admin/manage/categories:analytics.title, {name}]]</h4>
|
||||||
|
<!-- IMPORT admin/partials/category/selector-dropdown-right.tpl -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<div class="row ">
|
<div class="row ">
|
||||||
<div class="col-sm-6 text-center">
|
<div class="col-sm-6 text-center">
|
||||||
|
|||||||
Reference in New Issue
Block a user