namespace BLL
{
    using System.Collections.Generic;
    using System.Data;
    using System.Web.UI.DataVisualization.Charting;
    /// 
    /// 自定义图形通用类
    /// 
    public static class ChartControlService
    {
        #region 给chart类赋值
        /// 
        /// 给chart类赋值
        /// 
        /// 数据源表值
        /// 图标题
        /// 图类型
        /// 图显示宽度
        /// 图显示高度
        /// 是否显示3D效果
        /// 返回图
        public static Model.DataSourceChart GetDataSourceChart(DataTable dt, string title, string type, int width, int height, bool isNotEnable3D)
        {
            Model.DataSourceChart dataSourceChart = new Model.DataSourceChart
            {
                Width = width,
                Height = height,
                Title = title,
                IsNotEnable3D = isNotEnable3D,
                ChartType = GetChartType(type)
            };
            List dataSourceTeams = new List();
            for (int i = 1; i < dt.Columns.Count; i++)
            {
                Model.DataSourceTeam dataSourceTeam = new Model.DataSourceTeam
                {
                    DataPointName = dt.Columns[i].ToString()
                };
                List dataSourcePoints = new List();
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    Model.DataSourcePoint dataSourcePoint = new Model.DataSourcePoint
                    {
                        PointText = dt.Rows[j][0].ToString(),
                        PointValue = dt.Rows[j][i].ToString()
                    };
                    dataSourcePoints.Add(dataSourcePoint);
                }
                dataSourceTeam.DataSourcePoints = dataSourcePoints;
                dataSourceTeams.Add(dataSourceTeam);
            }
            dataSourceChart.DataSourceTeams = dataSourceTeams;
            return dataSourceChart;
        }
        /// 
        /// 显示类型
        /// 
        /// 
        /// 
        public static SeriesChartType GetChartType(string chartType)
        {
            SeriesChartType chart = SeriesChartType.Column;
            if (chartType == "Column")
            {
                chart = SeriesChartType.Column;
            }
            else if (chartType == "Line")
            {
                chart = SeriesChartType.Line;
            }
            else if (chartType == "StackedArea")
            {
                chart = SeriesChartType.StackedArea;
            }
            else if (chartType == "StackedArea100")
            {
                chart = SeriesChartType.StackedArea100;
            }
            else if (chartType == "StepLine")
            {
                chart = SeriesChartType.StepLine;
            }
            else if (chartType == "Spline")
            {
                chart = SeriesChartType.Spline;
            }
            else if (chartType == "Stock")
            {
                chart = SeriesChartType.Stock;
            }
            else if (chartType == "Candlestick")
            {
                chart = SeriesChartType.Candlestick;
            }
            else if (chartType == "Pie")
            {
                chart = SeriesChartType.Pie;
            }
            else if (chartType == "Polar")
            {
                chart = SeriesChartType.Polar;
            }
            else if (chartType == "ErrorBar")
            {
                chart = SeriesChartType.ErrorBar;
            }
            return chart;
        }
        #endregion
        /// 
        /// 给chart类赋值
        /// 
        /// 数据源表值
        /// 图标题
        /// 图类型
        /// 图显示宽度
        /// 图显示高度
        /// 是否显示3D效果
        /// 返回图
        public static Model.DataSourceChart GetDataSourceChartByYijiao(DataTable dt, string title, string type, int width, int height, bool isNotEnable3D)
        {
            Model.DataSourceChart dataSourceChart = new Model.DataSourceChart
            {
                Width = width,
                Height = height,
                Title = title,
                IsNotEnable3D = isNotEnable3D,
                ChartType = GetChartType(type)
            };
            List dataSourceTeams = new List();
            for (int i = 1; i < dt.Columns.Count; i++)
            {
                Model.DataSourceTeam dataSourceTeam = new Model.DataSourceTeam
                {
                    DataPointName = dt.Columns[i].ToString()
                };
                List dataSourcePoints = new List();
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    Model.DataSourcePoint dataSourcePoint = new Model.DataSourcePoint
                    {
                        PointText = dt.Rows[j][0].ToString(),
                        PointValue = dt.Rows[j][i].ToString()
                    };
                    dataSourcePoints.Add(dataSourcePoint);
                }
                dataSourceTeam.DataSourcePoints = dataSourcePoints;
                dataSourceTeams.Add(dataSourceTeam);
            }
            dataSourceChart.DataSourceTeams = dataSourceTeams;
            return dataSourceChart;
        }
    }
}