feat: RepeaterInput 하위 데이터 조회 컬럼 설정 기능 개선
- 표시 컬럼 순서 변경 기능 추가 (columnOrder) - 조회 컬럼 -> 저장 컬럼 매핑 기능 추가 (fieldMappings) - 컬럼별 라벨, 순서, 저장 여부 통합 설정 UI 구현 - 하위 호환성 유지 (fieldMappings 없으면 기존 로직 사용)
This commit is contained in:
@@ -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(() => {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user