aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/DataChart/DataChart.tsx
blob: 3b8304a6d14ce63326d97728beb06326043e474a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import {
	CategoryScale,
	Chart as ChartJS,
	Legend,
	LineElement,
	LinearScale,
	PointElement,
	Title,
	Tooltip,
} from "chart.js";
import type React from "react";
import { Line } from "react-chartjs-2";

ChartJS.register(
	CategoryScale,
	LinearScale,
	PointElement,
	LineElement,
	Title,
	Tooltip,
	Legend,
);

interface DataChartProps {
	chartData?: any;
	graphTitle?: string;
	fullData?: boolean;
	overrideBorderColor?: string;
	overrideBGColor?: string;
}

const DataChart: React.FC<DataChartProps> = ({
	chartData,
	graphTitle,
	fullData,
	overrideBGColor,
	overrideBorderColor,
}) => {
	const options = {
		responsive: true,
		plugins: {
			legend: {
				position: "top" as const,
			},
			title: {
				display: true,
				text: graphTitle || "Historical Subscriber Data",
				font: {
					size: 18,
				},
			},
		},
		scales: {
			x: {
				ticks: {
					autoSkip: true,
					maxTicksLimit: 10,
				},
			},
		},
	};

	const data = {
		labels: chartData.labels,
		datasets: [
			{
				label: "Subscriber Count",
				data: chartData.datasets,
				borderColor: overrideBorderColor || "rgb(255, 99, 132)",
				backgroundColor: overrideBGColor || "rgba(255, 99, 132, 0.5)",
			},
		],
	};

	if (!fullData) {
		return <Line options={options} data={data} />;
	} else {
		return <Line options={options} data={chartData} />;
	}
};

export default DataChart;
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage