From 2a3579e447459aaeb7998cf968f73c6ef7ff7a0b Mon Sep 17 00:00:00 2001 From: rookisbusy Date: Fri, 7 Apr 2023 20:43:19 +0800 Subject: feat: add memory chat --- src/hooks/useLineChart.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/hooks/useLineChart.ts') diff --git a/src/hooks/useLineChart.ts b/src/hooks/useLineChart.ts index 88ee660..62b306b 100644 --- a/src/hooks/useLineChart.ts +++ b/src/hooks/useLineChart.ts @@ -2,6 +2,7 @@ import type { ChartConfiguration } from 'chart.js'; import React from 'react'; import { commonChartOptions } from '~/misc/chart'; +import { memoryChartOptions } from '~/misc/chart-memory'; const { useEffect } = React; @@ -23,3 +24,22 @@ export default function useLineChart( }; }, [chart, elementId, data, subscription, extraChartOptions]); } + +export function useLineChartMemory( + chart: typeof import('chart.js').Chart, + elementId: string, + data: ChartConfiguration['data'], + subscription: any, + extraChartOptions = {} +) { + useEffect(() => { + const ctx = (document.getElementById(elementId) as HTMLCanvasElement).getContext('2d'); + const options = { ...memoryChartOptions, ...extraChartOptions }; + const c = new chart(ctx, { type: 'line', data, options }); + const unsubscribe = subscription && subscription.subscribe(() => c.update()); + return () => { + unsubscribe && unsubscribe(); + c.destroy(); + }; + }, [chart, elementId, data, subscription, extraChartOptions]); +} -- cgit v1.3.1