diff options
| author | かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> | 2026-01-14 14:45:45 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-14 14:45:45 +0900 |
| commit | bd81a6c8adb45067bee9582f84855a60a962e92b (patch) | |
| tree | c15ed273fcff360700a280ab4a9ef72837a5f26c /packages/frontend/src/components/MkRetentionLineChart.vue | |
| parent | refactor(frontend): MkRadioをMkRadiosに統合 (diff) | |
| download | misskey-bd81a6c8adb45067bee9582f84855a60a962e92b.tar.gz misskey-bd81a6c8adb45067bee9582f84855a60a962e92b.tar.bz2 misskey-bd81a6c8adb45067bee9582f84855a60a962e92b.zip | |
refactor(frontend): anyを除去2 (#17092)
* wip
* fix types
* fix
Diffstat (limited to 'packages/frontend/src/components/MkRetentionLineChart.vue')
| -rw-r--r-- | packages/frontend/src/components/MkRetentionLineChart.vue | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/packages/frontend/src/components/MkRetentionLineChart.vue b/packages/frontend/src/components/MkRetentionLineChart.vue index 21c20f944b..5b18bab8c9 100644 --- a/packages/frontend/src/components/MkRetentionLineChart.vue +++ b/packages/frontend/src/components/MkRetentionLineChart.vue @@ -10,6 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts" setup> import { onMounted, useTemplateRef } from 'vue'; import { Chart } from 'chart.js'; +import type { ScatterDataPoint } from 'chart.js'; import tinycolor from 'tinycolor2'; import { store } from '@/store.js'; import { useChartTooltip } from '@/composables/use-chart-tooltip.js'; @@ -18,6 +19,12 @@ import { alpha } from '@/utility/color.js'; import { initChart } from '@/utility/init-chart.js'; import { misskeyApi } from '@/utility/misskey-api.js'; +interface RetentionPoint extends ScatterDataPoint { + x: number; + y: number; + d: string; +} + initChart(); const chartEl = useTemplateRef('chartEl'); @@ -62,14 +69,14 @@ onMounted(async () => { fill: false, tension: 0.4, data: [{ - x: '0', + x: 0, y: 100, d: getYYYYMMDD(new Date(record.createdAt)), }, ...Object.entries(record.data).sort((a, b) => getDate(a[0]) > getDate(b[0]) ? 1 : -1).map(([k, v], i) => ({ - x: (i + 1).toString(), + x: i + 1, y: (v / record.users) * 100, d: getYYYYMMDD(new Date(record.createdAt)), - }))] as any, + }))], })), }, options: { @@ -111,11 +118,11 @@ onMounted(async () => { enabled: false, callbacks: { title(context) { - const v = context[0].dataset.data[context[0].dataIndex] as unknown as { x: string, y: number, d: string }; + const v = context[0].dataset.data[context[0].dataIndex] as RetentionPoint; return `${v.x} days later`; }, label(context) { - const v = context.dataset.data[context.dataIndex] as unknown as { x: string, y: number, d: string }; + const v = context.dataset.data[context.dataIndex] as RetentionPoint; const p = Math.round(v.y) + '%'; return `${v.d} ${p}`; }, |