[agent-pipeline] pipe-20260306212316-vynh round-3
This commit is contained in:
@@ -257,7 +257,9 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
|
||||
// currentTable이 준비되고 필터값이 있을 때 실행
|
||||
useEffect(() => {
|
||||
if (!needsFilterReapplyRef.current) return;
|
||||
if (!currentTable?.onFilterChange) return;
|
||||
// currentTable을 로컬 변수로 캡처하여 strict 타입 가드 적용
|
||||
const table = currentTable;
|
||||
if (!table?.onFilterChange) return;
|
||||
|
||||
// 플래그 즉시 해제 (중복 실행 방지)
|
||||
needsFilterReapplyRef.current = false;
|
||||
@@ -288,8 +290,8 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
|
||||
const day = String(date.getDate()).padStart(2, "0");
|
||||
return `${year}-${month}-${day}`;
|
||||
};
|
||||
const fromStr = filterValue.from ? formatDate(filterValue.from) : "";
|
||||
const toStr = filterValue.to ? formatDate(filterValue.to) : "";
|
||||
const fromStr = filterValue.from ? formatDate(filterValue.from as Date) : "";
|
||||
const toStr = filterValue.to ? formatDate(filterValue.to as Date) : "";
|
||||
if (fromStr && toStr) filterValue = `${fromStr}|${toStr}`;
|
||||
else if (fromStr) filterValue = `${fromStr}|`;
|
||||
else if (toStr) filterValue = `|${toStr}`;
|
||||
@@ -298,7 +300,7 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
|
||||
|
||||
// 배열 처리
|
||||
if (Array.isArray(filterValue)) {
|
||||
filterValue = filterValue.join("|");
|
||||
filterValue = (filterValue as unknown[]).join("|");
|
||||
}
|
||||
|
||||
let operator: TableFilter["operator"] = "contains";
|
||||
@@ -318,7 +320,7 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
|
||||
});
|
||||
|
||||
// 직접 onFilterChange 호출 (applyFilters 클로저 우회)
|
||||
currentTable.onFilterChange(filtersWithValues);
|
||||
table.onFilterChange(filtersWithValues);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [currentTable?.onFilterChange, currentTable?.tableName, activeFilters, filterValues]);
|
||||
|
||||
@@ -577,8 +579,8 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
|
||||
};
|
||||
|
||||
// "YYYY-MM-DD|YYYY-MM-DD" 형식으로 변환
|
||||
const fromStr = filterValue.from ? formatDate(filterValue.from) : "";
|
||||
const toStr = filterValue.to ? formatDate(filterValue.to) : "";
|
||||
const fromStr = filterValue.from ? formatDate(filterValue.from as Date) : "";
|
||||
const toStr = filterValue.to ? formatDate(filterValue.to as Date) : "";
|
||||
|
||||
if (fromStr && toStr) {
|
||||
// 둘 다 있으면 파이프로 연결
|
||||
@@ -597,24 +599,21 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
|
||||
// 다중선택 배열을 처리 (파이프로 연결된 문자열로 변환)
|
||||
// filterType에 관계없이 배열이면 파이프로 연결
|
||||
if (Array.isArray(filterValue)) {
|
||||
filterValue = filterValue.join("|");
|
||||
filterValue = (filterValue as unknown[]).join("|");
|
||||
}
|
||||
|
||||
// 🔧 filterType에 따라 operator 설정
|
||||
// - "select" 유형: 정확히 일치 (equals)
|
||||
// - "text" 유형: 부분 일치 (contains)
|
||||
// - "date", "number": 각각 적절한 처리
|
||||
let operator: TableFilter["operator"] = "contains"; // 기본값
|
||||
// filterType에 따라 operator 설정
|
||||
let operator: TableFilter["operator"] = "contains";
|
||||
if (filter.filterType === "select") {
|
||||
operator = "equals"; // 선택 필터는 정확히 일치
|
||||
operator = "equals";
|
||||
} else if (filter.filterType === "number") {
|
||||
operator = "equals"; // 숫자도 정확히 일치
|
||||
operator = "equals";
|
||||
}
|
||||
|
||||
return {
|
||||
...filter,
|
||||
value: (filterValue || "") as string | number | boolean,
|
||||
operator, // operator 추가
|
||||
operator,
|
||||
};
|
||||
})
|
||||
.filter((f): f is TableFilter => {
|
||||
@@ -624,8 +623,10 @@ export function TableSearchWidget({ component, screenId, onHeightChange }: Table
|
||||
return true;
|
||||
});
|
||||
|
||||
if (currentTable?.onFilterChange) {
|
||||
currentTable.onFilterChange(filtersWithValues);
|
||||
// currentTable을 로컬 변수로 캡처하여 strict 타입 가드 적용
|
||||
const table = currentTable;
|
||||
if (table?.onFilterChange) {
|
||||
table.onFilterChange(filtersWithValues);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user