| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 | 
							- using System;
 
- using System.Collections.Generic;
 
- using UnityEditor;
 
- using UnityEngine;
 
- using XCharts.Runtime;
 
- namespace XCharts.Editor
 
- {
 
-     public class PraseExternalDataEditor : UnityEditor.EditorWindow
 
-     {
 
-         private static BaseChart s_Chart;
 
-         private static Serie s_Serie;
 
-         private static Axis s_Axis;
 
-         private static bool s_LinksData;
 
-         private static PraseExternalDataEditor window;
 
-         private static string inputJsonText = "";
 
-         public static void ShowWindow()
 
-         {
 
-             window = GetWindow<PraseExternalDataEditor>();
 
-             window.titleContent = new GUIContent("PraseExternalData");
 
-             window.minSize = new Vector2(450, 550);
 
-             window.Focus();
 
-             window.Show();
 
-         }
 
-         public static void UpdateData(BaseChart chart, Serie serie, Axis axis, bool linksData)
 
-         {
 
-             s_Chart = chart;
 
-             s_Serie = serie;
 
-             s_Axis = axis;
 
-             s_LinksData = linksData;
 
-             inputJsonText = UnityEngine.GUIUtility.systemCopyBuffer;
 
-         }
 
-         void OnInspectorUpdate()
 
-         {
 
-             Repaint();
 
-         }
 
-         private void OnGUI()
 
-         {
 
-             if (s_Chart == null)
 
-             {
 
-                 Close();
 
-                 return;
 
-             }
 
-             EditorGUILayout.LabelField("Input external data (echarts data):");
 
-             inputJsonText = EditorGUILayout.TextArea(inputJsonText, GUILayout.Height(400));
 
-             if (GUILayout.Button("Add"))
 
-             {
 
-                 if (s_Serie != null)
 
-                 {
 
-                     if (!ParseArrayData(s_Serie, inputJsonText))
 
-                     {
 
-                         if (ParseJsonData(s_Serie, inputJsonText))
 
-                             inputJsonText = "";
 
-                     }
 
-                     else
 
-                     {
 
-                         inputJsonText = "";
 
-                     }
 
-                 }
 
-                 else if (s_Axis != null)
 
-                 {
 
-                     if (!ParseArrayData(s_Axis, inputJsonText))
 
-                     {
 
-                         if (ParseJsonData(s_Axis, inputJsonText))
 
-                             inputJsonText = "";
 
-                     }
 
-                     else
 
-                     {
 
-                         inputJsonText = "";
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         private static bool ParseArrayData(Axis axis, string arrayData)
 
-         {
 
-             arrayData = arrayData.Trim();
 
-             if (!arrayData.StartsWith("data: Array")) return false;
 
-             axis.data.Clear();
 
-             var list = arrayData.Split('\n');
 
-             for (int i = 1; i < list.Length; i++)
 
-             {
 
-                 var temp = list[i].Split(':');
 
-                 if (temp.Length == 2)
 
-                 {
 
-                     var category = temp[1].Replace("\"", "").Trim();
 
-                     axis.data.Add(category);
 
-                 }
 
-             }
 
-             axis.SetAllDirty();
 
-             return true;
 
-         }
 
-         private static bool ParseArrayData(Serie serie, string arrayData)
 
-         {
 
-             arrayData = arrayData.Trim();
 
-             if (!arrayData.StartsWith("data: Array")) return false;
 
-             if (s_LinksData) serie.ClearLinks();
 
-             else serie.ClearData();
 
-             var list = arrayData.Split('\n');
 
-             for (int i = 1; i < list.Length; i++)
 
-             {
 
-                 var temp = list[i].Split(':');
 
-                 if (temp.Length == 2)
 
-                 {
 
-                     var strvalue = temp[1].Replace("\"", "").Trim();
 
-                     var value = 0d;
 
-                     var flag = double.TryParse(strvalue, out value);
 
-                     if (flag)
 
-                     {
 
-                         serie.AddYData(value);
 
-                     }
 
-                 }
 
-             }
 
-             serie.SetAllDirty();
 
-             return true;
 
-         }
 
-         private static bool ParseJsonData(Axis axis, string jsonData)
 
-         {
 
-             if (!CheckJsonData(ref jsonData)) return false;
 
-             axis.data.Clear();
 
-             string[] datas = jsonData.Split(',');
 
-             for (int i = 0; i < datas.Length; i++)
 
-             {
 
-                 var txt = datas[i].Trim().Replace("[", "").Replace("]", "");
 
-                 var value = 0d;
 
-                 if (!double.TryParse(txt, out value))
 
-                     axis.data.Add(txt.Replace("\'", "").Replace("\"", ""));
 
-             }
 
-             axis.SetAllDirty();
 
-             return true;
 
-         }
 
-         /// <summary>
 
-         /// 从json中导入数据
 
-         /// </summary>
 
-         /// <param name="jsonData"></param>
 
-         private static bool ParseJsonData(Serie serie, string jsonData)
 
-         {
 
-             if (!CheckJsonData(ref jsonData)) return false;
 
-             if (s_LinksData) serie.ClearLinks();
 
-             else serie.ClearData();
 
-             if (jsonData.IndexOf("],") > -1 || jsonData.IndexOf("] ,") > -1)
 
-             {
 
-                 string[] datas = jsonData.Split(new string[] { "],", "] ," }, StringSplitOptions.RemoveEmptyEntries);
 
-                 for (int i = 0; i < datas.Length; i++)
 
-                 {
 
-                     var data = datas[i].Replace("[", "").Replace("]", "").Split(new char[] { '[', ',' }, StringSplitOptions.RemoveEmptyEntries);
 
-                     var serieData = new SerieData();
 
-                     double value = 0;
 
-                     if (data.Length == 2 && !double.TryParse(data[0], out value))
 
-                     {
 
-                         double.TryParse(data[1], out value);
 
-                         serieData.data = new List<double>() { i, value };
 
-                         serieData.name = data[0].Replace("\"", "").Trim();
 
-                     }
 
-                     else
 
-                     {
 
-                         for (int j = 0; j < data.Length; j++)
 
-                         {
 
-                             var txt = data[j].Trim().Replace("]", "");
 
-                             var flag = double.TryParse(txt, out value);
 
-                             if (flag)
 
-                             {
 
-                                 serieData.data.Add(value);
 
-                             }
 
-                             else serieData.name = txt.Replace("\"", "").Trim();
 
-                         }
 
-                     }
 
-                     serie.AddSerieData(serieData);
 
-                 }
 
-             }
 
-             else if (jsonData.IndexOf("value") > -1 && jsonData.IndexOf("name") > -1)
 
-             {
 
-                 string[] datas = jsonData.Split(new string[] { "},", "} ,", "}" }, StringSplitOptions.RemoveEmptyEntries);
 
-                 for (int i = 0; i < datas.Length; i++)
 
-                 {
 
-                     var arr = datas[i].Replace("{", "").Split(',');
 
-                     var serieData = new SerieData();
 
-                     foreach (var a in arr)
 
-                     {
 
-                         if (a.StartsWith("value:"))
 
-                         {
 
-                             double value = double.Parse(a.Substring(6, a.Length - 6));
 
-                             serieData.data = new List<double>() { i, value };
 
-                         }
 
-                         else if (a.StartsWith("name:"))
 
-                         {
 
-                             string name = a.Substring(6, a.Length - 6 - 1);
 
-                             serieData.name = name;
 
-                         }
 
-                         else if (a.StartsWith("selected:"))
 
-                         {
 
-                             string selected = a.Substring(9, a.Length - 9);
 
-                             serieData.selected = bool.Parse(selected);
 
-                         }
 
-                     }
 
-                     serie.AddSerieData(serieData);
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 string[] datas = jsonData.Split(',');
 
-                 for (int i = 0; i < datas.Length; i++)
 
-                 {
 
-                     double value;
 
-                     var flag = double.TryParse(datas[i].Trim(), out value);
 
-                     if (flag)
 
-                     {
 
-                         var serieData = new SerieData();
 
-                         serieData.data = new List<double>() { i, value };
 
-                         serie.AddSerieData(serieData);
 
-                     }
 
-                 }
 
-             }
 
-             serie.SetAllDirty();
 
-             return true;
 
-         }
 
-         private static bool CheckJsonData(ref string jsonData)
 
-         {
 
-             if (string.IsNullOrEmpty(jsonData)) return false;
 
-             jsonData = jsonData.Replace("\r\n", "");
 
-             jsonData = jsonData.Replace(" ", "");
 
-             jsonData = jsonData.Replace("\n", "");
 
-             int startIndex = jsonData.IndexOf("[");
 
-             int endIndex = jsonData.LastIndexOf("]");
 
-             if (startIndex == -1 || endIndex == -1)
 
-             {
 
-                 Debug.LogError("json data need include in [ ]");
 
-                 return false;
 
-             }
 
-             jsonData = jsonData.Substring(startIndex + 1, endIndex - startIndex - 1);
 
-             return true;
 
-         }
 
-     }
 
- }
 
 
  |