mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-30 05:08:48 +00:00
Optimized SerieData to support tree data
This commit is contained in:
@@ -402,6 +402,7 @@ namespace XCharts
|
|||||||
{
|
{
|
||||||
EditorGUI.indentLevel += 2;
|
EditorGUI.indentLevel += 2;
|
||||||
var m_Ignore = serieData.FindPropertyRelative("m_Ignore");
|
var m_Ignore = serieData.FindPropertyRelative("m_Ignore");
|
||||||
|
var m_Id = serieData.FindPropertyRelative("m_Id");
|
||||||
var m_EnableIcon = serieData.FindPropertyRelative("m_EnableIconStyle");
|
var m_EnableIcon = serieData.FindPropertyRelative("m_EnableIconStyle");
|
||||||
var m_Icon = serieData.FindPropertyRelative("m_IconStyle");
|
var m_Icon = serieData.FindPropertyRelative("m_IconStyle");
|
||||||
var m_EnableLabel = serieData.FindPropertyRelative("m_EnableLabel");
|
var m_EnableLabel = serieData.FindPropertyRelative("m_EnableLabel");
|
||||||
@@ -414,6 +415,8 @@ namespace XCharts
|
|||||||
var m_Symbol = serieData.FindPropertyRelative("m_Symbol");
|
var m_Symbol = serieData.FindPropertyRelative("m_Symbol");
|
||||||
EditorGUI.PropertyField(drawRect, m_Ignore);
|
EditorGUI.PropertyField(drawRect, m_Ignore);
|
||||||
AddHeight(EditorGUI.GetPropertyHeight(m_Ignore));
|
AddHeight(EditorGUI.GetPropertyHeight(m_Ignore));
|
||||||
|
EditorGUI.PropertyField(drawRect, m_Id);
|
||||||
|
AddHeight(EditorGUI.GetPropertyHeight(m_Id));
|
||||||
EditorGUI.PropertyField(drawRect, m_Icon);
|
EditorGUI.PropertyField(drawRect, m_Icon);
|
||||||
ChartEditorHelper.MakeBool(drawRect, m_EnableIcon, 1, "(enable)");
|
ChartEditorHelper.MakeBool(drawRect, m_EnableIcon, 1, "(enable)");
|
||||||
AddHeight(EditorGUI.GetPropertyHeight(m_Icon));
|
AddHeight(EditorGUI.GetPropertyHeight(m_Icon));
|
||||||
|
|||||||
@@ -363,6 +363,7 @@ namespace XCharts
|
|||||||
[NonSerialized] internal bool m_NeedUpdateFilterData;
|
[NonSerialized] internal bool m_NeedUpdateFilterData;
|
||||||
[NonSerialized] internal List<SerieData> m_FilterData = new List<SerieData>();
|
[NonSerialized] internal List<SerieData> m_FilterData = new List<SerieData>();
|
||||||
[NonSerialized] internal List<SerieData> m_SortedData = new List<SerieData>();
|
[NonSerialized] internal List<SerieData> m_SortedData = new List<SerieData>();
|
||||||
|
[NonSerialized] internal List<SerieData> m_RootData = new List<SerieData>();
|
||||||
[NonSerialized] private Dictionary<int, List<Vector3>> m_UpSmoothPoints = new Dictionary<int, List<Vector3>>();
|
[NonSerialized] private Dictionary<int, List<Vector3>> m_UpSmoothPoints = new Dictionary<int, List<Vector3>>();
|
||||||
[NonSerialized] private Dictionary<int, List<Vector3>> m_DownSmoothPoints = new Dictionary<int, List<Vector3>>();
|
[NonSerialized] private Dictionary<int, List<Vector3>> m_DownSmoothPoints = new Dictionary<int, List<Vector3>>();
|
||||||
[NonSerialized] private List<Vector3> m_DataPoints = new List<Vector3>();
|
[NonSerialized] private List<Vector3> m_DataPoints = new List<Vector3>();
|
||||||
@@ -1190,6 +1191,7 @@ namespace XCharts
|
|||||||
public float runtimeHeight { get; internal set; }
|
public float runtimeHeight { get; internal set; }
|
||||||
public Rect runtimeRect { get; internal set; }
|
public Rect runtimeRect { get; internal set; }
|
||||||
public List<SerieData> runtimeSortedData { get { return m_SortedData; } }
|
public List<SerieData> runtimeSortedData { get { return m_SortedData; } }
|
||||||
|
public List<SerieData> rootData { get { return m_RootData; } }
|
||||||
public bool nameDirty { get { return m_NameDirty; } }
|
public bool nameDirty { get { return m_NameDirty; } }
|
||||||
|
|
||||||
private void SetNameDirty()
|
private void SetNameDirty()
|
||||||
@@ -1530,6 +1532,32 @@ namespace XCharts
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SerieData AddChildData(SerieData parent, double value, string name = null)
|
||||||
|
{
|
||||||
|
var serieData = new SerieData();
|
||||||
|
serieData.name = name;
|
||||||
|
serieData.index = m_Data.Count;
|
||||||
|
serieData.data = new List<double>() { parent.children.Count, value };
|
||||||
|
serieData.parentIndex = parent.index;
|
||||||
|
serieData.runtimeParent = parent;
|
||||||
|
AddSerieDataHeadOrTail(serieData);
|
||||||
|
parent.children.Add(serieData.index);
|
||||||
|
parent.runtimeChildren.Add(serieData);
|
||||||
|
return serieData;
|
||||||
|
}
|
||||||
|
public SerieData AddChildData(SerieData parent, List<double> value, string name = null)
|
||||||
|
{
|
||||||
|
var serieData = new SerieData();
|
||||||
|
serieData.name = name;
|
||||||
|
serieData.index = m_Data.Count;
|
||||||
|
serieData.data = new List<double>(value);
|
||||||
|
serieData.parentIndex = parent.index;
|
||||||
|
serieData.runtimeParent = parent;
|
||||||
|
AddSerieDataHeadOrTail(serieData);
|
||||||
|
parent.children.Add(serieData.index);
|
||||||
|
parent.runtimeChildren.Add(serieData);
|
||||||
|
return serieData;
|
||||||
|
}
|
||||||
|
|
||||||
private void CheckMaxCache()
|
private void CheckMaxCache()
|
||||||
{
|
{
|
||||||
@@ -1646,23 +1674,23 @@ namespace XCharts
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SerieData GetSerieData(string uuid, DataZoom dataZoom = null)
|
public SerieData GetSerieData(string id, DataZoom dataZoom = null)
|
||||||
{
|
{
|
||||||
var data = GetDataList(dataZoom);
|
var data = GetDataList(dataZoom);
|
||||||
foreach (var serieData in data)
|
foreach (var serieData in data)
|
||||||
{
|
{
|
||||||
var target = GetSerieData(serieData, uuid);
|
var target = GetSerieData(serieData, id);
|
||||||
if (target != null) return target;
|
if (target != null) return target;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SerieData GetSerieData(SerieData parent, string uuid)
|
public SerieData GetSerieData(SerieData parent, string id)
|
||||||
{
|
{
|
||||||
if (uuid.Equals(parent.uuid)) return parent;
|
if (id.Equals(parent.id)) return parent;
|
||||||
foreach (var child in parent.children)
|
foreach (var child in parent.children)
|
||||||
{
|
{
|
||||||
var data = GetSerieData(child, uuid);
|
var data = GetSerieData(GetSerieData(child), id);
|
||||||
if (data != null)
|
if (data != null)
|
||||||
{
|
{
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
@@ -18,8 +18,10 @@ namespace XCharts
|
|||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class SerieData : SubComponent
|
public class SerieData : SubComponent
|
||||||
{
|
{
|
||||||
|
[SerializeField] private int m_Index;
|
||||||
|
[SerializeField] private int m_ParentIndex = -1;
|
||||||
[SerializeField] private string m_Name;
|
[SerializeField] private string m_Name;
|
||||||
[SerializeField] private string m_Uuid;
|
[SerializeField] private string m_Id;
|
||||||
[SerializeField] private bool m_Selected;
|
[SerializeField] private bool m_Selected;
|
||||||
[SerializeField] private bool m_Ignore = false;
|
[SerializeField] private bool m_Ignore = false;
|
||||||
[SerializeField] private float m_Radius;
|
[SerializeField] private float m_Radius;
|
||||||
@@ -34,14 +36,15 @@ namespace XCharts
|
|||||||
[SerializeField] private bool m_EnableSymbol = false;
|
[SerializeField] private bool m_EnableSymbol = false;
|
||||||
[SerializeField] private SerieSymbol m_Symbol = new SerieSymbol();
|
[SerializeField] private SerieSymbol m_Symbol = new SerieSymbol();
|
||||||
[SerializeField] private List<double> m_Data = new List<double>();
|
[SerializeField] private List<double> m_Data = new List<double>();
|
||||||
[SerializeField] private List<SerieData> m_Children = new List<SerieData>();
|
[SerializeField] private List<int> m_Children = new List<int>();
|
||||||
|
|
||||||
public ChartLabel labelObject { get; set; }
|
public ChartLabel labelObject { get; set; }
|
||||||
|
|
||||||
private bool m_Show = true;
|
private bool m_Show = true;
|
||||||
private float m_RtPieOutsideRadius;
|
private float m_RtPieOutsideRadius;
|
||||||
|
|
||||||
public int index { get; set; }
|
public int index { get { return m_Index; } set { m_Index = value; } }
|
||||||
|
public int parentIndex { get { return m_ParentIndex; } set { m_ParentIndex = value; } }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// the name of data item.
|
/// the name of data item.
|
||||||
/// 数据项名称。
|
/// 数据项名称。
|
||||||
@@ -50,7 +53,7 @@ namespace XCharts
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据项的唯一id。唯一id不是必须设置的。
|
/// 数据项的唯一id。唯一id不是必须设置的。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string uuid { get { return m_Uuid; } set { m_Uuid = value; } }
|
public string id { get { return m_Id; } set { m_Id = value; } }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据项图例名称。当数据项名称不为空时,图例名称即为系列名称;反之则为索引index。
|
/// 数据项图例名称。当数据项名称不为空时,图例名称即为系列名称;反之则为索引index。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -119,7 +122,7 @@ namespace XCharts
|
|||||||
/// 可指定任意维数的数值列表。
|
/// 可指定任意维数的数值列表。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<double> data { get { return m_Data; } set { m_Data = value; } }
|
public List<double> data { get { return m_Data; } set { m_Data = value; } }
|
||||||
public List<SerieData> children { get { return m_Children; } set { m_Children = value; } }
|
public List<int> children { get { return m_Children; } set { m_Children = value; } }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// [default:true] Whether the data item is showed.
|
/// [default:true] Whether the data item is showed.
|
||||||
/// 该数据项是否要显示。
|
/// 该数据项是否要显示。
|
||||||
@@ -190,14 +193,19 @@ namespace XCharts
|
|||||||
public Vector3 runtiemPieOffsetCenter { get; set; }
|
public Vector3 runtiemPieOffsetCenter { get; set; }
|
||||||
public float runtimeStackHig { get; set; }
|
public float runtimeStackHig { get; set; }
|
||||||
public Image runtimeSymbol { get; set; }
|
public Image runtimeSymbol { get; set; }
|
||||||
|
public List<SerieData> runtimeChildren { get { return m_RuntimeChildren; } }
|
||||||
|
|
||||||
private List<double> m_PreviousData = new List<double>();
|
private List<double> m_PreviousData = new List<double>();
|
||||||
private List<float> m_DataUpdateTime = new List<float>();
|
private List<float> m_DataUpdateTime = new List<float>();
|
||||||
private List<bool> m_DataUpdateFlag = new List<bool>();
|
private List<bool> m_DataUpdateFlag = new List<bool>();
|
||||||
private List<Vector2> m_PolygonPoints = new List<Vector2>();
|
private List<Vector2> m_PolygonPoints = new List<Vector2>();
|
||||||
|
[System.NonSerialized]
|
||||||
|
private List<SerieData> m_RuntimeChildren = new List<SerieData>();
|
||||||
|
|
||||||
public void Reset()
|
public void Reset()
|
||||||
{
|
{
|
||||||
index = 0;
|
index = 0;
|
||||||
|
m_ParentIndex = -1;
|
||||||
labelObject = null;
|
labelObject = null;
|
||||||
highlighted = false;
|
highlighted = false;
|
||||||
m_Name = string.Empty;
|
m_Name = string.Empty;
|
||||||
@@ -212,6 +220,8 @@ namespace XCharts
|
|||||||
m_Radius = 0;
|
m_Radius = 0;
|
||||||
m_Data.Clear();
|
m_Data.Clear();
|
||||||
m_PreviousData.Clear();
|
m_PreviousData.Clear();
|
||||||
|
m_PolygonPoints.Clear();
|
||||||
|
m_RuntimeChildren.Clear();
|
||||||
m_DataUpdateTime.Clear();
|
m_DataUpdateTime.Clear();
|
||||||
m_DataUpdateFlag.Clear();
|
m_DataUpdateFlag.Clear();
|
||||||
m_IconStyle.Reset();
|
m_IconStyle.Reset();
|
||||||
@@ -220,25 +230,6 @@ namespace XCharts
|
|||||||
m_Emphasis.Reset();
|
m_Emphasis.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
public SerieData AddChildData(double value, string name = null)
|
|
||||||
{
|
|
||||||
var serieData = new SerieData();
|
|
||||||
serieData.name = name;
|
|
||||||
serieData.data = new List<double>() { children.Count, value };
|
|
||||||
serieData.runtimeParent = this;
|
|
||||||
children.Add(serieData);
|
|
||||||
return serieData;
|
|
||||||
}
|
|
||||||
public SerieData AddChildData(List<double> value, string name = null)
|
|
||||||
{
|
|
||||||
var serieData = new SerieData();
|
|
||||||
serieData.name = name;
|
|
||||||
serieData.data = new List<double>(value);
|
|
||||||
serieData.runtimeParent = this;
|
|
||||||
children.Add(serieData);
|
|
||||||
return serieData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double GetData(int index, bool inverse = false)
|
public double GetData(int index, bool inverse = false)
|
||||||
{
|
{
|
||||||
if (index >= 0 && index < m_Data.Count)
|
if (index >= 0 && index < m_Data.Count)
|
||||||
|
|||||||
@@ -570,9 +570,9 @@ namespace XCharts
|
|||||||
item.SetIconActive(iconStyle.show);
|
item.SetIconActive(iconStyle.show);
|
||||||
serieData.labelObject = item;
|
serieData.labelObject = item;
|
||||||
|
|
||||||
foreach (var data in serieData.children)
|
foreach (var dataIndex in serieData.children)
|
||||||
{
|
{
|
||||||
AddSerieLabel(serie, data, ref count);
|
AddSerieLabel(serie, serie.GetSerieData(dataIndex), ref count);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user