[optimize][serie] optimize index of serieData

This commit is contained in:
monitor1394
2022-08-08 07:43:19 +08:00
parent e7f19e72a5
commit 19914586ae
7 changed files with 64 additions and 7 deletions

View File

@@ -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
{

View File

@@ -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));

View File

@@ -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)
{

View File

@@ -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>