[st] - fix: 하수관로 관종별 현황, 입력 가능 연도만 매설연장 컬럼 수정가능, 관리자 계정일 시 엑셀 업로드로 모든 cell 수정 가능
This commit is contained in:
@@ -25,6 +25,8 @@ import type {
|
||||
import { getComputedValueCallback } from "@/components/util/grid/computedFieldCallbacks";
|
||||
import {
|
||||
getExcelImportColumnFieldNames,
|
||||
getNonEditableColumnFieldNames,
|
||||
mergeExcelImportWithExistingRows,
|
||||
prepareGridColumnsForExcelExport,
|
||||
restoreGridColumnsAfterExcelExport,
|
||||
shouldPrepareColumnsForExcelExport,
|
||||
@@ -727,6 +729,7 @@ const DataGrid = ({
|
||||
rowStartNum,
|
||||
excelExportFileSuffix,
|
||||
isExcelImport = true,
|
||||
excelImportSkipNonEditable = true,
|
||||
isExcelExport = true,
|
||||
fixedColumns,
|
||||
showHeaderCheckbox = false,
|
||||
@@ -1070,6 +1073,7 @@ useEffect(() => {
|
||||
const excelColumnFieldNames = getExcelImportColumnFieldNames(
|
||||
columns,
|
||||
columnLayout,
|
||||
{ skipNonEditable: excelImportSkipNonEditable },
|
||||
);
|
||||
|
||||
// 데이터 행 읽기
|
||||
@@ -1137,7 +1141,14 @@ useEffect(() => {
|
||||
dataRows.push(rowData);
|
||||
}
|
||||
}
|
||||
setRowData(dataRows);
|
||||
const preserveFieldNames = excelImportSkipNonEditable
|
||||
? getNonEditableColumnFieldNames(columns, columnLayout)
|
||||
: [];
|
||||
setRowData((prev) =>
|
||||
mergeExcelImportWithExistingRows(prev, dataRows, {
|
||||
preserveFieldNames,
|
||||
}),
|
||||
);
|
||||
} catch (error) {
|
||||
console.error("엑셀 파일 파싱 오류:", error);
|
||||
alert("엑셀 파일 파싱 중 오류가 발생했습니다.");
|
||||
@@ -1263,6 +1274,11 @@ useEffect(() => {
|
||||
"editable",
|
||||
column.editable !== false,
|
||||
);
|
||||
gv.setColumnProperty?.(
|
||||
column.name,
|
||||
"styleName",
|
||||
column.styleName ?? "",
|
||||
);
|
||||
applyColumnListEditorProperties(gv, column);
|
||||
});
|
||||
if (columns.some((c) => isDropDownEditorColumn(c))) {
|
||||
@@ -1481,12 +1497,10 @@ useEffect(() => {
|
||||
fieldName: col.fieldName,
|
||||
header: realGridHeaderWithTooltip(col.header),
|
||||
editable: col.editable,
|
||||
styleName: col.styleName ?? "",
|
||||
valueType: col.valueType,
|
||||
dataFormat: col.dataFormat,
|
||||
...(col.width != null && { width: col.width }),
|
||||
...(col.styleName != null && {
|
||||
styleName: col.styleName,
|
||||
}),
|
||||
...(col.mergeCells && {
|
||||
mergeRule: { criteria: "value" as const },
|
||||
}),
|
||||
|
||||
@@ -36,6 +36,8 @@ import SplitDataGrid from "./SplitDataGrid";
|
||||
import { getComputedValueCallback } from "@/components/util/grid/computedFieldCallbacks"
|
||||
import {
|
||||
getExcelImportColumnFieldNames,
|
||||
getNonEditableColumnFieldNames,
|
||||
mergeExcelImportWithExistingRows,
|
||||
prepareGridColumnsForExcelExport,
|
||||
restoreGridColumnsAfterExcelExport,
|
||||
shouldPrepareColumnsForExcelExport,
|
||||
@@ -277,6 +279,7 @@ function createNumberComparer(dp: RealGridDataProviderComparer): (field: string
|
||||
const TabDataGrid = ({
|
||||
columnInfo,
|
||||
isExcelImport = true,
|
||||
excelImportSkipNonEditable = true,
|
||||
isExcelExport = true,
|
||||
rows = [],
|
||||
showHeaderCheckbox = false,
|
||||
@@ -552,6 +555,7 @@ const TabDataGrid = ({
|
||||
const excelColumnFieldNames = getExcelImportColumnFieldNames(
|
||||
columns,
|
||||
columnLayout,
|
||||
{ skipNonEditable: excelImportSkipNonEditable },
|
||||
);
|
||||
|
||||
// 데이터 행 읽기
|
||||
@@ -596,9 +600,19 @@ const TabDataGrid = ({
|
||||
}
|
||||
}
|
||||
|
||||
const preserveFieldNames = excelImportSkipNonEditable
|
||||
? getNonEditableColumnFieldNames(columns, columnLayout)
|
||||
: [];
|
||||
|
||||
setRowDataMap(prev => {
|
||||
const newMap = new Map(prev);
|
||||
newMap.set(tabKey, dataRows);
|
||||
const existingRows = prev.get(tabKey) ?? [];
|
||||
newMap.set(
|
||||
tabKey,
|
||||
mergeExcelImportWithExistingRows(existingRows, dataRows, {
|
||||
preserveFieldNames,
|
||||
}),
|
||||
);
|
||||
return newMap;
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user