import React from 'react';
import { BaseChart } from './BaseChart';
import type { ChartsConfig } from '../types/u-charts-original';

/**
 * BarChart 组件的 Props 接口
 * 使用原始 u-charts.js + Canvas 2D API
 */
export interface BarChartProps {
  /** Canvas 元素的 ID，必须唯一 */
  canvasId: string;
  /** 图表宽度（像素） */
  width?: number;
  /** 图表高度（像素） */
  height?: number;
  /** Y 轴分类数据（条形图的分类在Y轴） */
  categories: string[];
  /** 系列数据 */
  series: ChartsConfig['series'];
  /** 额外的图表配置 */
  config?: Partial<ChartsConfig>;
}

/**
 * BarChart 横向柱状图组件
 *
 * 使用原始 u-charts.js + Canvas 2D API
 * 用于显示分类数据的横向柱状图
 */
export const BarChart: React.FC<BarChartProps> = (props) => {
  const {
    canvasId,
    width,
    height,
    categories,
    series,
    config = {},
  } = props;

  /**
   * 合并默认配置
   */
  const mergedConfig: Partial<ChartsConfig> = {
    animation: true,
    background: '#FFFFFF',
    color: ['#3b82f6', '#10b981', '#f59e0b', '#8b5cf6', '#ef4444'],
    padding: [15, 15, 0, 5],
    enableScroll: false,
    legend: {},
    xAxis: {
      disableGrid: true,
      ...config.xAxis,
    },
    yAxis: {
      data: [{ min: 0 }],
      ...config.yAxis,
    },
    extra: {
      bar: {
        type: 'group',
        width: 30,
        activeBgColor: '#000000',
        activeBgOpacity: 0.08,
        ...config.extra?.bar,
      }
    },
    ...config,
  };

  return (
    <BaseChart
      canvasId={canvasId}
      width={width}
      height={height}
      type="bar"
      categories={categories}
      series={series}
      config={mergedConfig}
    />
  );
};

export default BarChart;
