import { ComponentConfig } from "@/types/component";

/**
 * 집계 타입
 */
export type AggregationType = "sum" | "avg" | "count" | "max" | "min";

/**
 * 개별 집계 항목 설정
 */
export interface AggregationItem {
  id: string;
  columnName: string; // 집계할 컬럼
  columnLabel?: string; // 표시 라벨
  labelLangKeyId?: number; // 다국어 키 ID
  labelLangKey?: string; // 다국어 키
  type: AggregationType; // 집계 타입
  format?: "number" | "currency" | "percent"; // 표시 형식
  decimalPlaces?: number; // 소수점 자릿수
  prefix?: string; // 접두사 (예: "₩")
  suffix?: string; // 접미사 (예: "원", "개")
}

/**
 * 집계 위젯 설정
 */
export interface AggregationWidgetConfig extends ComponentConfig {
  // 데이터 소스 설정
  dataSourceType: "repeater" | "tableList" | "manual"; // 데이터 소스 타입
  dataSourceComponentId?: string; // 연결할 컴포넌트 ID (repeater 또는 tableList)

  // 컴포넌트별 테이블 설정 (개발 가이드 준수)
  tableName?: string; // 사용할 테이블명
  customTableName?: string; // 커스텀 테이블명
  useCustomTable?: boolean; // true: customTableName 사용

  // 집계 항목들
  items: AggregationItem[];

  // 레이아웃 설정
  layout: "horizontal" | "vertical"; // 배치 방향
  showLabels: boolean; // 라벨 표시 여부
  showIcons: boolean; // 아이콘 표시 여부
  gap?: string; // 항목 간 간격

  // 스타일 설정
  backgroundColor?: string;
  borderRadius?: string;
  padding?: string;
  fontSize?: string;
  labelFontSize?: string;
  valueFontSize?: string;
  labelColor?: string;
  valueColor?: string;
}

/**
 * 집계 결과
 */
export interface AggregationResult {
  id: string;
  label: string;
  value: number | string;
  formattedValue: string;
  type: AggregationType;
}

