:Qrge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node

This commit is contained in:
kmh
2026-03-10 16:16:52 +09:00
parent 5abce62d89
commit 6d2cdc1782
8 changed files with 267 additions and 143 deletions

View File

@@ -393,12 +393,14 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [currentTable?.tableName, filterMode, screenId, currentTableTabId, JSON.stringify(presetFilters)]);
// select 옵션 초기 로드 (한 번만 실행, 이후 유지)
// select 옵션 로드 (getColumnUniqueValues 변경 시 재로드 - columnMeta 갱신 반영)
useEffect(() => {
if (!currentTable?.getColumnUniqueValues || activeFilters.length === 0) {
return;
}
let cancelled = false;
const loadSelectOptions = async () => {
const selectFilters = activeFilters.filter((f) => f.filterType === "select");
@@ -406,26 +408,28 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
return;
}
const newOptions: Record<string, Array<{ label: string; value: string }>> = { ...selectOptions };
const newOptions: Record<string, Array<{ label: string; value: string }>> = {};
for (const filter of selectFilters) {
// 이미 로드된 옵션이 있으면 스킵 (초기값 유지)
if (newOptions[filter.columnName] && newOptions[filter.columnName].length > 0) {
continue;
}
try {
const options = await currentTable.getColumnUniqueValues(filter.columnName);
newOptions[filter.columnName] = options;
if (options && options.length > 0) {
newOptions[filter.columnName] = options;
}
} catch (error) {
console.error("❌ [TableSearchWidget] select 옵션 로드 실패:", filter.columnName, error);
}
}
setSelectOptions(newOptions);
if (!cancelled && Object.keys(newOptions).length > 0) {
setSelectOptions((prev) => ({ ...prev, ...newOptions }));
}
};
loadSelectOptions();
}, [activeFilters, currentTable?.tableName, currentTable?.getColumnUniqueValues]); // dataCount 제거, tableName으로 변경
return () => { cancelled = true; };
}, [activeFilters, currentTable?.tableName, currentTable?.getColumnUniqueValues]);
// 높이 변화 감지 및 알림 (실제 화면에서만)
useEffect(() => {