import { basinKeyMap } from "../model/map-data"; export interface PplLengthContent { zoneNm: string; sumPrlgVl: number; usgCd?: string; yearGroup?: string; } export interface SewerageService { getPplLength(ymdFrom: string, ymdTo: string, useCd: string): Promise; getPplUseLength(ymdFrom: string, ymdTo: string, useCd: string): Promise; getMvUsgPplLength(): Promise; getMvOldPplLength(): Promise; } export interface ChartDataSet { label: string; data: (number | undefined)[]; backgroundColor: string; borderRadius?: number; } export interface OldPplChartData { labels: string[]; datasets: ChartDataSet[]; } type SnOldPplItem = { name: string; colTitle: string[]; rows: number[]; }; type SnOldPplLength = { [key: string]: SnOldPplItem; }; export type mapPplOldItem = { name: string; totalLen: number; pplLen2025: number; pplLen2530: number; pplLen30: number; }; export type mapPplOldType = { colTitle: { totalLen: string; // 총길이 pplLen2025: string; // 20~25년 pplLen2530: string; // 25~30년 pplLen30: string; // 30년 이상 }; data: mapPplOldItem[]; }; export function buildSnOldPplLength( chartData: { labels: string[]; datasets: { label: string; data: number[] }[]; }, totalLengths: number[] ): SnOldPplLength { const colTitle = ["총길이", ...chartData.datasets.map((ds) => ds.label)]; const result: SnOldPplLength = {}; chartData.labels.forEach((basinName, index) => { const key = basinKeyMap[basinName]; // geum, han, nakdong, yeongsan if (!key) return; // 매핑 안되면 스킵 const total = totalLengths[index] ?? 0; const datasetValues = chartData.datasets.map( (ds) => ds.data[index] ?? 0, ); result[key] = { name: basinName, colTitle, rows: [ total, // 총길이 (undefined면 0) ...datasetValues, // 각 연차 데이터 (undefined면 0) ], }; }); return result; }