피벗그리드 고침

This commit is contained in:
leeheejin
2026-01-16 10:18:11 +09:00
parent 98c489ee22
commit 484c98da9e
4 changed files with 121 additions and 8 deletions

View File

@@ -303,6 +303,17 @@ export const PivotGridComponent: React.FC<PivotGridProps> = ({
externalDataLength: externalData?.length,
initialFieldsLength: initialFields?.length,
});
// 🆕 데이터 샘플 확인
if (externalData && externalData.length > 0) {
console.log("🔶 첫 번째 데이터 샘플:", externalData[0]);
console.log("🔶 전체 데이터 개수:", externalData.length);
}
// 🆕 필드 설정 확인
if (initialFields && initialFields.length > 0) {
console.log("🔶 필드 설정:", initialFields);
}
// ==================== 상태 ====================
const [fields, setFields] = useState<PivotFieldConfig[]>(initialFields);
@@ -312,6 +323,9 @@ export const PivotGridComponent: React.FC<PivotGridProps> = ({
sortConfig: null,
filterConfig: {},
});
// 🆕 초기 로드 시 자동 확장 (첫 레벨만)
const [isInitialExpanded, setIsInitialExpanded] = useState(false);
const [isFullscreen, setIsFullscreen] = useState(false);
const [showFieldPanel, setShowFieldPanel] = useState(false); // 기본적으로 접힌 상태
const [showFieldChooser, setShowFieldChooser] = useState(false);
@@ -494,13 +508,44 @@ export const PivotGridComponent: React.FC<PivotGridProps> = ({
return null;
}
return processPivotData(
const result = processPivotData(
filteredData,
visibleFields,
pivotState.expandedRowPaths,
pivotState.expandedColumnPaths
);
// 🆕 피벗 결과 확인
console.log("🔶 피벗 처리 결과:", {
hasResult: !!result,
flatRowsCount: result?.flatRows?.length,
flatColumnsCount: result?.flatColumns?.length,
dataMatrixSize: result?.dataMatrix?.size,
expandedRowPaths: pivotState.expandedRowPaths.length,
expandedColumnPaths: pivotState.expandedColumnPaths.length,
});
return result;
}, [filteredData, fields, pivotState.expandedRowPaths, pivotState.expandedColumnPaths]);
// 🆕 초기 로드 시 첫 레벨 자동 확장
useEffect(() => {
if (!isInitialExpanded && pivotResult && pivotResult.flatRows.length > 0) {
// 첫 레벨 행들의 경로 수집 (level 0인 행들)
const firstLevelPaths = pivotResult.flatRows
.filter(row => row.level === 0 && row.hasChildren)
.map(row => row.path);
if (firstLevelPaths.length > 0) {
console.log("🔶 초기 자동 확장:", firstLevelPaths);
setPivotState(prev => ({
...prev,
expandedRowPaths: firstLevelPaths,
}));
setIsInitialExpanded(true);
}
}
}, [pivotResult, isInitialExpanded]);
// 조건부 서식용 전체 값 수집
const allCellValues = useMemo(() => {
@@ -665,6 +710,8 @@ export const PivotGridComponent: React.FC<PivotGridProps> = ({
// 행 확장/축소
const handleToggleRowExpand = useCallback(
(path: string[]) => {
console.log("🔶 행 확장/축소 클릭:", path);
setPivotState((prev) => {
const pathKey = pathToKey(path);
const existingIndex = prev.expandedRowPaths.findIndex(
@@ -673,13 +720,16 @@ export const PivotGridComponent: React.FC<PivotGridProps> = ({
let newPaths: string[][];
if (existingIndex >= 0) {
console.log("🔶 행 축소:", path);
newPaths = prev.expandedRowPaths.filter(
(_, i) => i !== existingIndex
);
} else {
console.log("🔶 행 확장:", path);
newPaths = [...prev.expandedRowPaths, path];
}
console.log("🔶 새로운 확장 경로:", newPaths);
onExpandChange?.(newPaths);
return {