85 lines
2.0 KiB
TypeScript
85 lines
2.0 KiB
TypeScript
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<PplLengthContent[]>;
|
|
getPplUseLength(ymdFrom: string, ymdTo: string, useCd: string): Promise<PplLengthContent[]>;
|
|
getMvUsgPplLength(): Promise<PplLengthContent[]>;
|
|
getMvOldPplLength(): Promise<PplLengthContent[]>;
|
|
}
|
|
|
|
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;
|
|
} |