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/components/MemoryChart.tsx | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/components/MemoryChart.tsx (limited to 'src/components/MemoryChart.tsx') diff --git a/src/components/MemoryChart.tsx b/src/components/MemoryChart.tsx new file mode 100644 index 0000000..9f6febb --- /dev/null +++ b/src/components/MemoryChart.tsx @@ -0,0 +1,61 @@ +import * as React from 'react'; +import { useTranslation } from 'react-i18next'; + +import { State } from '~/store/types'; + +import { fetchData } from '../api/memory'; +import { useLineChartMemory } from '../hooks/useLineChart'; +import { + chartJSResource, + chartStyles, + commonDataSetProps, + memoryChartOptions, +} from '../misc/chart-memory'; +import { getClashAPIConfig, getSelectedChartStyleIndex } from '../store/app'; +import { connect } from './StateProvider'; + +const { useMemo } = React; + +const chartWrapperStyle = { + // make chartjs chart responsive + position: 'relative', + maxWidth: 1000, + marginTop: '1em', +}; + +const mapState = (s: State) => ({ + apiConfig: getClashAPIConfig(s), + selectedChartStyleIndex: getSelectedChartStyleIndex(s), +}); + +export default connect(mapState)(MemoryChart); + +function MemoryChart({ apiConfig, selectedChartStyleIndex }) { + const ChartMod = chartJSResource.read(); + const memory = fetchData(apiConfig); + const { t } = useTranslation(); + const data = useMemo( + () => ({ + labels: memory.labels, + datasets: [ + { + ...commonDataSetProps, + ...memoryChartOptions, + ...chartStyles[selectedChartStyleIndex].inuse, + label: t('Memory'), + data: memory.inuse, + }, + ], + }), + [memory, selectedChartStyleIndex, t] + ); + + useLineChartMemory(ChartMod.Chart, 'MemoryChart', data, memory); + + return ( + // @ts-expect-error ts-migrate(2322) FIXME: Type '{ position: string; maxWidth: number; }' is ... Remove this comment to see the full error message +
+ +
+ ); +} -- cgit v1.3.1