| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | using System.Collections.Generic;using System.Text;using UnityEngine;namespace XCharts.Runtime{    public static class CheckHelper    {        private static bool IsColorAlphaZero(Color color)        {            return !ChartHelper.IsClearColor(color) && color.a == 0;        }        public static string CheckChart(BaseGraph chart)        {            if (chart is BaseChart) return CheckChart((BaseChart) chart);            else return string.Empty;        }        public static string CheckChart(BaseChart chart)        {            var sb = ChartHelper.sb;            sb.Length = 0;            CheckName(chart, sb);            CheckSize(chart, sb);            CheckTheme(chart, sb);            CheckTitle(chart, sb);            CheckLegend(chart, sb);            CheckGrid(chart, sb);            CheckSerie(chart, sb);            return sb.ToString();        }        private static void CheckName(BaseChart chart, StringBuilder sb)        {            if (string.IsNullOrEmpty(chart.chartName)) return;            var list = XChartsMgr.GetCharts(chart.chartName);            if (list.Count > 1)            {                sb.AppendFormat("warning:chart name is repeated: {0}\n", chart.chartName);            }        }        private static void CheckSize(BaseChart chart, StringBuilder sb)        {            if (chart.chartWidth == 0 || chart.chartHeight == 0)            {                sb.Append("warning:chart width or height is 0\n");            }        }        private static void CheckTheme(BaseChart chart, StringBuilder sb)        {            var theme = chart.theme;            theme.CheckWarning(sb);        }        private static void CheckTitle(BaseChart chart, StringBuilder sb)        {            // foreach (var title in chart.titles)            // {            //     if (!title.show) return;            //     if (string.IsNullOrEmpty(title.text)) sb.AppendFormat("warning:title{0}->text is null\n", title.index);            //     if (IsColorAlphaZero(title.textStyle.color))            //         sb.AppendFormat("warning:title{0}->textStyle->color alpha is 0\n", title.index);            //     if (IsColorAlphaZero(title.subTextStyle.color))            //         sb.AppendFormat("warning:title{0}->subTextStyle->color alpha is 0\n", title.index);            // }        }        private static void CheckLegend(BaseChart chart, StringBuilder sb) { }        private static void CheckGrid(BaseChart chart, StringBuilder sb) { }        private static void CheckSerie(BaseChart chart, StringBuilder sb)        {            var allDataIsEmpty = true;            var allDataIsZero = true;            var allSerieIsHide = true;            var set = new HashSet<int>();            foreach (var serie in chart.series)            {                if (serie.show) allSerieIsHide = false;                if (serie.dataCount > 0)                {                    allDataIsEmpty = false;                    var dataIndexError = 0;                    set.Clear();                    for (int i = 0; i < serie.dataCount; i++)                    {                        var serieData = serie.GetSerieData(i);                        if (set.Contains(serieData.index))                        {                            dataIndexError++;                        }                        else                        {                            set.Add(serieData.index);                        }                        for (int j = 1; j < serieData.data.Count; j++)                        {                            if (serieData.GetData(j) != 0)                            {                                allDataIsZero = false;                                break;                            }                        }                    }                    var dataCount = serie.GetSerieData(0).data.Count;                    if (serie.showDataDimension > 1 && serie.showDataDimension != dataCount)                    {                        sb.AppendFormat("warning:serie {0} serieData.data.count[{1}] not match showDataDimension[{2}]\n", serie.index, dataCount, serie.showDataDimension);                    }                    if (dataIndexError > 0)                    {                        sb.AppendFormat("error: data index error, count={0}/{1}\n", dataIndexError, serie.dataCount);                    }                }                else                {                    sb.AppendFormat("warning:serie {0} no data\n", serie.index);                }                if (IsColorAlphaZero(serie.itemStyle.color))                    sb.AppendFormat("warning:serie {0} itemStyle->color alpha is 0\n", serie.index);                if (serie.itemStyle.opacity == 0)                    sb.AppendFormat("warning:serie {0} itemStyle->opacity is 0\n", serie.index);                if (serie.itemStyle.borderWidth != 0 && IsColorAlphaZero(serie.itemStyle.borderColor))                    sb.AppendFormat("warning:serie {0} itemStyle->borderColor alpha is 0\n", serie.index);                if (serie is Line)                {                    if (serie.lineStyle.opacity == 0)                        sb.AppendFormat("warning:serie {0} lineStyle->opacity is 0\n", serie.index);                    if (IsColorAlphaZero(serie.lineStyle.color))                        sb.AppendFormat("warning:serie {0} lineStyle->color alpha is 0\n", serie.index);                }                else if (serie is Pie)                {                    if (serie.radius.Length >= 2 && serie.radius[1] == 0)                        sb.AppendFormat("warning:serie {0} radius[1] is 0\n", serie.index);                }                else if (serie is Scatter || serie is EffectScatter)                {                    if (!serie.symbol.show)                        sb.AppendFormat("warning:serie {0} symbol type is None\n", serie.index);                }            }            if (allDataIsEmpty) sb.Append("warning:all serie data is empty\n");            if (!allDataIsEmpty && allDataIsZero) sb.Append("warning:all serie data is 0\n");            if (allSerieIsHide) sb.Append("warning:all serie is hide\n");        }    }}
 |