diff --git a/app/(admin)/adminDashboard/page.tsx b/app/(admin)/adminDashboard/page.tsx index fad03ac..2cd5ad4 100644 --- a/app/(admin)/adminDashboard/page.tsx +++ b/app/(admin)/adminDashboard/page.tsx @@ -69,7 +69,7 @@ const AdminDashboard = () => { // Append Malaysia's +08:00 time zone manually const start = `${yyyyMMdd}T00:00:00+08:00`; const end = `${yyyyMMdd}T23:59:59+08:00`; - + try { const raw = await fetchPowerTimeseries(siteId, start, end); @@ -162,6 +162,7 @@ const AdminDashboard = () => { doc.save('dashboard_charts.pdf'); }; + const currentMonth = new Date().toISOString().slice(0, 7); // "YYYY-MM" return ( @@ -184,7 +185,7 @@ const AdminDashboard = () => {
- +
diff --git a/components/dashboards/EnergyLineChart.tsx b/components/dashboards/EnergyLineChart.tsx index 851a64a..613da56 100644 --- a/components/dashboards/EnergyLineChart.tsx +++ b/components/dashboards/EnergyLineChart.tsx @@ -127,9 +127,10 @@ const EnergyLineChart = ({ siteId }: EnergyLineChartProps) => { const groupedGeneration = groupTimeSeries(generation, viewMode); const allTimes = Array.from(new Set([ - ...groupedConsumption.map(d => d.time), - ...groupedGeneration.map(d => d.time), - ])).sort(); + ...groupedConsumption.map(d => d.time), + ...groupedGeneration.map(d => d.time), +])).sort((a, b) => new Date(a).getTime() - new Date(b).getTime()); + const consumptionMap = Object.fromEntries(groupedConsumption.map(d => [d.time, d.value])); const generationMap = Object.fromEntries(groupedGeneration.map(d => [d.time, d.value])); diff --git a/components/dashboards/KPIStatus.tsx b/components/dashboards/KPIStatus.tsx index dd9dea2..8791e1a 100644 --- a/components/dashboards/KPIStatus.tsx +++ b/components/dashboards/KPIStatus.tsx @@ -12,8 +12,12 @@ interface MonthlyKPI { consumption_kwh: number | null; grid_draw_kwh: number | null; efficiency: number | null; + peak_demand_kw: number | null; // ✅ new + avg_power_factor: number | null; // ✅ new + load_factor: number | null; } + const KPI_Table: React.FC = ({ siteId, month }) => { const [kpiData, setKpiData] = useState(null); const [loading, setLoading] = useState(false); @@ -63,13 +67,20 @@ const KPI_Table: React.FC = ({ siteId, month }) => { const consumption_kwh = kpiData?.consumption_kwh ?? 0; const grid_draw_kwh = kpiData?.grid_draw_kwh ?? 0; const efficiency = kpiData?.efficiency ?? 0; + const peak_demand_kw = kpiData?.peak_demand_kw ?? 0; + const power_factor = kpiData?.avg_power_factor ?? 0; + const load_factor = kpiData?.load_factor ?? 0; + +const data = [ + { kpi: 'Monthly Yield', value: `${yield_kwh.toFixed(0)} kWh` }, + { kpi: 'Monthly Consumption', value: `${consumption_kwh.toFixed(0)} kWh` }, + { kpi: 'Monthly Grid Draw', value: `${grid_draw_kwh.toFixed(0)} kWh` }, + { kpi: 'Efficiency', value: `${efficiency.toFixed(1)}%` }, + { kpi: 'Peak Demand', value: `${peak_demand_kw.toFixed(2)} kW` }, // ✅ added + { kpi: 'Power Factor', value: `${power_factor.toFixed(2)} kW` }, // ✅ added + { kpi: 'Load Factor', value: `${load_factor.toFixed(2)} kW` }, // ✅ added +]; - const data = [ - { kpi: 'Monthly Yield', value: `${yield_kwh.toFixed(0)} kWh` }, - { kpi: 'Monthly Consumption', value: `${consumption_kwh.toFixed(0)} kWh` }, - { kpi: 'Monthly Grid Draw', value: `${grid_draw_kwh.toFixed(0)} kWh` }, - { kpi: 'Efficiency', value: `${efficiency.toFixed(1)}%` }, - ]; return (
@@ -84,8 +95,8 @@ const KPI_Table: React.FC = ({ siteId, month }) => { {data.map((row) => ( - {row.kpi} - {row.value} + {row.kpi} + {row.value} ))} diff --git a/components/dashboards/MonthlyBarChart.tsx b/components/dashboards/MonthlyBarChart.tsx index 542312c..4b41dcd 100644 --- a/components/dashboards/MonthlyBarChart.tsx +++ b/components/dashboards/MonthlyBarChart.tsx @@ -124,7 +124,10 @@ const MonthlyBarChart: React.FC = ({ siteId }) => { - + [`${value.toFixed(2)} kWh`]} + labelFormatter={(label) => `${label}`} + />