feat: RepeaterInput 하위 데이터 조회 컬럼 설정 기능 개선

- 표시 컬럼 순서 변경 기능 추가 (columnOrder)
- 조회 컬럼 -> 저장 컬럼 매핑 기능 추가 (fieldMappings)
- 컬럼별 라벨, 순서, 저장 여부 통합 설정 UI 구현
- 하위 호환성 유지 (fieldMappings 없으면 기존 로직 사용)
This commit is contained in:
SeongHyun Kim
2026-01-19 13:18:17 +09:00
parent 0f9e91050e
commit d4b5bdd835
5 changed files with 252 additions and 14 deletions

View File

@@ -78,8 +78,20 @@ export const SubDataLookupPanel: React.FC<SubDataLookupPanelProps> = ({
return config.lookup.columnLabels?.[columnName] || columnName;
};
// 표시할 컬럼 목록
const displayColumns = config.lookup.displayColumns || [];
// 표시할 컬럼 목록 (columnOrder가 있으면 순서 적용)
const displayColumns = useMemo(() => {
const columns = config.lookup.displayColumns || [];
const columnOrder = config.lookup.columnOrder;
if (columnOrder && columnOrder.length > 0) {
// columnOrder 순서대로 정렬 (displayColumns에 있는 것만)
const orderedCols = columnOrder.filter(col => columns.includes(col));
// columnOrder에 없지만 displayColumns에 있는 컬럼 추가
const remainingCols = columns.filter(col => !columnOrder.includes(col));
return [...orderedCols, ...remainingCols];
}
return columns;
}, [config.lookup.displayColumns, config.lookup.columnOrder]);
// 요약 정보 표시용 선택 상태
const summaryText = useMemo(() => {

View File

@@ -197,10 +197,18 @@ export function useSubDataLookup(props: UseSubDataLookupProps): UseSubDataLookup
return "선택 안됨";
}
const { displayColumns, columnLabels } = config.lookup;
const { displayColumns, columnLabels, columnOrder } = config.lookup;
const parts: string[] = [];
displayColumns.forEach((col) => {
// columnOrder가 있으면 순서 적용, 없으면 displayColumns 순서
let orderedColumns = displayColumns;
if (columnOrder && columnOrder.length > 0) {
const orderedCols = columnOrder.filter(col => displayColumns.includes(col));
const remainingCols = displayColumns.filter(col => !columnOrder.includes(col));
orderedColumns = [...orderedCols, ...remainingCols];
}
orderedColumns.forEach((col) => {
const value = selectedItem[col];
if (value !== undefined && value !== null && value !== "") {
const label = columnLabels?.[col] || col;