import React, { useMemo } from 'react'; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, } from 'recharts'; import type { Karung } from '../../types/api.ts'; interface FeedTrendChartProps { rows: Karung[]; cycleStartDate: string; currentDay: number; } const FeedTrendChart: React.FC = ({ rows, cycleStartDate, currentDay }) => { const chartData = useMemo(() => { const cycleStart = new Date(`${cycleStartDate}T00:00:00`); const dailyData: { label: string; masuk: number; dituang: number }[] = []; for (let d = 0; d <= currentDay; d++) { const date = new Date(cycleStart); date.setDate(cycleStart.getDate() + d); dailyData.push({ label: date.toLocaleDateString('id-ID', { day: '2-digit', month: 'short' }), masuk: 0, dituang: 0, }); } const byKey = new Map(); for (const row of rows) { const bucket = byKey.get(row.date) ?? { masuk: 0, dituang: 0 }; bucket.masuk += row.in_today; bucket.dituang += row.out_today; byKey.set(row.date, bucket); } for (let d = 0; d <= currentDay; d++) { const date = new Date(cycleStart); date.setDate(cycleStart.getDate() + d); const key = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String( date.getDate() ).padStart(2, '0')}`; const bucket = byKey.get(key); const entry = dailyData[d]; if (bucket && entry) { entry.masuk = bucket.masuk; entry.dituang = bucket.dituang; } } return dailyData; }, [rows, cycleStartDate, currentDay]); return (

Tren Harian Karung IOT

[ `${Number(value ?? 0)} karung`, name === 'masuk' ? 'Karung Masuk' : 'Karung Dituang', ]} labelFormatter={(label) => `Tanggal: ${label}`} /> (value === 'masuk' ? 'Karung Masuk' : 'Karung Dituang')} />
); }; export default FeedTrendChart;