피벗그리드 고침
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user