Files
tm-landing/app/_components/ApexChart.tsx
T
AmirReza Jamali a41fc01921 refactor(ApexChart): Simplify x-axis configuration by removing datetime formatting
- Remove unnecessary datetime type configuration from xaxis
- Remove custom date formatter function that was overcomplicating label display
- Keep categories mapping for x-axis labels
- Simplifies chart configuration while maintaining functionality
2025-11-30 12:20:55 +03:30

85 lines
1.8 KiB
TypeScript

"use client";
import { CmsData } from "@/types/TCms";
import { ApexOptions } from "apexcharts";
import dynamic from "next/dynamic";
import { useEffect, useState } from "react";
const ReactApexChart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
interface ChartState {
series: {
name: string;
data: number[];
}[];
options: ApexOptions;
}
const ApexChart = ({ cmsData }: { cmsData?: CmsData }) => {
const [state, setState] = useState<ChartState | null>(null);
useEffect(() => {
const initialState: ChartState = {
series: [
{
name: "Sales",
data: cmsData?.chart.data.map((item) => item.value) || [10, 10, 10],
},
],
options: {
chart: {
toolbar: { show: false },
height: 350,
type: "line",
},
forecastDataPoints: {
count: 0,
},
stroke: {
width: 6,
curve: "smooth",
},
fill: {
type: "gradient",
gradient: {
shade: "dark",
type: "horizontal",
shadeIntensity: 0.5,
gradientToColors: ["#99DDE5"],
inverseColors: false,
opacityFrom: 1,
opacityTo: 1,
stops: [0, 100],
},
},
colors: ["#0164FF"],
xaxis: {
categories: cmsData?.chart.data.map((item) => item.key),
},
},
};
setState(initialState);
}, []);
if (!state) {
return <div>Loading...</div>;
}
return (
<div>
<div id="chart">
<ReactApexChart
options={state.options}
series={state.series}
type="line"
height={350}
/>
</div>
<div id="html-dist"></div>
</div>
);
};
export default ApexChart;