summaryrefslogtreecommitdiff
path: root/src/hooks/useLineChart.ts
diff options
context:
space:
mode:
authorrookisbusy <[email protected]>2023-04-07 20:43:19 +0800
committerrookisbusy <[email protected]>2023-04-07 20:43:19 +0800
commit2a3579e447459aaeb7998cf968f73c6ef7ff7a0b (patch)
tree5422a8cc8732066ae3d6ef2563b939d03087c20c /src/hooks/useLineChart.ts
parente6852509670fa91fda6a2ef2375608a7b9a4b175 (diff)
feat: add memory chat
Diffstat (limited to 'src/hooks/useLineChart.ts')
-rw-r--r--src/hooks/useLineChart.ts20
1 files changed, 20 insertions, 0 deletions
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]);
+}