mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-23 09:20:08 +00:00
[optimize][serie] optimize index of serieData
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -67,26 +68,35 @@ namespace XCharts.Runtime
|
||||
// }
|
||||
}
|
||||
|
||||
private static void CheckLegend(BaseChart chart, StringBuilder sb)
|
||||
{ }
|
||||
private static void CheckLegend(BaseChart chart, StringBuilder sb) { }
|
||||
|
||||
private static void CheckGrid(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)
|
||||
@@ -101,6 +111,10 @@ namespace XCharts.Runtime
|
||||
{
|
||||
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
|
||||
{
|
||||
|
||||
@@ -61,6 +61,18 @@ namespace XCharts.Runtime
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重置serie的数据项索引。避免数据项索引异常。
|
||||
/// </summary>
|
||||
/// <param name="serieIndex"></param>
|
||||
public bool ResetDataIndex(int serieIndex)
|
||||
{
|
||||
var serie = GetSerie(serieIndex);
|
||||
if (serie != null)
|
||||
return serie.ResetDataIndex();
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool CanAddSerie<T>() where T : Serie
|
||||
{
|
||||
return CanAddSerie(typeof(T));
|
||||
|
||||
@@ -57,6 +57,7 @@ namespace XCharts.Runtime
|
||||
m_LastCheckContextFlag = needCheck;
|
||||
var themeSymbolSize = chart.theme.serie.lineSymbolSize;
|
||||
var needInteract = false;
|
||||
serie.ResetDataIndex();
|
||||
if (m_LegendEnter)
|
||||
{
|
||||
serie.context.pointerEnter = true;
|
||||
@@ -112,7 +113,9 @@ namespace XCharts.Runtime
|
||||
}
|
||||
}
|
||||
if (lastIndex != serie.context.pointerItemDataIndex)
|
||||
{
|
||||
needInteract = true;
|
||||
}
|
||||
}
|
||||
if (needInteract)
|
||||
{
|
||||
|
||||
@@ -1159,6 +1159,23 @@ namespace XCharts.Runtime
|
||||
serieData.interact.Reset();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重置数据项索引。避免部分数据项的索引异常。
|
||||
/// </summary>
|
||||
public bool ResetDataIndex()
|
||||
{
|
||||
var flag = false;
|
||||
for (int i = 0; i < m_Data.Count; i++)
|
||||
{
|
||||
if (m_Data[i].index != i)
|
||||
{
|
||||
m_Data[i].index = i;
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清空所有数据
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user