2023-07-27 14:31:52 +09:00
|
|
|
/*
|
2024-02-14 00:59:27 +09:00
|
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
2023-07-27 14:31:52 +09:00
|
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
*/
|
|
|
|
|
2023-01-03 14:08:52 +09:00
|
|
|
import { Plugin } from 'chart.js';
|
|
|
|
|
2022-12-23 15:21:55 +09:00
|
|
|
export const chartVLine = (vLineColor: string) => ({
|
|
|
|
id: 'vLine',
|
|
|
|
beforeDraw(chart, args, options) {
|
|
|
|
if (chart.tooltip?._active?.length) {
|
|
|
|
const ctx = chart.ctx;
|
2023-01-02 12:01:06 +09:00
|
|
|
const xs = chart.tooltip._active.map(a => a.element.x);
|
|
|
|
const x = xs.reduce((a, b) => a + b, 0) / xs.length;
|
2022-12-23 15:21:55 +09:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
},
|
2023-01-03 14:08:52 +09:00
|
|
|
}) as Plugin;
|