[st] - 입력단 메뉴 작업중
This commit is contained in:
@@ -1,6 +1,64 @@
|
||||
import type { ColumnConfig } from "@/components/type/DataGrid.type";
|
||||
import type {
|
||||
ColumnConfig,
|
||||
ColumnLayoutItem,
|
||||
} from "@/components/type/DataGrid.type";
|
||||
import type { GridView } from "realgrid";
|
||||
|
||||
function flattenColumnLayoutNames(layout: ColumnLayoutItem[]): string[] {
|
||||
const result: string[] = [];
|
||||
for (const item of layout) {
|
||||
if (typeof item === "string") {
|
||||
result.push(item);
|
||||
continue;
|
||||
}
|
||||
if (item && typeof item === "object") {
|
||||
if ("column" in item && typeof item.column === "string") {
|
||||
result.push(item.column);
|
||||
continue;
|
||||
}
|
||||
if ("items" in item && Array.isArray(item.items)) {
|
||||
result.push(
|
||||
...flattenColumnLayoutNames(
|
||||
item.items as ColumnLayoutItem[],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** 엑셀 가져오기 — N번째 열을 그리드 N번째 fieldName에 매핑 (보내기 컬럼 순서와 동일) */
|
||||
export function getExcelImportColumnFieldNames(
|
||||
columns: ColumnConfig[],
|
||||
columnLayout?: ColumnLayoutItem[],
|
||||
): string[] {
|
||||
const excludedNames = new Set(
|
||||
columns.filter((c) => c.excludeFromExcelExport).map((c) => c.name),
|
||||
);
|
||||
const fieldByName = new Map(
|
||||
columns
|
||||
.filter((c) => c.fieldName)
|
||||
.map((c) => [c.name, c.fieldName as string]),
|
||||
);
|
||||
|
||||
const layoutNames =
|
||||
columnLayout && columnLayout.length > 0
|
||||
? flattenColumnLayoutNames(columnLayout)
|
||||
: columns.map((c) => c.name);
|
||||
|
||||
const seen = new Set<string>();
|
||||
const fieldNames: string[] = [];
|
||||
for (const name of layoutNames) {
|
||||
if (excludedNames.has(name) || seen.has(name)) continue;
|
||||
const fieldName = fieldByName.get(name);
|
||||
if (!fieldName) continue;
|
||||
seen.add(name);
|
||||
fieldNames.push(fieldName);
|
||||
}
|
||||
return fieldNames;
|
||||
}
|
||||
|
||||
export type ExcelExportVisibilitySnapshot = Map<string, boolean>;
|
||||
|
||||
/** 엑셀보내기 직전: 제외 컬럼 숨김, 그리드용 숨김(visible:false) 컬럼은 export에만 표시 */
|
||||
|
||||
Reference in New Issue
Block a user