+
diff --git a/apps/cm/src/pages/dashboard/ui/sn-old-ppl.tsx b/apps/cm/src/pages/dashboard/ui/sn-old-ppl.tsx
index fa502e7c5..07d333abb 100644
--- a/apps/cm/src/pages/dashboard/ui/sn-old-ppl.tsx
+++ b/apps/cm/src/pages/dashboard/ui/sn-old-ppl.tsx
@@ -15,8 +15,8 @@ import {
} from "chart.js";
import { Bar } from "react-chartjs-2";
import { Button } from "@common/components";
-import type { PplLengthContent, ChartDataSet, OldPplChartData } from "../model/sn-interface";
-import { SewerageApi, useOldPplStore,useMapOldPplStore, transformChartDataToMapData } from "../api/sn-service";
+import type { PplLengthContent } from "../model/sn-interface";
+import { buildOldPplChartData, SewerageApi, useOldPplStore,useMapOldPplStore, transformChartDataToMapData } from "../api/sn-service";
import { useDragHandle } from "./sortable-panel";
@@ -41,45 +41,7 @@ export default function SnOldPpl() {
useEffect(() => {
if (oldPplLenData.length === 0) return;
- // 유역 목록 추출 (중복 제거)
- const allZones = [...new Set(oldPplLenData.map(d => d.zoneNm))];
-
- // yearGroup 매핑: API 응답값 -> 차트 label
- const yearGroupMap: { [key: string]: { label: string; color: string } } = {
- "20년~25년미만": { label: "20-25년", color: "#3B82F6" },
- "25년~30년미만": { label: "25-30년", color: "#EF4444" },
- "30년이상": { label: "30년이상", color: "#F87171" },
- };
-
- // 유역별, 노후년도별 데이터 구조화
- const dataByZone: { [zone: string]: { [yearGroup: string]: number } } = {};
- allZones.forEach(zone => {
- dataByZone[zone] = {};
- });
-
- oldPplLenData.forEach(item => {
- let zoneData = dataByZone[item.zoneNm];
- if (!zoneData) {
- zoneData = {};
- dataByZone[item.zoneNm] = zoneData;
- }
- if (item.yearGroup) {
- zoneData[item.yearGroup] = item.sumPrlgVl;
- }
- });
-
- // 데이터셋 생성
- const newDatasets: ChartDataSet[] = Object.entries(yearGroupMap).map(([yearGroup, { label, color }]) => ({
- label,
- data: allZones.map(zone => dataByZone[zone]?.[yearGroup] ?? 0),
- backgroundColor: color,
- borderRadius: 4,
- }));
-
- const newChartData: OldPplChartData = {
- labels: allZones,
- datasets: newDatasets,
- };
+ const newChartData = buildOldPplChartData(oldPplLenData);
setChartData(newChartData);
@@ -110,9 +72,7 @@ export default function SnOldPpl() {
y: {
beginAtZero: true,
min: 0,
- max: 10000,
ticks: {
- stepSize: 2000,
callback: function (value) {
return Number(value).toLocaleString() + 'km';
}
@@ -192,4 +152,4 @@ export default function SnOldPpl() {