Geen omschrijving
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CheckHelper.cs 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using System.Collections.Generic;
  2. using System.Text;
  3. using UnityEngine;
  4. namespace XCharts.Runtime
  5. {
  6. public static class CheckHelper
  7. {
  8. private static bool IsColorAlphaZero(Color color)
  9. {
  10. return !ChartHelper.IsClearColor(color) && color.a == 0;
  11. }
  12. public static string CheckChart(BaseGraph chart)
  13. {
  14. if (chart is BaseChart) return CheckChart((BaseChart) chart);
  15. else return string.Empty;
  16. }
  17. public static string CheckChart(BaseChart chart)
  18. {
  19. var sb = ChartHelper.sb;
  20. sb.Length = 0;
  21. CheckName(chart, sb);
  22. CheckSize(chart, sb);
  23. CheckTheme(chart, sb);
  24. CheckTitle(chart, sb);
  25. CheckLegend(chart, sb);
  26. CheckGrid(chart, sb);
  27. CheckSerie(chart, sb);
  28. return sb.ToString();
  29. }
  30. private static void CheckName(BaseChart chart, StringBuilder sb)
  31. {
  32. if (string.IsNullOrEmpty(chart.chartName)) return;
  33. var list = XChartsMgr.GetCharts(chart.chartName);
  34. if (list.Count > 1)
  35. {
  36. sb.AppendFormat("warning:chart name is repeated: {0}\n", chart.chartName);
  37. }
  38. }
  39. private static void CheckSize(BaseChart chart, StringBuilder sb)
  40. {
  41. if (chart.chartWidth == 0 || chart.chartHeight == 0)
  42. {
  43. sb.Append("warning:chart width or height is 0\n");
  44. }
  45. }
  46. private static void CheckTheme(BaseChart chart, StringBuilder sb)
  47. {
  48. var theme = chart.theme;
  49. theme.CheckWarning(sb);
  50. }
  51. private static void CheckTitle(BaseChart chart, StringBuilder sb)
  52. {
  53. // foreach (var title in chart.titles)
  54. // {
  55. // if (!title.show) return;
  56. // if (string.IsNullOrEmpty(title.text)) sb.AppendFormat("warning:title{0}->text is null\n", title.index);
  57. // if (IsColorAlphaZero(title.textStyle.color))
  58. // sb.AppendFormat("warning:title{0}->textStyle->color alpha is 0\n", title.index);
  59. // if (IsColorAlphaZero(title.subTextStyle.color))
  60. // sb.AppendFormat("warning:title{0}->subTextStyle->color alpha is 0\n", title.index);
  61. // }
  62. }
  63. private static void CheckLegend(BaseChart chart, StringBuilder sb) { }
  64. private static void CheckGrid(BaseChart chart, StringBuilder sb) { }
  65. private static void CheckSerie(BaseChart chart, StringBuilder sb)
  66. {
  67. var allDataIsEmpty = true;
  68. var allDataIsZero = true;
  69. var allSerieIsHide = true;
  70. var set = new HashSet<int>();
  71. foreach (var serie in chart.series)
  72. {
  73. if (serie.show) allSerieIsHide = false;
  74. if (serie.dataCount > 0)
  75. {
  76. allDataIsEmpty = false;
  77. var dataIndexError = 0;
  78. set.Clear();
  79. for (int i = 0; i < serie.dataCount; i++)
  80. {
  81. var serieData = serie.GetSerieData(i);
  82. if (set.Contains(serieData.index))
  83. {
  84. dataIndexError++;
  85. }
  86. else
  87. {
  88. set.Add(serieData.index);
  89. }
  90. for (int j = 1; j < serieData.data.Count; j++)
  91. {
  92. if (serieData.GetData(j) != 0)
  93. {
  94. allDataIsZero = false;
  95. break;
  96. }
  97. }
  98. }
  99. var dataCount = serie.GetSerieData(0).data.Count;
  100. if (serie.showDataDimension > 1 && serie.showDataDimension != dataCount)
  101. {
  102. sb.AppendFormat("warning:serie {0} serieData.data.count[{1}] not match showDataDimension[{2}]\n", serie.index, dataCount, serie.showDataDimension);
  103. }
  104. if (dataIndexError > 0)
  105. {
  106. sb.AppendFormat("error: data index error, count={0}/{1}\n", dataIndexError, serie.dataCount);
  107. }
  108. }
  109. else
  110. {
  111. sb.AppendFormat("warning:serie {0} no data\n", serie.index);
  112. }
  113. if (IsColorAlphaZero(serie.itemStyle.color))
  114. sb.AppendFormat("warning:serie {0} itemStyle->color alpha is 0\n", serie.index);
  115. if (serie.itemStyle.opacity == 0)
  116. sb.AppendFormat("warning:serie {0} itemStyle->opacity is 0\n", serie.index);
  117. if (serie.itemStyle.borderWidth != 0 && IsColorAlphaZero(serie.itemStyle.borderColor))
  118. sb.AppendFormat("warning:serie {0} itemStyle->borderColor alpha is 0\n", serie.index);
  119. if (serie is Line)
  120. {
  121. if (serie.lineStyle.opacity == 0)
  122. sb.AppendFormat("warning:serie {0} lineStyle->opacity is 0\n", serie.index);
  123. if (IsColorAlphaZero(serie.lineStyle.color))
  124. sb.AppendFormat("warning:serie {0} lineStyle->color alpha is 0\n", serie.index);
  125. }
  126. else if (serie is Pie)
  127. {
  128. if (serie.radius.Length >= 2 && serie.radius[1] == 0)
  129. sb.AppendFormat("warning:serie {0} radius[1] is 0\n", serie.index);
  130. }
  131. else if (serie is Scatter || serie is EffectScatter)
  132. {
  133. if (!serie.symbol.show)
  134. sb.AppendFormat("warning:serie {0} symbol type is None\n", serie.index);
  135. }
  136. }
  137. if (allDataIsEmpty) sb.Append("warning:all serie data is empty\n");
  138. if (!allDataIsEmpty && allDataIsZero) sb.Append("warning:all serie data is 0\n");
  139. if (allSerieIsHide) sb.Append("warning:all serie is hide\n");
  140. }
  141. }
  142. }