import { ValueType } from "realgrid"; import type { ColumnConfig } from "@/components/type/DataGrid.type"; import { footerDecimal1, footerDecimal3,footerInt } from "@/components/util/grid/footerSummary"; /** 펌프장 구분(`pumpSeNm`) */ export const PUMPING_STATION_PUMP_SE_VALUES = ["합류식", "분류식"] as const; function dropdownColumn( col: Pick & Partial, options: readonly string[], ): ColumnConfig { const values = [...options]; return { ...col, values, labels: values, lookupDisplay: true, editor: { type: "dropdown", domainOnly: true, textReadOnly: true, commitOnSelect: true, dropDownWhenClick: true, values, labels: values, }, }; } /** * 하수도 통계 관리 > 05. 펌프장 * 단일 Tab */ export const PumpingStationInpColumn = { columns: [ // 행정구역 { name: 'ctpvNm', fieldName: 'ctpvNm', header: { text: '시도' }, footer: { text: '합계' }, editable: false, styleName: 'rg-cell-readonly' }, { name: 'sggNm', fieldName: 'sggNm', header: { text: '시군구' }, styleName: 'rg-cell-readonly' }, // 기본 정보 { name: 'swtrmtFcltNm', fieldName: 'swtrmtFcltNm', header: { text: '처리장명' }, styleName: 'rg-cell-readonly' }, { name: 'fcltNm', fieldName: 'fcltNm', header: { text: '시설명' }, styleName: 'rg-cell-readonly' }, dropdownColumn( { name: 'pumpSeNm', fieldName: 'pumpSeNm', header: { text: '구분(합류식 분류식)' } }, PUMPING_STATION_PUMP_SE_VALUES, ), { name: 'fcltPstnCn', fieldName: 'fcltPstnCn', header: { text: '위치' } }, { name: 'oprtngStrtYmd', fieldName: 'oprtngStrtYmd', header: { text: '가동 년월일 yyyy-mm-dd' }, datetimeFormat: 'yyyy-MM-dd', editor: { type: 'date' as const, dropDownWhenClick: true, datetimeFormat: 'yyyy-MM-dd', }, }, { name: 'planMltvArea', fieldName: 'planMltvArea', header: { text: '계획배수면적(㎢)' }, footer: footerDecimal3, valueType: ValueType.NUMBER, dataFormat: '#,##0.000' }, // 계획시간 대 최대배수량 { name: 'sndyArea', fieldName: 'sndyArea', header: { text: '청천시(A)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, { name: 'rainArea', fieldName: 'rainArea', header: { text: '우천시(B)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, { name: 'exlnQnt', fieldName: 'exlnQnt', header: { text: '우수량(B-A)' }, footer: footerDecimal1, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.0', computed: { fields: ['rainArea', 'sndyArea'], type: 'difference' as const }, styleName: 'rg-cell-total', }, // 배수능력 > 총 양수량 (오수) { name: 'drtwPumpGrssPpqty', fieldName: 'drtwPumpGrssPpqty', header: { text: '총양수량(m³/min)' }, footer: footerDecimal1, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.0', styleName: 'rg-cell-total', computed: { type: 'pumpGrossPpqty' as const, pumpGroups: [ { pumpCntField: 'drtwPumpN1Cnt', rsrvPumpCntField: 'drtwPumpN1RsrvCnt', perPpqtyField: 'drtwPumpN1Ppqty', }, { pumpCntField: 'drtwPumpN2Cnt', rsrvPumpCntField: 'drtwPumpN2RsrvCnt', perPpqtyField: 'drtwPumpN2Ppqty', }, { pumpCntField: 'drtwPumpN3Cnt', rsrvPumpCntField: 'drtwPumpN3RsrvCnt', perPpqtyField: 'drtwPumpN3Ppqty', }, ], }, }, // 배수능력 > 오수펌프(1) { name: 'drtwPumpN1DmtrArea', fieldName: 'drtwPumpN1DmtrArea', header: { text: '구경(mm)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'drtwPumpN1Ppqty', fieldName: 'drtwPumpN1Ppqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, { name: 'drtwPumpN1Cnt', fieldName: 'drtwPumpN1Cnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'drtwPumpN1RsrvCnt', fieldName: 'drtwPumpN1RsrvCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, // 배수능력 > 오수펌프(2) { name: 'drtwPumpN2DmtrArea', fieldName: 'drtwPumpN2DmtrArea', header: { text: '구경(mm)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'drtwPumpN2Ppqty', fieldName: 'drtwPumpN2Ppqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, { name: 'drtwPumpN2Cnt', fieldName: 'drtwPumpN2Cnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'drtwPumpN2RsrvCnt', fieldName: 'drtwPumpN2RsrvCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, // 배수능력 > 오수펌프(3) { name: 'drtwPumpN3DmtrArea', fieldName: 'drtwPumpN3DmtrArea', header: { text: '구경(mm)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'drtwPumpN3Ppqty', fieldName: 'drtwPumpN3Ppqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, { name: 'drtwPumpN3Cnt', fieldName: 'drtwPumpN3Cnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'drtwPumpN3RsrvCnt', fieldName: 'drtwPumpN3RsrvCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, // 배수능력 > 총 양수량 (우수) { name: 'exlnPumpGrssPpqty', fieldName: 'exlnPumpGrssPpqty', header: { text: '총양수량(m³/min)' }, footer: footerDecimal1, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.0', styleName: 'rg-cell-total', computed: { type: 'pumpGrossPpqty' as const, pumpGroups: [ { pumpCntField: 'exlnPumpN1Cnt', rsrvPumpCntField: 'exlnPumpN1RsrvCnt', perPpqtyField: 'exlnPumpN1Ppqty', }, { pumpCntField: 'exlnPumpN2Cnt', rsrvPumpCntField: 'exlnPumpN2RsrvCnt', perPpqtyField: 'exlnPumpN2Ppqty', }, { pumpCntField: 'exlnPumpN3Cnt', rsrvPumpCntField: 'exlnPumpN3RsrvCnt', perPpqtyField: 'exlnPumpN3Ppqty', }, ], }, }, // 배수능력 > 우수펌프(1) { name: 'exlnPumpN1DmtrArea', fieldName: 'exlnPumpN1DmtrArea', header: { text: '구경(mm)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'exlnPumpN1Ppqty', fieldName: 'exlnPumpN1Ppqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, { name: 'exlnPumpN1Cnt', fieldName: 'exlnPumpN1Cnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'exlnPumpN1RsrvCnt', fieldName: 'exlnPumpN1RsrvCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, // 배수능력 > 우수펌프(2) { name: 'exlnPumpN2DmtrArea', fieldName: 'exlnPumpN2DmtrArea', header: { text: '구경(mm)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'exlnPumpN2Ppqty', fieldName: 'exlnPumpN2Ppqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, { name: 'exlnPumpN2Cnt', fieldName: 'exlnPumpN2Cnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'exlnPumpN2RsrvCnt', fieldName: 'exlnPumpN2RsrvCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, // 배수능력 > 우수펌프(3) { name: 'exlnPumpN3DmtrArea', fieldName: 'exlnPumpN3DmtrArea', header: { text: '구경(mm)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'exlnPumpN3Ppqty', fieldName: 'exlnPumpN3Ppqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, { name: 'exlnPumpN3Cnt', fieldName: 'exlnPumpN3Cnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, { name: 'exlnPumpN3RsrvCnt', fieldName: 'exlnPumpN3RsrvCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, // 연간전력 사용량 { name: 'anlElpwrUseQnt', fieldName: 'anlElpwrUseQnt', header: { text: '연간전력사용량(kWh/년)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' }, // 비고 { name: 'rmrk', fieldName: 'rmrk', header: { text: '비고' } }, // Hidden Columns : 시스템 관리를 위한 값 { name: 'admdstCd', fieldName: 'admdstCd', header: { text: '행정구역코드' }, visible: false, }, { name: 'fcltSn', fieldName: 'fcltSn', header: { text: '시설일련번호' }, visible: false, }, { name: 'admdstNm', fieldName: 'admdstNm', header: { text: '행정구역명' }, visible: false }, ], columnLayout: [ { name: 'administrativeArea', hideChildHeaders: false, header: { text: '행정구역' }, items: [ { column: 'ctpvNm', footerUserSpans: [{ colspan: 2 }] }, 'sggNm', ], }, 'swtrmtFcltNm', 'fcltNm', 'pumpSeNm', 'fcltPstnCn', 'oprtngStrtYmd', 'planMltvArea', { name: 'planFlowGroup', hideChildHeaders: false, header: { text: '계획시간대최대배수량(m³/hr)' }, items: ['sndyArea', 'rainArea', 'exlnQnt'], }, { name: 'drainageCapability', hideChildHeaders: false, header: { text: '배수능력' }, items: [ 'drtwPumpGrssPpqty', { name: 'sewagePump1Group', hideChildHeaders: false, header: { text: '오수펌프(1)' }, items: ['drtwPumpN1DmtrArea', 'drtwPumpN1Ppqty', 'drtwPumpN1Cnt', 'drtwPumpN1RsrvCnt'], }, { name: 'sewagePump2Group', hideChildHeaders: false, header: { text: '오수펌프(2)' }, items: ['drtwPumpN2DmtrArea', 'drtwPumpN2Ppqty', 'drtwPumpN2Cnt', 'drtwPumpN2RsrvCnt'], }, { name: 'sewagePump3Group', hideChildHeaders: false, header: { text: '오수펌프(3)' }, items: ['drtwPumpN3DmtrArea', 'drtwPumpN3Ppqty', 'drtwPumpN3Cnt', 'drtwPumpN3RsrvCnt'], }, 'exlnPumpGrssPpqty', { name: 'rainwaterPump1Group', hideChildHeaders: false, header: { text: '우수펌프(1)' }, items: ['exlnPumpN1DmtrArea', 'exlnPumpN1Ppqty', 'exlnPumpN1Cnt', 'exlnPumpN1RsrvCnt'], }, { name: 'rainwaterPump2Group', hideChildHeaders: false, header: { text: '우수펌프(2)' }, items: ['exlnPumpN2DmtrArea', 'exlnPumpN2Ppqty', 'exlnPumpN2Cnt', 'exlnPumpN2RsrvCnt'], }, { name: 'rainwaterPump3Group', hideChildHeaders: false, header: { text: '우수펌프(3)' }, items: ['exlnPumpN3DmtrArea', 'exlnPumpN3Ppqty', 'exlnPumpN3Cnt', 'exlnPumpN3RsrvCnt'], }, ], }, 'anlElpwrUseQnt', 'rmrk', 'admdstCd', 'fcltSn', 'admdstNm' ], rowStartNum: 3, fixedColumns: 3, tabKey: 'ST00050001', };