import { LineChart, XAxis, YAxis, Line, Tooltip, Legend } from "recharts"; import { timeFormat } from "d3-time-format"; import useWindowSize from '../../utils/hook-windowresize'; import styles from '../../styles/styles.module.css'; interface ToolTipProps { active?: boolean, payload?: object, unit?: string } const defaultProps = { active: false, payload: Object, unit: '', }; interface TimedValue { time: Date; value: number; } interface ChartProps { data?: TimedValue[], color: string, unit: string, dataCollections?: any[], } function CustomizedTooltip(props: ToolTipProps) { const { active, payload, unit } = props; if (active && payload && payload[0]) { const time = payload[0].payload ? timeFormat("%I:%M")(new Date(payload[0].payload.time)) : ""; return (

{time} {payload[0].payload.value} {unit}

); } return null; } CustomizedTooltip.defaultProps = defaultProps; export default function Chart({ data, color, unit, dataCollections }: ChartProps) { if (!data && !dataCollections) { return null; } const windowSize = useWindowSize(); const chartWidth = windowSize.width * .68; const chartHeight = chartWidth * .333; const timeFormatter = (tick: string) => { return timeFormat("%I:%M")(new Date(tick)); }; let ticks = []; if (dataCollections.length > 0) { ticks = dataCollections[0].data?.map((collection) => { return collection?.time; }) } else if (data?.length > 0){ ticks = data?.map(item => { return item?.time; }); } return (
} /> {dataCollections?.map((s) => ( ))}
); } Chart.defaultProps = { dataCollections: [], };