summaryrefslogtreecommitdiff
path: root/packages/frontend/src/utility/chart-vline.ts
blob: 1097c66d0edbaabbc2472515e14104ffff1a790f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
 * SPDX-FileCopyrightText: syuilo and misskey-project
 * SPDX-License-Identifier: AGPL-3.0-only
 */

import type { Plugin } from 'chart.js';

export const chartVLine = (vLineColor: string) => ({
	id: 'vLine',
	beforeDraw(chart, args, options) {
		const tooltip = chart.tooltip as any;
		if (tooltip?._active?.length) {
			const ctx = chart.ctx;
			const xs = tooltip._active.map((a: any) => a.element.x) as number[];
			const x = xs.reduce((a, b) => a + b, 0) / xs.length;
			const topY = chart.scales.y.top;
			const bottomY = chart.scales.y.bottom;

			ctx.save();
			ctx.beginPath();
			ctx.moveTo(x, bottomY);
			ctx.lineTo(x, topY);
			ctx.lineWidth = 1;
			ctx.strokeStyle = vLineColor;
			ctx.stroke();
			ctx.restore();
		}
	},
}) as Plugin;