summaryrefslogtreecommitdiff
path: root/src/hooks/useLineChart.ts
diff options
context:
space:
mode:
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]);
+}