From 953cb0783ed3047c8d3ca47471052198de1b5f1d Mon Sep 17 00:00:00 2001 From: "kelvin.yau" Date: Sun, 15 Mar 2026 11:15:01 +0800 Subject: [PATCH] no message --- src/app/api/chart/client.ts | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/app/api/chart/client.ts b/src/app/api/chart/client.ts index aa85668..89bb878 100644 --- a/src/app/api/chart/client.ts +++ b/src/app/api/chart/client.ts @@ -68,7 +68,7 @@ export async function fetchStaffDeliveryPerformanceHandlers(): Promise) => ({ + return (data as Record[]).map((r: Record) => ({ staffNo: String(r.staffNo ?? ""), name: String(r.name ?? ""), })); @@ -112,7 +112,7 @@ export async function fetchJobOrderByStatus( ); if (!res.ok) throw new Error("Failed to fetch job order by status"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ status: String(r.status ?? ""), count: Number(r.count ?? 0), })); @@ -139,7 +139,7 @@ export async function fetchJobOrderCreatedCompletedByDate( ); if (!res.ok) throw new Error("Failed to fetch job order created/completed"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ date: String(r.date ?? ""), createdCount: Number(r.createdCount ?? 0), completedCount: Number(r.completedCount ?? 0), @@ -160,7 +160,7 @@ export async function fetchJobMaterialPendingPickedByDate( const res = await clientAuthFetch(`${BASE}/job-material-pending-picked-by-date?${q}`); if (!res.ok) throw new Error("Failed to fetch job material pending/picked"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ date: String(r.date ?? ""), pendingCount: Number(r.pendingCount ?? 0), pickedCount: Number(r.pickedCount ?? 0), @@ -181,7 +181,7 @@ export async function fetchJobProcessPendingCompletedByDate( const res = await clientAuthFetch(`${BASE}/job-process-pending-completed-by-date?${q}`); if (!res.ok) throw new Error("Failed to fetch job process pending/completed"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ date: String(r.date ?? ""), pendingCount: Number(r.pendingCount ?? 0), completedCount: Number(r.completedCount ?? 0), @@ -202,7 +202,7 @@ export async function fetchJobEquipmentWorkingWorkedByDate( const res = await clientAuthFetch(`${BASE}/job-equipment-working-worked-by-date?${q}`); if (!res.ok) throw new Error("Failed to fetch job equipment working/worked"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ date: String(r.date ?? ""), workingCount: Number(r.workingCount ?? 0), workedCount: Number(r.workedCount ?? 0), @@ -219,7 +219,7 @@ export async function fetchProductionScheduleByDate( ); if (!res.ok) throw new Error("Failed to fetch production schedule by date"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ date: String(r.date ?? ""), scheduledItemCount: Number(r.scheduledItemCount ?? r.scheduleCount ?? 0), totalEstProdCount: Number(r.totalEstProdCount ?? 0), @@ -234,7 +234,7 @@ export async function fetchPlannedDailyOutputByItem( ); if (!res.ok) throw new Error("Failed to fetch planned daily output"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ itemCode: String(r.itemCode ?? ""), itemName: String(r.itemName ?? ""), dailyQty: Number(r.dailyQty ?? 0), @@ -259,7 +259,7 @@ export async function fetchPlannedOutputByDateAndItem( ); if (!res.ok) throw new Error("Failed to fetch planned output by date and item"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ date: String(r.date ?? ""), itemCode: String(r.itemCode ?? ""), itemName: String(r.itemName ?? ""), @@ -282,7 +282,7 @@ export async function fetchStaffDeliveryPerformance( ); if (!res.ok) throw new Error("Failed to fetch staff delivery performance"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => { + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => { // Accept camelCase or lowercase keys (JDBC/DB may return different casing) const row = r as Record; return { @@ -327,7 +327,7 @@ export async function fetchPurchaseOrderByStatus( ); if (!res.ok) throw new Error("Failed to fetch purchase order by status"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ status: String(r.status ?? ""), count: Number(r.count ?? 0), })); @@ -359,7 +359,7 @@ export async function fetchTopDeliveryItemsItemOptions( ); if (!res.ok) throw new Error("Failed to fetch item options"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ itemCode: String(r.itemCode ?? ""), itemName: String(r.itemName ?? ""), })); @@ -380,7 +380,7 @@ export async function fetchTopDeliveryItems( const res = await clientAuthFetch(`${BASE}/top-delivery-items?${q}`); if (!res.ok) throw new Error("Failed to fetch top delivery items"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ itemCode: String(r.itemCode ?? ""), itemName: String(r.itemName ?? ""), totalQty: Number(r.totalQty ?? 0), @@ -418,7 +418,7 @@ export async function fetchConsumptionTrendByMonth( const res = await clientAuthFetch(`${BASE}/consumption-trend-by-month?${q}`); if (!res.ok) throw new Error("Failed to fetch consumption trend"); const data = await res.json(); - return (Array.isArray(data) ? data : []).map((r: Record) => ({ + return ((Array.isArray(data) ? data : []) as Record[]).map((r: Record) => ({ month: String(r.month ?? ""), outQty: Number(r.outQty ?? 0), })); @@ -431,11 +431,12 @@ function normalizeChartRows( numberKeys: string[] ): T[] { if (!Array.isArray(rows)) return []; - return rows.map((r: Record) => { + return rows.map((r: unknown) => { + const row = r as Record; const out: Record = {}; - out[dateKey] = r[dateKey] != null ? String(r[dateKey]) : ""; + out[dateKey] = row[dateKey] != null ? String(row[dateKey]) : ""; numberKeys.forEach((k) => { - out[k] = Number(r[k]) || 0; + out[k] = Number(row[k]) || 0; }); return out as T; });