using UnityEngine;
namespace XCharts.Runtime
{
    /// 
    /// Bar chart shows different data through the height of a bar, which is used in rectangular coordinate with at least 1 category axis.
    /// || 柱状图(或称条形图)是一种通过柱形的高度(横向的情况下则是宽度)来表现数据大小的一种常用图表类型。
    /// 
    [AddComponentMenu("XCharts/BarChart", 14)]
    [ExecuteInEditMode]
    [RequireComponent(typeof(RectTransform))]
    [DisallowMultipleComponent]
    [HelpURL("https://xcharts-team.github.io/docs/configuration")]
    public class BarChart : BaseChart
    {
        protected override void DefaultChart()
        {
            EnsureChartComponent();
            EnsureChartComponent();
            EnsureChartComponent();
            RemoveData();
            Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
            for (int i = 0; i < 5; i++)
            {
                AddXAxisData("x" + (i + 1));
            }
        }
        /// 
        /// default zebra column chart.
        /// || 斑马柱状图。
        /// 
        public void DefaultZebraColumnChart()
        {
            CheckChartInit();
            var serie = GetSerie(0);
            if (serie == null) return;
            serie.barType = BarType.Zebra;
        }
        /// 
        /// default capsule column chart.
        /// || 胶囊柱状图。
        /// 
        public void DefaultCapsuleColumnChart()
        {
            CheckChartInit();
            var serie = GetSerie(0);
            if (serie == null) return;
            serie.barType = BarType.Capsule;
        }
        /// 
        /// default grouped column chart.
        /// || 默认分组柱状图。
        /// 
        public void DefaultGroupedColumnChart()
        {
            CheckChartInit();
            Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
        }
        /// 
        /// default stacked column chart.
        /// || 默认堆叠分组柱状图。
        /// 
        public void DefaultStackedColumnChart()
        {
            CheckChartInit();
            var serie1 = GetSerie(0);
            serie1.stack = "stack1";
            var serie2 = Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
            serie2.stack = "stack1";
        }
        /// 
        /// default percent column chart.
        /// || 默认百分比柱状图。
        /// 
        public void DefaultPercentColumnChart()
        {
            CheckChartInit();
            var serie1 = GetSerie(0);
            serie1.stack = "stack1";
            serie1.barPercentStack = true;
            var serie2 = Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
            serie2.stack = "stack1";
            serie2.barPercentStack = true;
        }
        /// 
        /// default bar chart.
        /// || 默认条形图。
        /// 
        public void DefaultBarChart()
        {
            CheckChartInit();
            CovertColumnToBar(this);
        }
        /// 
        /// default zebra bar chart.
        /// || 默认斑马条形图。 
        /// 
        public void DefaultZebraBarChart()
        {
            CheckChartInit();
            var serie = GetSerie(0);
            serie.barType = BarType.Zebra;
            CovertColumnToBar(this);
        }
        /// 
        /// default capsule bar chart.
        /// || 默认胶囊条形图。
        /// 
        public void DefaultCapsuleBarChart()
        {
            CheckChartInit();
            var serie = GetSerie(0);
            serie.barType = BarType.Capsule;
            CovertColumnToBar(this);
        }
        /// 
        /// default grouped bar chart.
        /// || 默认分组条形图。
        /// 
        public void DefaultGroupedBarChart()
        {
            CheckChartInit();
            Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
            CovertColumnToBar(this);
        }
        /// 
        /// default stacked bar chart.
        /// || 默认堆叠条形图。
        /// 
        public void DefaultStackedBarChart()
        {
            CheckChartInit();
            var serie1 = GetSerie(0);
            serie1.stack = "stack1";
            var serie2 = Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
            serie2.stack = "stack1";
            CovertColumnToBar(this);
        }
        /// 
        /// default percent bar chart.
        /// || 默认百分比条形图。
        /// 
        public void DefaultPercentBarChart()
        {
            CheckChartInit();
            var serie1 = GetSerie(0);
            serie1.stack = "stack1";
            serie1.barPercentStack = true;
            var serie2 = Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
            serie2.stack = "stack1";
            serie2.barPercentStack = true;
            CovertColumnToBar(this);
        }
        private static void CovertColumnToBar(BarChart chart)
        {
            chart.ConvertXYAxis(0);
            var xAxis = chart.GetChartComponent();
            xAxis.axisLine.show = false;
            xAxis.axisTick.show = false;
            var yAxis = chart.GetChartComponent();
            yAxis.axisTick.alignWithLabel = true;
        }
    }
}