9 using System.Collections.Generic;
11 using UnityEngine.Serialization;
260 [System.Serializable]
263 [SerializeField]
private bool m_Show =
true;
264 [SerializeField]
private SerieType m_Type;
265 [SerializeField]
private string m_Name;
266 [SerializeField]
private string m_Stack;
267 [SerializeField]
private int m_XAxisIndex = 0;
268 [SerializeField]
private int m_YAxisIndex = 0;
269 [SerializeField]
private int m_RadarIndex = 0;
270 [SerializeField]
private int m_VesselIndex = 0;
271 [SerializeField]
private int m_PolarIndex = 0;
272 [SerializeField]
protected int m_MinShow;
273 [SerializeField]
protected int m_MaxShow;
274 [SerializeField]
protected int m_MaxCache;
278 [SerializeField]
private float m_SampleDist = 0;
280 [SerializeField]
private float m_SampleAverage = 0;
286 [SerializeField]
private bool m_BarPercentStack =
false;
287 [SerializeField]
private float m_BarWidth = 0.6f;
288 [SerializeField]
private float m_BarGap = 0.3f;
289 [SerializeField]
private float m_BarCategoryGap = 0.2f;
290 [SerializeField]
private float m_BarZebraWidth = 4f;
291 [SerializeField]
private float m_BarZebraGap = 2f;
293 [SerializeField]
private float m_Min;
294 [SerializeField]
private float m_Max;
295 [SerializeField]
private float m_MinSize = 0f;
296 [SerializeField]
private float m_MaxSize = 1f;
297 [SerializeField]
private float m_StartAngle;
298 [SerializeField]
private float m_EndAngle;
299 [SerializeField]
private float m_MinAngle;
300 [SerializeField]
private bool m_Clockwise =
true;
301 [FormerlySerializedAs(
"m_ArcShaped")]
302 [SerializeField]
private bool m_RoundCap;
303 [SerializeField]
private float m_RingGap = 10f;
305 [SerializeField]
private int m_SplitNumber;
310 [SerializeField]
private bool m_ClickOffset =
true;
312 [FormerlySerializedAs(
"m_Gap")]
313 [SerializeField]
private float m_Space;
314 [SerializeField]
private float[] m_Center =
new float[2] { 0.5f, 0.45f };
315 [SerializeField]
private float[] m_Radius =
new float[2] { 0, 80 };
324 [SerializeField] [Range(1, 10)]
private int m_ShowDataDimension;
325 [SerializeField]
private bool m_ShowDataName;
326 [SerializeField]
private bool m_ShowDataIcon;
327 [SerializeField]
private bool m_Clip =
false;
328 [SerializeField]
private bool m_Ignore =
false;
329 [SerializeField]
private double m_IgnoreValue = 0;
330 [SerializeField]
private bool m_IgnoreLineBreak =
false;
331 [SerializeField]
private bool m_ShowAsPositiveNumber =
false;
332 [SerializeField]
private bool m_Large =
true;
333 [SerializeField]
private int m_LargeThreshold = 200;
334 [SerializeField]
private bool m_AvoidLabelOverlap =
false;
335 [SerializeField]
private float m_WaveHeight = 10f;
336 [SerializeField]
private float m_WaveLength = 20f;
337 [SerializeField]
private float m_WaveSpeed = 5f;
338 [SerializeField]
private float m_WaveOffset = 0f;
342 [SerializeField]
private Orient m_Orient =
Orient.Vertical;
343 [SerializeField]
private Align m_Align =
Align.Center;
344 [SerializeField]
private float m_Left;
345 [SerializeField]
private float m_Right;
346 [SerializeField]
private float m_Top;
347 [SerializeField]
private float m_Bottom;
348 [SerializeField]
private bool m_InsertDataToHead;
349 [SerializeField]
private bool m_CustomBool1;
350 [SerializeField]
private bool m_CustomBool2;
351 [SerializeField]
private int m_CustomInt1;
352 [SerializeField]
private int m_CustomInt2;
353 [SerializeField]
private float m_CustomFloat1;
354 [SerializeField]
private float m_CustomFloat2;
356 [SerializeField]
private List<SerieData> m_Data =
new List<SerieData>();
358 [NonSerialized]
internal int m_FilterStart;
359 [NonSerialized]
internal int m_FilterEnd;
360 [NonSerialized]
internal double m_FilterStartValue;
361 [NonSerialized]
internal double m_FilterEndValue;
362 [NonSerialized]
internal int m_FilterMinShow;
363 [NonSerialized]
internal bool m_NeedUpdateFilterData;
364 [NonSerialized]
internal List<SerieData> m_FilterData =
new List<SerieData>();
365 [NonSerialized]
internal List<SerieData> m_SortedData =
new List<SerieData>();
366 [NonSerialized]
internal List<SerieData> m_RootData =
new List<SerieData>();
367 [NonSerialized]
private Dictionary<int, List<Vector3>> m_UpSmoothPoints =
new Dictionary<int, List<Vector3>>();
368 [NonSerialized]
private Dictionary<int, List<Vector3>> m_DownSmoothPoints =
new Dictionary<int, List<Vector3>>();
369 [NonSerialized]
private List<Vector3> m_DataPoints =
new List<Vector3>();
370 [NonSerialized]
private bool m_NameDirty;
378 get {
return m_Show; }
379 set {
if (PropertyUtil.SetStruct(ref m_Show, value)) { SetVerticesDirty(); SetNameDirty(); } }
387 get {
return m_Type; }
388 set {
if (PropertyUtil.SetStruct(ref m_Type, value)) SetVerticesDirty(); }
396 get {
return m_Name; }
397 set {
if (PropertyUtil.SetClass(ref m_Name, value)) { SetVerticesDirty(); SetNameDirty(); } }
410 get {
return m_Stack; }
411 set {
if (PropertyUtil.SetClass(ref m_Stack, value)) SetVerticesDirty(); }
419 get {
return m_XAxisIndex; }
420 set {
if (PropertyUtil.SetStruct(ref m_XAxisIndex, value)) SetVerticesDirty(); }
428 get {
return m_YAxisIndex; }
429 set {
if (PropertyUtil.SetStruct(ref m_YAxisIndex, value)) SetVerticesDirty(); }
437 get {
return m_RadarIndex; }
438 set {
if (PropertyUtil.SetStruct(ref m_RadarIndex, value)) SetVerticesDirty(); }
446 get {
return m_VesselIndex; }
447 set {
if (PropertyUtil.SetStruct(ref m_VesselIndex, value)) SetVerticesDirty(); }
455 get {
return m_PolarIndex; }
456 set {
if (PropertyUtil.SetStruct(ref m_PolarIndex, value)) SetVerticesDirty(); }
464 get {
return m_MinShow; }
465 set {
if (PropertyUtil.SetStruct(ref m_MinShow, value < 0 ? 0 : value)) { SetVerticesDirty(); } }
473 get {
return m_MaxShow; }
474 set {
if (PropertyUtil.SetStruct(ref m_MaxShow, value < 0 ? 0 : value)) { SetVerticesDirty(); } }
484 get {
return m_MaxCache; }
485 set {
if (PropertyUtil.SetStruct(ref m_MaxCache, value < 0 ? 0 : value)) { SetVerticesDirty(); } }
493 get {
return m_AreaStyle; }
494 set {
if (PropertyUtil.SetClass(ref m_AreaStyle, value,
true)) SetVerticesDirty(); }
502 get {
return m_Symbol; }
503 set {
if (PropertyUtil.SetClass(ref m_Symbol, value,
true)) SetVerticesDirty(); }
511 get {
return m_LineType; }
512 set {
if (PropertyUtil.SetStruct(ref m_LineType, value)) SetVerticesDirty(); }
520 get {
return m_SampleDist; }
521 set {
if (PropertyUtil.SetStruct(ref m_SampleDist, value < 0 ? 0 : value)) SetVerticesDirty(); }
529 get {
return m_SampleType; }
530 set {
if (PropertyUtil.SetStruct(ref m_SampleType, value)) SetVerticesDirty(); }
537 get {
return m_SampleAverage; }
538 set {
if (PropertyUtil.SetStruct(ref m_SampleAverage, value)) SetVerticesDirty(); }
546 get {
return m_LineStyle; }
547 set {
if (PropertyUtil.SetClass(ref m_LineStyle, value,
true)) SetVerticesDirty(); }
554 get {
return m_BarType; }
555 set {
if (PropertyUtil.SetStruct(ref m_BarType, value)) SetVerticesDirty(); }
562 get {
return m_BarPercentStack; }
563 set {
if (PropertyUtil.SetStruct(ref m_BarPercentStack, value)) SetVerticesDirty(); }
571 get {
return m_BarWidth; }
572 set {
if (PropertyUtil.SetStruct(ref m_BarWidth, value)) SetVerticesDirty(); }
586 get {
return m_BarGap; }
587 set {
if (PropertyUtil.SetStruct(ref m_BarGap, value)) SetVerticesDirty(); }
599 get {
return m_BarCategoryGap; }
600 set {
if (PropertyUtil.SetStruct(ref m_BarCategoryGap, value)) SetVerticesDirty(); }
607 get {
return m_BarZebraWidth; }
608 set {
if (PropertyUtil.SetStruct(ref m_BarZebraWidth, value < 0 ? 0 : value)) SetVerticesDirty(); }
615 get {
return m_BarZebraGap; }
616 set {
if (PropertyUtil.SetStruct(ref m_BarZebraGap, value < 0 ? 0 : value)) SetVerticesDirty(); }
625 get {
return m_ClickOffset; }
626 set {
if (PropertyUtil.SetStruct(ref m_ClickOffset, value)) SetVerticesDirty(); }
634 get {
return m_RoseType; }
635 set {
if (PropertyUtil.SetStruct(ref m_RoseType, value)) SetVerticesDirty(); }
643 get {
return m_Space; }
644 set {
if (PropertyUtil.SetStruct(ref m_Space, value)) SetVerticesDirty(); }
648 get {
return m_Space; }
649 set {
if (PropertyUtil.SetStruct(ref m_Space, value)) SetVerticesDirty(); }
657 get {
return m_Center; }
658 set {
if (value !=
null && value.Length == 2) { m_Center = value; SetVerticesDirty(); } }
666 get {
return m_Radius; }
667 set {
if (value !=
null && value.Length == 2) { m_Radius = value; SetVerticesDirty(); } }
674 get {
return m_Min; }
675 set {
if (PropertyUtil.SetStruct(ref m_Min, value)) SetVerticesDirty(); }
682 get {
return m_Max; }
683 set {
if (PropertyUtil.SetStruct(ref m_Max, value)) SetVerticesDirty(); }
690 get {
return m_MinSize; }
691 set {
if (PropertyUtil.SetStruct(ref m_MinSize, value)) SetVerticesDirty(); }
698 get {
return m_MaxSize; }
699 set {
if (PropertyUtil.SetStruct(ref m_MaxSize, value)) SetVerticesDirty(); }
706 get {
return m_StartAngle; }
707 set {
if (PropertyUtil.SetStruct(ref m_StartAngle, value)) SetVerticesDirty(); }
714 get {
return m_EndAngle; }
715 set {
if (PropertyUtil.SetStruct(ref m_EndAngle, value)) SetVerticesDirty(); }
723 get {
return m_MinAngle; }
724 set {
if (PropertyUtil.SetStruct(ref m_MinAngle, value)) SetVerticesDirty(); }
731 get {
return m_Clockwise; }
732 set {
if (PropertyUtil.SetStruct(ref m_Clockwise, value)) SetVerticesDirty(); }
740 get {
return m_RingGap; }
741 set {
if (PropertyUtil.SetStruct(ref m_RingGap, value)) SetVerticesDirty(); }
748 get {
return m_SplitNumber; }
749 set {
if (PropertyUtil.SetStruct(ref m_SplitNumber, value > 36 ? 36 : value)) SetVerticesDirty(); }
756 get {
return m_RoundCap; }
757 set {
if (PropertyUtil.SetStruct(ref m_RoundCap, value)) SetVerticesDirty(); }
764 get {
return m_Ignore; }
765 set {
if (PropertyUtil.SetStruct(ref m_Ignore, value)) SetVerticesDirty(); }
772 get {
return m_IgnoreValue; }
773 set {
if (PropertyUtil.SetStruct(ref m_IgnoreValue, value)) SetVerticesDirty(); }
781 get {
return m_IgnoreLineBreak; }
782 set {
if (PropertyUtil.SetStruct(ref m_IgnoreLineBreak, value)) SetVerticesDirty(); }
789 get {
return m_RadarType; }
790 set {
if (PropertyUtil.SetStruct(ref m_RadarType, value)) SetVerticesDirty(); }
797 get {
return m_GaugeAxis; }
798 set {
if (PropertyUtil.SetClass(ref m_GaugeAxis, value,
true)) SetVerticesDirty(); }
805 get {
return m_GaugePointer; }
806 set {
if (PropertyUtil.SetClass(ref m_GaugePointer, value,
true)) SetVerticesDirty(); }
813 get {
return m_GaugeType; }
814 set {
if (PropertyUtil.SetStruct(ref m_GaugeType, value)) SetVerticesDirty(); }
822 get {
return m_Label; }
823 set {
if (PropertyUtil.SetClass(ref m_Label, value,
true)) SetAllDirty(); }
831 get {
return m_Animation; }
832 set {
if (PropertyUtil.SetClass(ref m_Animation, value,
true)) SetVerticesDirty(); }
840 get {
return m_LineArrow; }
841 set {
if (PropertyUtil.SetClass(ref m_LineArrow, value,
true)) SetVerticesDirty(); }
849 get {
return m_ItemStyle; }
850 set {
if (PropertyUtil.SetClass(ref m_ItemStyle, value,
true)) SetVerticesDirty(); }
857 get {
return m_Emphasis; }
858 set {
if (PropertyUtil.SetClass(ref m_Emphasis, value,
true)) SetVerticesDirty(); }
865 get {
return m_TitleStyle; }
866 set {
if (PropertyUtil.SetClass(ref m_TitleStyle, value,
true)) SetAllDirty(); }
873 get {
return m_MarkLine; }
874 set {
if (PropertyUtil.SetClass(ref m_MarkLine, value,
true)) SetAllDirty(); }
882 get {
return m_IconStyle; }
883 set {
if (PropertyUtil.SetClass(ref m_IconStyle, value,
true)) SetAllDirty(); }
888 public int showDataDimension {
get {
return m_ShowDataDimension; }
set { m_ShowDataDimension = value; } }
892 public bool showDataName {
get {
return m_ShowDataName; }
set { m_ShowDataName = value; } }
899 get {
return m_Clip; }
900 set {
if (PropertyUtil.SetStruct(ref m_Clip, value)) SetVerticesDirty(); }
908 get {
return m_ShowAsPositiveNumber; }
909 set {
if (PropertyUtil.SetStruct(ref m_ShowAsPositiveNumber, value)) SetComponentDirty(); }
918 get {
return m_Large; }
921 if (PropertyUtil.SetStruct(ref m_Large, value))
924 label.SetComponentDirty();
933 get {
return m_LargeThreshold; }
936 if (PropertyUtil.SetStruct(ref m_LargeThreshold, value))
939 label.SetComponentDirty();
948 get {
return m_AvoidLabelOverlap; }
949 set {
if (PropertyUtil.SetStruct(ref m_AvoidLabelOverlap, value)) SetVerticesDirty(); }
957 get {
return m_WaveLength; }
958 set {
if (PropertyUtil.SetStruct(ref m_WaveLength, value)) SetVerticesDirty(); }
965 get {
return m_WaveHeight; }
966 set {
if (PropertyUtil.SetStruct(ref m_WaveHeight, value)) SetVerticesDirty(); }
973 get {
return m_WaveOffset; }
974 set {
if (PropertyUtil.SetStruct(ref m_WaveOffset, value)) SetVerticesDirty(); }
981 get {
return m_WaveSpeed; }
982 set {
if (PropertyUtil.SetStruct(ref m_WaveSpeed, value)) SetVerticesDirty(); }
990 get {
return m_Left; }
991 set {
if (PropertyUtil.SetStruct(ref m_Left, value)) SetAllDirty(); }
999 get {
return m_Right; }
1000 set {
if (PropertyUtil.SetStruct(ref m_Right, value)) SetAllDirty(); }
1008 get {
return m_Top; }
1009 set {
if (PropertyUtil.SetStruct(ref m_Top, value)) SetAllDirty(); }
1017 get {
return m_Bottom; }
1018 set {
if (PropertyUtil.SetStruct(ref m_Bottom, value)) SetAllDirty(); }
1020 public bool customBool1
1022 get {
return m_CustomBool1; }
1023 set {
if (PropertyUtil.SetStruct(ref m_CustomBool1, value)) SetAllDirty(); }
1025 public bool customBool2
1027 get {
return m_CustomBool2; }
1028 set {
if (PropertyUtil.SetStruct(ref m_CustomBool2, value)) SetAllDirty(); }
1030 public int customInt1
1032 get {
return m_CustomInt1; }
1033 set {
if (PropertyUtil.SetStruct(ref m_CustomInt1, value)) SetAllDirty(); }
1035 public int customInt2
1037 get {
return m_CustomInt2; }
1038 set {
if (PropertyUtil.SetStruct(ref m_CustomInt2, value)) SetAllDirty(); }
1040 public float customFloat1
1042 get {
return m_CustomFloat1; }
1043 set {
if (PropertyUtil.SetStruct(ref m_CustomFloat1, value)) SetAllDirty(); }
1045 public float customFloat2
1047 get {
return m_CustomFloat2; }
1048 set {
if (PropertyUtil.SetStruct(ref m_CustomFloat2, value)) SetAllDirty(); }
1056 get {
return m_InsertDataToHead; }
1057 set {
if (PropertyUtil.SetStruct(ref m_InsertDataToHead, value)) SetAllDirty(); }
1064 get {
return m_DataSortType; }
1065 set {
if (PropertyUtil.SetStruct(ref m_DataSortType, value)) SetVerticesDirty(); }
1072 get {
return m_Orient; }
1073 set {
if (PropertyUtil.SetStruct(ref m_Orient, value)) SetVerticesDirty(); }
1080 get {
return m_Align; }
1081 set {
if (PropertyUtil.SetStruct(ref m_Align, value)) SetVerticesDirty(); }
1086 public List<SerieData>
data {
get {
return m_Data; } }
1088 public override bool vertsDirty
1092 return m_VertsDirty ||
1106 public override bool componentDirty {
get {
return m_ComponentDirty ||
titleStyle.componentDirty; } }
1107 public override void ClearVerticesDirty()
1109 base.ClearVerticesDirty();
1110 symbol.ClearVerticesDirty();
1115 label.ClearVerticesDirty();
1124 public override void ClearComponentDirty()
1126 base.ClearComponentDirty();
1127 symbol.ClearComponentDirty();
1132 label.ClearComponentDirty();
1184 public float runtimeWaveSpeed {
get;
internal set; }
1185 public Painter runtimeCanvas {
get;
internal set; }
1186 public double runtimeCheckValue {
get;
set; }
1187 public int runtimeGridIndex {
get;
internal set; }
1188 public float runtimeX {
get;
internal set; }
1189 public float runtimeY {
get;
internal set; }
1190 public float runtimeWidth {
get;
internal set; }
1191 public float runtimeHeight {
get;
internal set; }
1192 public Rect runtimeRect {
get;
internal set; }
1193 public List<SerieData> runtimeSortedData {
get {
return m_SortedData; } }
1194 public List<SerieData> rootData {
get {
return m_RootData; } }
1195 public bool nameDirty {
get {
return m_NameDirty; } }
1197 private void SetNameDirty()
1202 public void ClearNameDirty()
1204 m_NameDirty =
false;
1207 public override void ClearDirty()
1211 internal List<Vector3> GetUpSmoothList(
int dataIndex,
int size = 100)
1213 if (m_UpSmoothPoints.ContainsKey(dataIndex))
1215 return m_UpSmoothPoints[dataIndex];
1219 var list = ListPool<Vector3>.Get();
1220 m_UpSmoothPoints[dataIndex] = list;
1225 internal List<Vector3> GetDownSmoothList(
int dataIndex,
int size = 100)
1227 if (m_DownSmoothPoints.ContainsKey(dataIndex))
1229 return m_DownSmoothPoints[dataIndex];
1233 var list = ListPool<Vector3>.Get();
1234 m_DownSmoothPoints[dataIndex] = list;
1239 internal void ClearSmoothList(
int dataIndex)
1241 if (m_UpSmoothPoints.ContainsKey(dataIndex))
1243 m_UpSmoothPoints[dataIndex].Clear();
1245 if (m_DownSmoothPoints.ContainsKey(dataIndex))
1247 m_DownSmoothPoints[dataIndex].Clear();
1258 var
max =
double.MinValue;
1259 foreach (var sdata
in data)
1261 if (sdata.show && !IsIgnoreValue(sdata.data[1]) && sdata.data[1] >
max)
1263 max = sdata.data[1];
1277 var
max =
double.MinValue;
1278 foreach (var sdata
in data)
1280 if (sdata.show && !IsIgnoreValue(sdata.data[0]) && sdata.data[0] >
max)
1282 max = sdata.data[0];
1296 var
min =
double.MaxValue;
1297 foreach (var sdata
in data)
1299 if (sdata.show && !IsIgnoreValue(sdata.data[1]) && sdata.data[1] <
min)
1301 min = sdata.data[1];
1315 var
min =
double.MaxValue;
1316 foreach (var sdata
in data)
1318 if (sdata.show && !IsIgnoreValue(sdata.data[0]) && sdata.data[0] <
min)
1320 min = sdata.data[0];
1335 foreach (var sdata
in data)
1337 if (sdata.show && !IsIgnoreValue(sdata.data[1]))
1338 total += sdata.GetCurrData(1,
animation.GetUpdateAnimationDuration());
1352 foreach (var sdata
in data)
1354 if (sdata.show && !IsIgnoreValue(sdata.data[1]))
1355 total += sdata.data[0];
1366 while (m_Data.Count > 0)
1371 m_NeedUpdateFilterData =
true;
1383 if (!
string.IsNullOrEmpty(m_Data[
index].
name))
1388 var serieData = m_Data[
index];
1389 SerieDataPool.Release(serieData);
1390 if (serieData.labelObject !=
null)
1392 SerieLabelPool.Release(serieData.labelObject.gameObject);
1394 if (m_UpSmoothPoints.ContainsKey(serieData.index))
1396 ListPool<Vector3>.Release(m_UpSmoothPoints[serieData.index]);
1397 m_UpSmoothPoints.Remove(serieData.index);
1399 if (m_DownSmoothPoints.ContainsKey(serieData.index))
1401 ListPool<Vector3>.Release(m_DownSmoothPoints[serieData.index]);
1402 m_DownSmoothPoints.Remove(serieData.index);
1404 m_Data.RemoveAt(
index);
1405 m_NeedUpdateFilterData =
true;
1417 int xValue = m_Data.Count;
1418 var serieData = SerieDataPool.Get();
1419 serieData.data.Add(xValue);
1420 serieData.data.Add(value);
1421 serieData.name = dataName;
1422 serieData.index = xValue;
1423 AddSerieDataHeadOrTail(serieData);
1424 m_ShowDataDimension = 1;
1426 CheckDataName(dataName);
1430 private void AddSerieDataHeadOrTail(
SerieData serieData)
1432 if (m_InsertDataToHead) m_Data.Insert(0, serieData);
1433 else m_Data.Add(serieData);
1434 m_NeedUpdateFilterData =
true;
1437 private void CheckDataName(
string dataName)
1439 if (
string.IsNullOrEmpty(dataName))
1445 m_ShowDataName =
true;
1459 var serieData = SerieDataPool.Get();
1460 serieData.
data.Clear();
1461 serieData.data.Add(xValue);
1462 serieData.data.Add(yValue);
1463 serieData.name = dataName;
1464 serieData.index = m_Data.Count;
1465 AddSerieDataHeadOrTail(serieData);
1466 m_ShowDataDimension = 2;
1468 CheckDataName(dataName);
1481 public SerieData AddData(
double open,
double close,
double lowest,
double heighest,
string dataName =
null)
1484 var serieData = SerieDataPool.Get();
1485 serieData.
data.Clear();
1486 serieData.data.Add(open);
1487 serieData.data.Add(close);
1488 serieData.data.Add(lowest);
1489 serieData.data.Add(heighest);
1490 serieData.name = dataName;
1491 serieData.index = m_Data.Count;
1492 AddSerieDataHeadOrTail(serieData);
1493 m_ShowDataDimension = 4;
1495 CheckDataName(dataName);
1508 if (valueList ==
null || valueList.Count == 0)
return null;
1509 if (valueList.Count == 1)
1511 return AddYData(valueList[0], dataName);
1513 else if (valueList.Count == 2)
1515 return AddXYData(valueList[0], valueList[1], dataName);
1520 m_ShowDataDimension = valueList.Count;
1521 var serieData = SerieDataPool.Get();
1522 serieData.
name = dataName;
1523 serieData.index = m_Data.Count;
1524 for (
int i = 0; i < valueList.Count; i++)
1526 serieData.data.Add(valueList[i]);
1528 AddSerieDataHeadOrTail(serieData);
1530 CheckDataName(dataName);
1538 serieData.name =
name;
1539 serieData.index = m_Data.Count;
1540 serieData.data =
new List<double>() { parent.children.Count, value };
1541 serieData.parentIndex = parent.index;
1542 serieData.runtimeParent = parent;
1543 AddSerieDataHeadOrTail(serieData);
1544 parent.children.Add(serieData.index);
1545 parent.runtimeChildren.Add(serieData);
1548 public SerieData AddChildData(SerieData parent, List<double> value,
string name =
null)
1550 var serieData =
new SerieData();
1551 serieData.name =
name;
1552 serieData.index = m_Data.Count;
1553 serieData.data =
new List<double>(value);
1554 serieData.parentIndex = parent.index;
1555 serieData.runtimeParent = parent;
1556 AddSerieDataHeadOrTail(serieData);
1557 parent.children.Add(serieData.index);
1558 parent.runtimeChildren.Add(serieData);
1562 private void CheckMaxCache()
1564 if (m_MaxCache <= 0)
return;
1565 while (m_Data.Count >= m_MaxCache)
1567 m_NeedUpdateFilterData =
true;
1568 if (m_InsertDataToHead)
RemoveData(m_Data.Count - 1);
1582 if (
index < 0 || dimension < 0)
return 0;
1584 if (serieData !=
null && dimension < serieData.data.Count)
1586 var value = serieData.GetData(dimension);
1589 value = Math.Abs(value);
1607 if (
index < 0)
return 0;
1609 if (
index < serieData.Count)
1611 var value = serieData[
index].data[1];
1614 value = Math.Abs(value);
1621 public double GetYCurrData(
int index,
DataZoom dataZoom =
null)
1623 if (
index < 0)
return 0;
1625 if (
index < serieData.Count)
1627 var value = serieData[
index].GetCurrData(1,
animation.GetUpdateAnimationDuration());
1630 value = Math.Abs(value);
1648 if (
index < 0)
return;
1650 if (
index < serieData.Count)
1652 yData = serieData[
index].data[1];
1655 yData = Math.Abs(yData);
1657 dataName = serieData[
index].name;
1680 foreach (var serieData
in data)
1683 if (target !=
null)
return target;
1688 public SerieData
GetSerieData(SerieData parent,
string id)
1690 if (
id.Equals(parent.id))
return parent;
1691 foreach (var child
in parent.children)
1713 if (
index < 0)
return;
1715 if (
index < showData.Count)
1717 var serieData = showData[
index];
1718 xValue = serieData.data[0];
1719 yVlaue = serieData.data[1];
1722 xValue = Math.Abs(xValue);
1723 yVlaue = Math.Abs(yVlaue);
1728 public double GetDataTotal(
int dimension)
1731 foreach (var sdata
in data)
1734 total += sdata.GetData(dimension);
1746 if (dataZoom !=
null && dataZoom.enable
1749 SerieHelper.UpdateFilterData(
this, dataZoom);
1750 return m_FilterData;
1754 return runtimeSortedData.Count > 0 ? runtimeSortedData : m_Data;
1779 return flag1 || flag2;
1793 var animationDuration =
animation.GetUpdateAnimationDuration();
1794 var flag = m_Data[
index].UpdateData(dimension, value, animationOpen, animationDuration);
1795 if (flag) SetVerticesDirty();
1811 if (
index >= 0 &&
index < m_Data.Count && values !=
null)
1813 var serieData = m_Data[
index];
1815 var animationDuration =
animation.GetUpdateAnimationDuration();
1816 for (
int i = 0; i < values.Count; i++)
1817 serieData.UpdateData(i, values[i], animationOpen, animationDuration);
1824 public bool UpdateDataName(
int index,
string name)
1828 var serieData = m_Data[
index];
1829 serieData.name =
name;
1831 if (serieData.labelObject !=
null)
1833 serieData.labelObject.SetText(
name ==
null ?
"" :
name);
1846 foreach (var serieData
in m_Data)
1848 serieData.highlighted =
false;
1858 if (serieData !=
null)
1860 serieData.highlighted = flag;
1864 public float GetBarWidth(
float categoryWidth)
1866 if (m_BarWidth > 1)
return m_BarWidth;
1867 else return m_BarWidth * categoryWidth;
1870 public bool IsIgnoreIndex(
int index,
int dimension = 1)
1873 if (serieData !=
null)
1875 return IsIgnoreValue(serieData, dimension);
1880 public bool IsIgnoreValue(SerieData serieData,
int dimension = 1)
1882 if (serieData.ignore)
return true;
1883 return IsIgnoreValue(serieData.GetData(dimension));
1886 public bool IsIgnoreValue(
double value)
1888 return m_Ignore && MathUtil.Approximately(value, m_IgnoreValue);
1891 public bool IsIgnorePoint(
int index)
1906 return m_Large && m_Data.Count > m_LargeThreshold;
1911 public bool IsCoordinateSerie()
1928 if (dataIndex >= 0 && dataIndex < m_Data.Count)
1930 var
data = m_Data[dataIndex];
1931 data.iconStyle.width = width;
1932 data.iconStyle.height = height;
1943 if (dataIndex >= 0 && dataIndex < m_Data.Count)
1945 var
data = m_Data[dataIndex];
1946 data.iconStyle.color = color;
2025 if (
string.IsNullOrEmpty(jsonData))
return;
2026 jsonData = jsonData.Replace(
"\r\n",
"");
2027 jsonData = jsonData.Replace(
" ",
"");
2028 jsonData = jsonData.Replace(
"\n",
"");
2029 int startIndex = jsonData.IndexOf(
"[");
2030 int endIndex = jsonData.LastIndexOf(
"]");
2031 if (startIndex == -1 || endIndex == -1)
2033 Debug.LogError(
"json data need include in [ ]");
2037 string temp = jsonData.Substring(startIndex + 1, endIndex - startIndex - 1);
2038 if (temp.IndexOf(
"],") > -1 || temp.IndexOf(
"] ,") > -1)
2040 string[] datas = temp.Split(
new string[] {
"],",
"] ," }, StringSplitOptions.RemoveEmptyEntries);
2041 for (
int i = 0; i < datas.Length; i++)
2043 var
data = datas[i].Split(
new char[] {
'[',
',' }, StringSplitOptions.RemoveEmptyEntries);
2045 for (
int j = 0; j <
data.Length; j++)
2047 var txt =
data[j].Trim().Replace(
"]",
"");
2049 var flag =
double.TryParse(txt, out value);
2052 serieData.data.Add(value);
2054 else serieData.name = txt.Replace(
"\"",
"").Trim();
2056 AddSerieDataHeadOrTail(serieData);
2059 else if (temp.IndexOf(
"value") > -1 && temp.IndexOf(
"name") > -1)
2061 string[] datas = temp.Split(
new string[] {
"},",
"} ,",
"}" }, StringSplitOptions.RemoveEmptyEntries);
2062 for (
int i = 0; i < datas.Length; i++)
2064 var arr = datas[i].Replace(
"{",
"").Split(
',');
2066 foreach (var a
in arr)
2068 if (a.StartsWith(
"value:"))
2070 double value =
double.Parse(a.Substring(6, a.Length - 6));
2071 serieData.data =
new List<double>() { i, value };
2073 else if (a.StartsWith(
"name:"))
2075 string name = a.Substring(6, a.Length - 6 - 1);
2076 serieData.name =
name;
2078 else if (a.StartsWith(
"selected:"))
2080 string selected = a.Substring(9, a.Length - 9);
2081 serieData.selected =
bool.Parse(selected);
2084 AddSerieDataHeadOrTail(serieData);
2089 string[] datas = temp.Split(
',');
2090 for (
int i = 0; i < datas.Length; i++)
2093 var flag =
double.TryParse(datas[i].Trim(), out value);
2097 serieData.data =
new List<double>() { i, value };
2098 AddSerieDataHeadOrTail(serieData);