2026-01-08 17:05:27 +09:00
|
|
|
"use client";
|
|
|
|
|
|
2026-01-08 17:06:28 +09:00
|
|
|
import React from "react";
|
|
|
|
|
import { AutoRegisteringComponentRenderer } from "../../AutoRegisteringComponentRenderer";
|
|
|
|
|
import { createComponentDefinition } from "../../utils/createComponentDefinition";
|
|
|
|
|
import { ComponentCategory } from "@/types/component";
|
2026-01-08 17:05:27 +09:00
|
|
|
import { PivotGridComponent } from "./PivotGridComponent";
|
|
|
|
|
import { PivotGridConfigPanel } from "./PivotGridConfigPanel";
|
|
|
|
|
|
2026-01-08 17:06:28 +09:00
|
|
|
/**
|
|
|
|
|
* PivotGrid 컴포넌트 정의
|
|
|
|
|
*/
|
|
|
|
|
const PivotGridDefinition = createComponentDefinition({
|
|
|
|
|
id: "pivot-grid",
|
|
|
|
|
name: "피벗 그리드",
|
|
|
|
|
nameEng: "PivotGrid Component",
|
2026-01-08 17:05:27 +09:00
|
|
|
description: "다차원 데이터 분석을 위한 피벗 테이블 컴포넌트",
|
2026-01-08 17:06:28 +09:00
|
|
|
category: ComponentCategory.DISPLAY,
|
|
|
|
|
webType: "text",
|
|
|
|
|
component: PivotGridComponent,
|
2026-01-08 17:05:27 +09:00
|
|
|
defaultConfig: {
|
|
|
|
|
dataSource: {
|
|
|
|
|
type: "table",
|
|
|
|
|
tableName: "",
|
|
|
|
|
},
|
|
|
|
|
fields: [],
|
|
|
|
|
totals: {
|
|
|
|
|
showRowGrandTotals: true,
|
|
|
|
|
showColumnGrandTotals: true,
|
|
|
|
|
showRowTotals: true,
|
|
|
|
|
showColumnTotals: true,
|
|
|
|
|
},
|
|
|
|
|
style: {
|
|
|
|
|
theme: "default",
|
|
|
|
|
headerStyle: "default",
|
|
|
|
|
cellPadding: "normal",
|
|
|
|
|
borderStyle: "light",
|
|
|
|
|
alternateRowColors: true,
|
|
|
|
|
highlightTotals: true,
|
|
|
|
|
},
|
|
|
|
|
allowExpandAll: true,
|
|
|
|
|
exportConfig: {
|
|
|
|
|
excel: true,
|
|
|
|
|
},
|
|
|
|
|
height: "400px",
|
|
|
|
|
},
|
2026-01-08 17:06:28 +09:00
|
|
|
defaultSize: { width: 800, height: 500 },
|
|
|
|
|
configPanel: PivotGridConfigPanel,
|
|
|
|
|
icon: "BarChart3",
|
|
|
|
|
tags: ["피벗", "분석", "집계", "그리드", "데이터"],
|
|
|
|
|
version: "1.0.0",
|
|
|
|
|
author: "개발팀",
|
|
|
|
|
documentation: "",
|
2026-01-08 17:05:27 +09:00
|
|
|
});
|
|
|
|
|
|
2026-01-08 17:06:28 +09:00
|
|
|
/**
|
|
|
|
|
* PivotGrid 렌더러
|
|
|
|
|
* 자동 등록 시스템을 사용하여 컴포넌트를 레지스트리에 등록
|
|
|
|
|
*/
|
|
|
|
|
export class PivotGridRenderer extends AutoRegisteringComponentRenderer {
|
|
|
|
|
static componentDefinition = PivotGridDefinition;
|
|
|
|
|
|
|
|
|
|
render(): React.ReactElement {
|
|
|
|
|
return (
|
|
|
|
|
<PivotGridComponent
|
|
|
|
|
{...this.props}
|
|
|
|
|
/>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 자동 등록 실행
|
|
|
|
|
PivotGridRenderer.registerSelf();
|
|
|
|
|
|
|
|
|
|
// 강제 등록 (디버깅용)
|
|
|
|
|
if (typeof window !== "undefined") {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
try {
|
|
|
|
|
PivotGridRenderer.registerSelf();
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("❌ PivotGrid 강제 등록 실패:", error);
|
|
|
|
|
}
|
|
|
|
|
}, 1000);
|
|
|
|
|
}
|