import { Container, KeenIcon, DefaultTooltip } from '@/components'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { DateRange } from 'react-day-picker'; import { useState, useEffect, useCallback } from 'react'; import { Card, Chart, YearPicker } from './blocks'; import moment from 'moment'; import { useFetchCardData, useFetchChartData } from './hooks'; import { Button } from '@/components/ui/button'; import { useFetchYear } from './hooks/useFetchYear'; import { get5LastYear } from '@/utils/Date'; import { staticChartData } from './staticChart'; // sum -> nominal, count-> total type CountType = 'sum' | 'count'; type ChartType = 'line' | 'bar'; type ChartLegend = 'true' | 'false'; const DashboardHomePage = () => { const selectYear = get5LastYear(); const [initialYear, setInitialYear] = useState(''); const [selectedYear, setSelectedYear] = useState(''); const [count, setCount] = useState('sum'); const [chartType, setChartType] = useState('line'); const [chartLegend, setChartLegend] = useState('true'); const [dateRange, setDateRange] = useState<{ from: Date; to: Date }>({ from: new Date(), to: new Date() }); // Menyusun tanggal awal dan akhir berdasarkan selectedYear useEffect(() => { if (selectYear.length > 0 && !selectedYear) { let latestYear = Math.max(...selectYear.map((item) => parseInt(item, 10))).toString(); console.log('latestYear :', latestYear); setSelectedYear(latestYear); setInitialYear(latestYear); } }, [selectYear, selectedYear]); useEffect(() => { if (selectedYear) { setDateRange({ from: moment(`${selectedYear}-01-01`, 'YYYY-MM-DD').toDate(), to: moment(`${selectedYear}-12-31`, 'YYYY-MM-DD').toDate() }); } }, [selectedYear]); useEffect(() => { if (initialYear) { setDateRange({ from: moment(`${initialYear}-01-01`, 'YYYY-MM-DD').toDate(), to: moment(`${initialYear}-12-31`, 'YYYY-MM-DD').toDate() }); } }, [initialYear]); const handleYearChange = (year: string) => { setSelectedYear(year); }; const handleCountType = (value: CountType) => { setCount(value); }; const handleChartType = (value: ChartType) => { setChartType(value); }; const handleChartLegend = (value: ChartLegend) => { setChartLegend(value); }; // const handleFilter = useCallback( // (date: DateRange | undefined) => { // setDateRange({ // from: date?.from ?? moment(`${selectedYear}-01-01`, 'YYYY-MM-DD').toDate(), // to: date?.to ?? moment(`${selectedYear}-12-31`, 'YYYY-MM-DD').toDate() // }); // }, // [selectedYear] // ); const resetFilter = useCallback(() => { setDateRange({ from: moment(`${initialYear}-01-01`, 'YYYY-MM-DD').toDate(), to: moment(`${initialYear}-12-31`, 'YYYY-MM-DD').toDate() }); setSelectedYear(initialYear); setCount('sum'); setChartType('line'); setChartLegend('true'); }, [initialYear]); const { cardData } = useFetchCardData( moment(dateRange.from).format('YYYY-MM-DD'), moment(dateRange.to).format('YYYY-MM-DD'), count ); const { chartData } = useFetchChartData( moment(dateRange.from).format('YYYY-MM-DD'), moment(dateRange.to).format('YYYY-MM-DD'), count ); const toolbar = (
); return (
{/* */}
{/* Cards */}
{cardData.map((data: any) => (
))}
{/* Chart */}
data.data)} chartType={chartType} chartLegend={chartLegend} />
); }; export default DashboardHomePage;