增加SerieDataignore可忽略当前数据项

This commit is contained in:
monitor1394
2021-04-28 19:28:05 +08:00
parent 3c58396c1f
commit bf82904e66
11 changed files with 34 additions and 18 deletions

View File

@@ -34,6 +34,7 @@
## Latest
* (2021.04.28) 增加`SerieData``ignore`可忽略当前数据项
* (2021.04.28) 修复`DataZoom``AxisLabel`显示不准确的问题 #138
* (2021.04.26) 修复运行时动态创建图表会异常的问题 #137
* (2021.04.26) 增加`BarChart`绘制渐变边框的支持

View File

@@ -393,6 +393,7 @@ namespace XCharts
if (showDetail)
{
EditorGUI.indentLevel += 2;
var m_Ignore = serieData.FindPropertyRelative("m_Ignore");
var m_Icon = serieData.FindPropertyRelative("m_IconStyle");
var m_EnableLabel = serieData.FindPropertyRelative("m_EnableLabel");
var m_Label = serieData.FindPropertyRelative("m_Label");
@@ -402,6 +403,8 @@ namespace XCharts
var m_Emphasis = serieData.FindPropertyRelative("m_Emphasis");
var m_EnableSymbol = serieData.FindPropertyRelative("m_EnableSymbol");
var m_Symbol = serieData.FindPropertyRelative("m_Symbol");
EditorGUI.PropertyField(drawRect, m_Ignore);
AddHeight(EditorGUI.GetPropertyHeight(m_Ignore));
EditorGUI.PropertyField(drawRect, m_Icon);
AddHeight(EditorGUI.GetPropertyHeight(m_Icon));
EditorGUI.PropertyField(drawRect, m_Symbol);

View File

@@ -1704,19 +1704,22 @@ namespace XCharts
}
}
public bool IsIgnoreIndex(int index, int dimension)
public bool IsIgnoreIndex(int index, int dimension = 1)
{
if (m_Ignore)
var serieData = GetSerieData(index);
if (serieData != null)
{
var serieData = GetSerieData(index);
if (serieData != null)
{
return IsIgnoreValue(serieData.GetData(dimension));
}
return IsIgnoreValue(serieData, dimension);
}
return false;
}
public bool IsIgnoreValue(SerieData serieData, int dimension = 1)
{
if (serieData.ignore) return true;
return IsIgnoreValue(serieData.GetData(dimension));
}
public bool IsIgnoreValue(float value)
{
return m_Ignore && Mathf.Approximately(value, m_IgnoreValue);

View File

@@ -19,6 +19,7 @@ namespace XCharts
{
[SerializeField] private string m_Name;
[SerializeField] private bool m_Selected;
[SerializeField] private bool m_Ignore = false;
[SerializeField] private float m_Radius;
[SerializeField] private IconStyle m_IconStyle = new IconStyle();
[SerializeField] private bool m_EnableLabel = false;
@@ -94,6 +95,14 @@ namespace XCharts
/// </summary>
public SerieSymbol symbol { get { return m_Symbol; } set { m_Symbol = value; } }
/// <summary>
/// 是否忽略数据。当为 true 时,数据不进行绘制。
/// </summary>
public bool ignore
{
get { return m_Ignore; }
set { if (PropertyUtil.SetStruct(ref m_Ignore, value)) SetVerticesDirty(); }
}
/// <summary>
/// An arbitrary dimension data list of data item.
/// 可指定任意维数的数值列表。
/// </summary>

View File

@@ -85,7 +85,7 @@ namespace XCharts
public static bool CanShowLabel(Serie serie, SerieData serieData, SerieLabel label, int dimesion)
{
return serie.show && serieData.canShowLabel && !serie.IsIgnoreValue(serieData.GetData(dimesion));
return serie.show && serieData.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
}
public static string GetFormatterContent(Serie serie, SerieData serieData,

View File

@@ -102,7 +102,7 @@ namespace XCharts
case SerieType.Ring:
for (int i = 0; i < serie.data.Count; i++)
{
if (serie.type == SerieType.Pie && serie.IsIgnoreValue(serie.data[i].GetData(1))) continue;
if (serie.type == SerieType.Pie && serie.IsIgnoreValue(serie.data[i])) continue;
if (string.IsNullOrEmpty(serie.data[i].name))
serieNameList.Add(ChartCached.IntToStr(i));
else if (!serieNameList.Contains(serie.data[i].name))

View File

@@ -1684,7 +1684,7 @@ namespace XCharts
var pos = serie.dataPoints[j];
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
var dimension = 1;
var isIgnore = serie.IsIgnoreIndex(j, 1);
var isIgnore = serie.IsIgnoreIndex(j);
serieData.labelObject.SetPosition(serieData.labelPosition);
serieData.labelObject.UpdateIcon(serieData.iconStyle);
if (serie.show && serieLabel.show && serieData.canShowLabel && !isIgnore)

View File

@@ -49,7 +49,7 @@ namespace XCharts
for (int i = serie.minShow; i < maxCount; i++)
{
var serieData = showData[i];
if (serie.IsIgnoreValue(serieData.GetData(1)))
if (serie.IsIgnoreValue(serieData))
{
serie.dataPoints.Add(Vector3.zero);
continue;
@@ -185,7 +185,7 @@ namespace XCharts
for (int i = serie.minShow; i < maxCount; i++)
{
var serieData = showData[i];
if (serie.IsIgnoreValue(serieData.GetData(1)))
if (serie.IsIgnoreValue(serieData))
{
serie.dataPoints.Add(Vector3.zero);
continue;

View File

@@ -37,7 +37,7 @@ namespace XCharts
for (int i = serie.minShow; i < maxCount; i++)
{
var serieData = showData[i];
if (serie.IsIgnoreValue(serieData.GetData(1)))
if (serie.IsIgnoreValue(serieData))
{
serie.dataPoints.Add(Vector3.zero);
continue;

View File

@@ -125,7 +125,7 @@ namespace XCharts
for (i = serie.minShow; i < maxCount; i += rate)
{
if (i == maxCount - 1) includeLastData = true;
if (serie.IsIgnoreValue(showData[i].GetData(1)))
if (serie.IsIgnoreValue(showData[i]))
{
serie.dataPoints.Add(Vector3.zero);
showData[i].runtimeStackHig = 0;
@@ -146,7 +146,7 @@ namespace XCharts
if (!includeLastData)
{
i = maxCount - 1;
if (serie.IsIgnoreValue(showData[i].GetData(1)))
if (serie.IsIgnoreValue(showData[i]))
{
serie.dataPoints.Add(Vector3.zero);
showData[i].runtimeStackHig = 0;
@@ -179,7 +179,7 @@ namespace XCharts
if (serie.minShow > 0 && serie.minShow < showData.Count)
{
i = serie.minShow - 1;
if (serie.IsIgnoreValue(showData[i].GetData(1)))
if (serie.IsIgnoreValue(showData[i]))
{
serie.dataPoints.Add(Vector3.zero);
showData[i].runtimeStackHig = 0;
@@ -197,7 +197,7 @@ namespace XCharts
if (serie.maxShow > 0 && serie.maxShow < showData.Count)
{
i = serie.maxShow;
if (serie.IsIgnoreValue(showData[i].GetData(1)))
if (serie.IsIgnoreValue(showData[i]))
{
serie.dataPoints.Add(Vector3.zero);
showData[i].runtimeStackHig = 0;

View File

@@ -59,7 +59,7 @@ namespace XCharts
for (int n = 0; n < data.Count; n++)
{
var serieData = data[n];
if (!serieData.canShowLabel || serie.IsIgnoreValue(serieData.GetData(1)))
if (!serieData.canShowLabel || serie.IsIgnoreValue(serieData))
{
serieData.SetLabelActive(false);
continue;