From 0248a2a98926d47bf10ada8446393cb6fe0e0238 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 25 Jun 2022 23:01:40 +0900 Subject: enhance(client): improve control panel --- .../src/pages/admin/overview.queue-chart.vue | 213 +++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 packages/client/src/pages/admin/overview.queue-chart.vue (limited to 'packages/client/src/pages/admin/overview.queue-chart.vue') diff --git a/packages/client/src/pages/admin/overview.queue-chart.vue b/packages/client/src/pages/admin/overview.queue-chart.vue new file mode 100644 index 0000000000..646d1ac2f3 --- /dev/null +++ b/packages/client/src/pages/admin/overview.queue-chart.vue @@ -0,0 +1,213 @@ + + + + + -- cgit v1.2.3-freya From f071ea490299778ae84f57fb2d82835665c647f8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 25 Jun 2022 23:16:02 +0900 Subject: fix(client): remove needless requestLog call --- packages/client/src/pages/admin/overview.queue-chart.vue | 4 ---- 1 file changed, 4 deletions(-) (limited to 'packages/client/src/pages/admin/overview.queue-chart.vue') diff --git a/packages/client/src/pages/admin/overview.queue-chart.vue b/packages/client/src/pages/admin/overview.queue-chart.vue index 646d1ac2f3..e3889e04bc 100644 --- a/packages/client/src/pages/admin/overview.queue-chart.vue +++ b/packages/client/src/pages/admin/overview.queue-chart.vue @@ -196,10 +196,6 @@ onMounted(() => { props.connection.on('stats', onStats); props.connection.on('statsLog', onStatsLog); - - props.connection.send('requestLog', { - id: Math.random().toString().substr(2, 8), - }); }); onUnmounted(() => { -- cgit v1.2.3-freya From 6a4574b612f0a729096878158e3c03d753c8200b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 26 Jun 2022 01:45:33 +0900 Subject: enhance(client): tweak control panel dashboard --- .../client/src/pages/admin/overview.federation.vue | 12 ++-- .../src/pages/admin/overview.queue-chart.vue | 2 +- packages/client/src/pages/admin/overview.user.vue | 76 ++++++++++++++++++++ packages/client/src/pages/admin/overview.vue | 81 ++++++++++++++++++++-- 4 files changed, 158 insertions(+), 13 deletions(-) create mode 100644 packages/client/src/pages/admin/overview.user.vue (limited to 'packages/client/src/pages/admin/overview.queue-chart.vue') diff --git a/packages/client/src/pages/admin/overview.federation.vue b/packages/client/src/pages/admin/overview.federation.vue index 6709c30c64..6da1fa4e98 100644 --- a/packages/client/src/pages/admin/overview.federation.vue +++ b/packages/client/src/pages/admin/overview.federation.vue @@ -2,14 +2,14 @@
-
+
- {{ instance.name ?? instance.host }} -

{{ instance.host }}

+
{{ instance.name ?? instance.host }}
+
{{ instance.host }}
-
+
@@ -78,7 +78,7 @@ onUnmounted(() => { color: var(--fg); padding-right: 8px; - > .a { + > .name { display: block; width: 100%; white-space: nowrap; @@ -86,7 +86,7 @@ onUnmounted(() => { text-overflow: ellipsis; } - > p { + > .host { margin: 0; font-size: 75%; opacity: 0.7; diff --git a/packages/client/src/pages/admin/overview.queue-chart.vue b/packages/client/src/pages/admin/overview.queue-chart.vue index e3889e04bc..9f23a14b5d 100644 --- a/packages/client/src/pages/admin/overview.queue-chart.vue +++ b/packages/client/src/pages/admin/overview.queue-chart.vue @@ -146,7 +146,7 @@ onMounted(() => { }], }, options: { - aspectRatio: 2.5, + aspectRatio: 3, layout: { padding: { left: 0, diff --git a/packages/client/src/pages/admin/overview.user.vue b/packages/client/src/pages/admin/overview.user.vue new file mode 100644 index 0000000000..40592b280b --- /dev/null +++ b/packages/client/src/pages/admin/overview.user.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/packages/client/src/pages/admin/overview.vue b/packages/client/src/pages/admin/overview.vue index 22d9d72a70..8e57c7aafb 100644 --- a/packages/client/src/pages/admin/overview.vue +++ b/packages/client/src/pages/admin/overview.vue @@ -34,6 +34,13 @@ +
+
New users
+
+ +
+
+
@@ -75,6 +82,30 @@
+
+
Federation
+
+
+
Sub
+
+ {{ number(federationSubActive) }} + +
+
+
+
Pub
+
+ {{ number(federationPubActive) }} + +
+
+
+
+
+
Recent files
+
+
+
@@ -105,6 +136,7 @@ import MagicGrid from 'magic-grid'; import XMetrics from './metrics.vue'; import XFederation from './overview.federation.vue'; import XQueueChart from './overview.queue-chart.vue'; +import XUser from './overview.user.vue'; import MkInstanceStats from '@/components/instance-stats.vue'; import MkNumberDiff from '@/components/number-diff.vue'; import { version, url } from '@/config'; @@ -141,6 +173,11 @@ let stats: any = $ref(null); let serverInfo: any = $ref(null); let usersComparedToThePrevDay: any = $ref(null); let notesComparedToThePrevDay: any = $ref(null); +let federationPubActive = $ref(null); +let federationPubActiveDiff = $ref(null); +let federationSubActive = $ref(null); +let federationSubActiveDiff = $ref(null); +let newUsers = $ref(null); const queueStatsConnection = markRaw(stream.useChannel('queueStats')); const now = new Date(); let chartInstance: Chart = null; @@ -325,10 +362,24 @@ onMounted(async () => { }); }); + os.apiGet('charts/federation', { limit: 2, span: 'day' }).then(chart => { + federationPubActive = chart.pubActive[0]; + federationPubActiveDiff = chart.pubActive[0] - chart.pubActive[1]; + federationSubActive = chart.subActive[0]; + federationSubActiveDiff = chart.subActive[0] - chart.subActive[1]; + }); + os.api('admin/server-info').then(serverInfoResponse => { serverInfo = serverInfoResponse; }); + os.api('admin/show-users', { + limit: 5, + sort: '+createdAt', + }).then(res => { + newUsers = res; + }); + nextTick(() => { queueStatsConnection.send('requestLog', { id: Math.random().toString().substr(2, 8), @@ -364,12 +415,12 @@ definePageMetadata({ margin: 32px 0; > .title { - font-size: 1.2em; + font-size: 1.1em; font-weight: bold; margin-bottom: 16px; } - &.stats { + &.stats, &.federationStats { > .body { display: grid; grid-gap: 16px; @@ -388,7 +439,7 @@ definePageMetadata({ font-size: 1.5em; > .diff { - font-size: 0.8em; + font-size: 0.7em; } } } @@ -410,7 +461,7 @@ definePageMetadata({ } > .value { - font-size: 1.2em; + font-size: 1.1em; } } } @@ -424,6 +475,21 @@ definePageMetadata({ } } + &.users { + > .body { + background: var(--panel); + border-radius: var(--radius); + + > .user { + padding: 16px 20px; + + &:not(:last-child) { + border-bottom: solid 0.5px var(--divider); + } + } + } + } + &.federation { > .body { background: var(--panel); @@ -434,7 +500,8 @@ definePageMetadata({ &.queue { > .body { - padding: 32px; + position: relative; + padding: 24px; background: var(--panel); border-radius: var(--radius); @@ -443,7 +510,9 @@ definePageMetadata({ } > .title { - + position: absolute; + top: 24px; + left: 24px; } } } -- cgit v1.2.3-freya From 0cae0a49e267e09d3a74eb96b6af1dc53effbd74 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 26 Jun 2022 13:28:47 +0900 Subject: chore(client): tweak ui --- .../client/src/components/file-list-for-admin.vue | 2 +- .../src/pages/admin/overview.queue-chart.vue | 8 +-- packages/client/src/pages/admin/overview.vue | 61 +++++++++++++--------- 3 files changed, 43 insertions(+), 28 deletions(-) (limited to 'packages/client/src/pages/admin/overview.queue-chart.vue') diff --git a/packages/client/src/components/file-list-for-admin.vue b/packages/client/src/components/file-list-for-admin.vue index 59256f90c9..489c017a93 100644 --- a/packages/client/src/components/file-list-for-admin.vue +++ b/packages/client/src/components/file-list-for-admin.vue @@ -87,7 +87,7 @@ const props = defineProps<{ &.grid { display: grid; - grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); grid-gap: 12px; margin: var(--margin) 0; diff --git a/packages/client/src/pages/admin/overview.queue-chart.vue b/packages/client/src/pages/admin/overview.queue-chart.vue index 9f23a14b5d..e9ad186141 100644 --- a/packages/client/src/pages/admin/overview.queue-chart.vue +++ b/packages/client/src/pages/admin/overview.queue-chart.vue @@ -73,7 +73,7 @@ const onStats = (stats) => { chartInstance.data.datasets[1].data.push(stats[props.domain].active); chartInstance.data.datasets[2].data.push(stats[props.domain].waiting); chartInstance.data.datasets[3].data.push(stats[props.domain].delayed); - if (chartInstance.data.datasets[0].data.length > 200) { + if (chartInstance.data.datasets[0].data.length > 100) { chartInstance.data.labels.shift(); chartInstance.data.datasets[0].data.shift(); chartInstance.data.datasets[1].data.shift(); @@ -90,7 +90,7 @@ const onStatsLog = (statsLog) => { chartInstance.data.datasets[1].data.push(stats[props.domain].active); chartInstance.data.datasets[2].data.push(stats[props.domain].waiting); chartInstance.data.datasets[3].data.push(stats[props.domain].delayed); - if (chartInstance.data.datasets[0].data.length > 200) { + if (chartInstance.data.datasets[0].data.length > 100) { chartInstance.data.labels.shift(); chartInstance.data.datasets[0].data.shift(); chartInstance.data.datasets[1].data.shift(); @@ -146,7 +146,7 @@ onMounted(() => { }], }, options: { - aspectRatio: 3, + aspectRatio: 2.5, layout: { padding: { left: 0, @@ -157,6 +157,7 @@ onMounted(() => { }, scales: { x: { + display: false, grid: { display: false, }, @@ -166,6 +167,7 @@ onMounted(() => { }, }, y: { + display: false, min: 0, grid: { display: false, diff --git a/packages/client/src/pages/admin/overview.vue b/packages/client/src/pages/admin/overview.vue index 8e57c7aafb..382169f723 100644 --- a/packages/client/src/pages/admin/overview.vue +++ b/packages/client/src/pages/admin/overview.vue @@ -24,13 +24,15 @@
Job queue
-
-
Deliver
- -
-
-
Inbox
- +
+
+
Deliver
+ +
+
+
Inbox
+ +
@@ -104,6 +106,7 @@
Recent files
+
@@ -148,6 +151,7 @@ import { definePageMetadata } from '@/scripts/page-metadata'; import 'chartjs-adapter-date-fns'; import { defaultStore } from '@/store'; import { useChartTooltip } from '@/scripts/use-chart-tooltip'; +import MkFileListForAdmin from '@/components/file-list-for-admin.vue'; Chart.register( ArcElement, @@ -182,6 +186,11 @@ const queueStatsConnection = markRaw(stream.useChannel('queueStats')); const now = new Date(); let chartInstance: Chart = null; const chartLimit = 30; +const filesPagination = { + endpoint: 'admin/drive/files' as const, + limit: 9, + noPaging: true, +}; const { handler: externalTooltipHandler } = useChartTooltip(); @@ -256,6 +265,7 @@ async function renderChart() { scales: { x: { type: 'time', + display: false, stacked: true, offset: false, time: { @@ -276,6 +286,7 @@ async function renderChart() { min: getDate(chartLimit).getTime(), }, y: { + display: false, position: 'left', stacked: true, grid: { @@ -383,7 +394,7 @@ onMounted(async () => { nextTick(() => { queueStatsConnection.send('requestLog', { id: Math.random().toString().substr(2, 8), - length: 200, + length: 100, }); }); }); @@ -415,7 +426,6 @@ definePageMetadata({ margin: 32px 0; > .title { - font-size: 1.1em; font-weight: bold; margin-bottom: 16px; } @@ -424,7 +434,7 @@ definePageMetadata({ > .body { display: grid; grid-gap: 16px; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); > .number { padding: 14px 20px; @@ -450,7 +460,7 @@ definePageMetadata({ > .body { display: grid; grid-gap: 16px; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); > .number { padding: 14px 20px; @@ -500,19 +510,22 @@ definePageMetadata({ &.queue { > .body { - position: relative; - padding: 24px; - background: var(--panel); - border-radius: var(--radius); - - &:not(:last-child) { - margin-bottom: 16px; - } - - > .title { - position: absolute; - top: 24px; - left: 24px; + display: grid; + grid-gap: 16px; + grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); + + > .chart { + position: relative; + padding: 20px; + background: var(--panel); + border-radius: var(--radius); + + > .title { + position: absolute; + top: 20px; + left: 20px; + font-size: 90%; + } } } } -- cgit v1.2.3-freya From 0657995b42c71ecaba30be69274cefa7552bed9e Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 28 Jun 2022 10:42:54 +0900 Subject: chore(client): tweak style --- packages/client/src/pages/admin/overview.queue-chart.vue | 2 +- packages/client/src/pages/admin/queue.chart.chart.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'packages/client/src/pages/admin/overview.queue-chart.vue') diff --git a/packages/client/src/pages/admin/overview.queue-chart.vue b/packages/client/src/pages/admin/overview.queue-chart.vue index e9ad186141..a2b748ad38 100644 --- a/packages/client/src/pages/admin/overview.queue-chart.vue +++ b/packages/client/src/pages/admin/overview.queue-chart.vue @@ -150,7 +150,7 @@ onMounted(() => { layout: { padding: { left: 0, - right: 8, + right: 0, top: 0, bottom: 0, }, diff --git a/packages/client/src/pages/admin/queue.chart.chart.vue b/packages/client/src/pages/admin/queue.chart.chart.vue index dbfaf6caa4..96156f8e67 100644 --- a/packages/client/src/pages/admin/queue.chart.chart.vue +++ b/packages/client/src/pages/admin/queue.chart.chart.vue @@ -125,7 +125,7 @@ onMounted(() => { layout: { padding: { left: 0, - right: 8, + right: 0, top: 0, bottom: 0, }, -- cgit v1.2.3-freya