diff --git a/public/openapi/read/admin/federation/analytics.yaml b/public/openapi/read/admin/federation/analytics.yaml index 227b75bf42..5782f2d686 100644 --- a/public/openapi/read/admin/federation/analytics.yaml +++ b/public/openapi/read/admin/federation/analytics.yaml @@ -32,18 +32,25 @@ get: type: array items: type: string - received: - type: array - items: - type: number - receivedErr: - type: array - items: - type: number - sent: - type: array - items: - type: number + data: + type: object + properties: + received: + type: array + items: + type: number + receivedErr: + type: array + items: + type: number + sent: + type: array + items: + type: number + sentErr: + type: array + items: + type: number hideSave: type: number description: A flag to instruct the template engine to hide the save button diff --git a/public/src/admin/federation/analytics.js b/public/src/admin/federation/analytics.js index 4d884562f4..4fb6c75cf8 100644 --- a/public/src/admin/federation/analytics.js +++ b/public/src/admin/federation/analytics.js @@ -55,7 +55,8 @@ async function updateCharts() { ['received', 'sent'].forEach((name) => { const chart = charts.get(name); chart.data.labels = labels.get(termEl.value || 'hourly'); - chart.data.datasets[0].data = data[name]; + chart.data.datasets[0].data = data.data[name]; + chart.data.datasets[1].data = data.data[`${name}Err`]; chart.update(); }); } @@ -87,7 +88,7 @@ async function initializeCharts() { borderColor: 'rgba(161,181,108,1)', pointBackgroundColor: 'rgba(161,181,108,1)', pointHoverBorderColor: 'rgba(161,181,108,1)', - data: ajaxify.data.received, + data: ajaxify.data.data.received, }, { ...commonDataSetOpts, @@ -96,7 +97,7 @@ async function initializeCharts() { borderColor: 'rgba(171,70,66,1)', pointBackgroundColor: 'rgba(171,70,66,1)', pointHoverBorderColor: 'rgba(171,70,66,1)', - data: ajaxify.data.receivedErr, + data: ajaxify.data.data.receivedErr, }, ], }, @@ -106,11 +107,20 @@ async function initializeCharts() { { ...commonDataSetOpts, label: await translate('[[admin/settings/activitypub:analytics.sent]]'), - backgroundColor: 'rgba(151,187,205,0.2)', - borderColor: 'rgba(151,187,205,1)', - pointBackgroundColor: 'rgba(151,187,205,1)', - pointHoverBorderColor: 'rgba(151,187,205,1)', - data: ajaxify.data.sent, + backgroundColor: 'rgba(161,181,108,0.2)', + borderColor: 'rgba(161,181,108,1)', + pointBackgroundColor: 'rgba(161,181,108,1)', + pointHoverBorderColor: 'rgba(161,181,108,1)', + data: ajaxify.data.data.sent, + }, + { + ...commonDataSetOpts, + label: await translate('[[admin/settings/activitypub:analytics.errors]]'), + backgroundColor: 'rgba(171,70,66,0.2)', + borderColor: 'rgba(171,70,66,1)', + pointBackgroundColor: 'rgba(171,70,66,1)', + pointHoverBorderColor: 'rgba(171,70,66,1)', + data: ajaxify.data.data.sentErr, }, ], }, diff --git a/src/controllers/admin/federation.js b/src/controllers/admin/federation.js index 35bc678198..4445a55ab2 100644 --- a/src/controllers/admin/federation.js +++ b/src/controllers/admin/federation.js @@ -74,16 +74,21 @@ federationController.analytics = async function (req, res) { const receivedSet = host ? `activities:byHost:${host}` : 'activities'; const receivedErrSet = host ? `ap.inErr:byHost:${host}` : 'ap.inErr'; const sentSet = host ? `ap.out:byHost:${host}` : 'ap.out'; + const sentErrSet = host ? `ap.outErr:byHost:${host}` : 'ap.outErr'; const received = await analytics[method](receivedSet, Date.now(), count); const receivedErr = await analytics[method](receivedErrSet, Date.now(), count); const sent = await analytics[method](sentSet, Date.now(), count); + const sentErr = await analytics[method](sentErrSet, Date.now(), count); res.render('admin/federation/analytics', { title: '[[admin/menu:federation/analytics]]', instances, - received, - receivedErr, - sent, + data: { + received, + receivedErr, + sent, + sentErr, + }, hideSave: 1, }); };