feat(pop-dashboard): Phase 0 공통 타입 + Phase 1 대시보드 컴포넌트 구현
Phase 0: 공통 인프라 타입 정의
- ColumnBinding, JoinConfig, DataSourceConfig, PopActionConfig 등
- FilterOperator, AggregationType, SortConfig 타입
Phase 1: pop-dashboard 컴포넌트
- 4개 서브타입: KpiCard, ChartItem, GaugeItem, StatCard
- 4개 표시모드: ArrowsMode, AutoSlideMode, GridMode, ScrollMode
- 설정패널(PopDashboardConfig), 미리보기(PopDashboardPreview)
- 계산식 엔진(formula.ts), 데이터 조회(dataFetcher.ts)
- 팔레트/렌더러/타입 시스템 연동
fix(pop-text): DateTimeDisplay isRealtime 기본값 true로 수정
EOF
2026-02-10 11:04:18 +09:00
|
|
|
"use client";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* pop-dashboard 컴포넌트 레지스트리 등록 진입점
|
|
|
|
|
*
|
|
|
|
|
* 이 파일을 import하면 side-effect로 PopComponentRegistry에 자동 등록됨
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import { PopComponentRegistry } from "../../PopComponentRegistry";
|
|
|
|
|
import { PopDashboardComponent } from "./PopDashboardComponent";
|
|
|
|
|
import { PopDashboardConfigPanel } from "./PopDashboardConfig";
|
|
|
|
|
import { PopDashboardPreviewComponent } from "./PopDashboardPreview";
|
|
|
|
|
|
|
|
|
|
// 레지스트리 등록
|
|
|
|
|
PopComponentRegistry.registerComponent({
|
|
|
|
|
id: "pop-dashboard",
|
|
|
|
|
name: "대시보드",
|
|
|
|
|
description: "여러 집계 아이템을 묶어서 다양한 방식으로 보여줌",
|
|
|
|
|
category: "display",
|
|
|
|
|
icon: "BarChart3",
|
|
|
|
|
component: PopDashboardComponent,
|
|
|
|
|
configPanel: PopDashboardConfigPanel,
|
|
|
|
|
preview: PopDashboardPreviewComponent,
|
|
|
|
|
defaultProps: {
|
|
|
|
|
items: [],
|
2026-02-10 14:22:30 +09:00
|
|
|
pages: [],
|
feat(pop-dashboard): Phase 0 공통 타입 + Phase 1 대시보드 컴포넌트 구현
Phase 0: 공통 인프라 타입 정의
- ColumnBinding, JoinConfig, DataSourceConfig, PopActionConfig 등
- FilterOperator, AggregationType, SortConfig 타입
Phase 1: pop-dashboard 컴포넌트
- 4개 서브타입: KpiCard, ChartItem, GaugeItem, StatCard
- 4개 표시모드: ArrowsMode, AutoSlideMode, GridMode, ScrollMode
- 설정패널(PopDashboardConfig), 미리보기(PopDashboardPreview)
- 계산식 엔진(formula.ts), 데이터 조회(dataFetcher.ts)
- 팔레트/렌더러/타입 시스템 연동
fix(pop-text): DateTimeDisplay isRealtime 기본값 true로 수정
EOF
2026-02-10 11:04:18 +09:00
|
|
|
displayMode: "arrows",
|
|
|
|
|
autoSlideInterval: 5,
|
|
|
|
|
autoSlideResumeDelay: 3,
|
|
|
|
|
showIndicator: true,
|
|
|
|
|
gap: 8,
|
|
|
|
|
},
|
|
|
|
|
touchOptimized: true,
|
|
|
|
|
supportedDevices: ["mobile", "tablet"],
|
|
|
|
|
});
|