diff --git a/Documentation~/en/api.md b/Documentation~/en/api.md
index 92c6fdf5..b82960a8 100644
--- a/Documentation~/en/api.md
+++ b/Documentation~/en/api.md
@@ -107,6 +107,7 @@ slug: /api
- [ISimplifiedSerie](#isimplifiedserie)
- [ItemStyle](#itemstyle)
- [IUpdateRuntimeData](#iupdateruntimedata)
+- [JsonUtil](#jsonutil)
- [LabelLine](#labelline)
- [LabelStyle](#labelstyle)
- [Lang](#lang)
@@ -236,6 +237,7 @@ slug: /api
- [VisualMapHelper](#visualmaphelper)
- [VisualMapRange](#visualmaprange)
- [VisualMapTheme](#visualmaptheme)
+- [Wrapper<T>](#wrappert)
- [XAxis](#xaxis)
- [XAxis3D](#xaxis3d)
- [XChartsMgr](#xchartsmgr)
@@ -461,6 +463,7 @@ The axis in rectangular coordinate.
|IsTop()||public bool IsTop()|
|IsValue()||public bool IsValue()
是否为数值轴。 |
|RemoveData()||public void RemoveData(int dataIndex)|
+|ResetStatus()||public override void ResetStatus()
重置状态。 |
|SetComponentDirty()||public override void SetComponentDirty()|
|SetNeedUpdateFilterData()||public void SetNeedUpdateFilterData()|
|UpdateData()||public void UpdateData(int index, string category)
更新类目数据 |
@@ -730,7 +733,7 @@ Bar chart shows different data through the height of a bar, which is used in rec
|AddData()||public SerieData AddData(string serieName, double xValue, double yValue, string dataName = null, string dataId = null)
Add a (x,y) data to serie. |
|AddData()||public SerieData AddData(string serieName, List<double> multidimensionalData, string dataName = null, string dataId = null)
Add an arbitray dimension data to serie,such as (x,y,z,...). |
|AddData()||public SerieData AddData(string serieName, params double[] multidimensionalData)
Add an arbitray dimension data to serie,such as (x,y,z,...). |
-|AddLink()||public SerieDataLink AddLink(int serieIndex, string sourceName, string targetName, double value)
Add a link data to serie. |
+|AddLink()||public SerieDataLink AddLink(int serieIndex, string sourceId, string targetId, double value = 0)
Add a link data to serie. |
|AddSerie<T>()||public T AddSerie<T>(string serieName = null, bool show = true, bool addToHead = false) where T : Serie|
|AddXAxisData()||public void AddXAxisData(string category, int xAxisIndex = 0)
Add a category data to xAxis. |
|AddXAxisIcon()||public void AddXAxisIcon(Sprite icon, int xAxisIndex = 0)
Add an icon to xAxis. |
@@ -1446,7 +1449,7 @@ the data struct of graph.
|public method|since|description|
|--|--|--|
|AddEdge()||public GraphEdge AddEdge(string nodeId1, string nodeId2, double value)|
-|AddNode()||public GraphNode AddNode(string nodeId, string nodeName, int dataIndex)|
+|AddNode()||public GraphNode AddNode(string nodeId, string nodeName, int dataIndex, double value)|
|BreadthFirstTraverse()||public void BreadthFirstTraverse(GraphNode startNode, System.Action<GraphNode> onTraverse)|
|Clear()||public void Clear()|
|DeepFirstTraverse()||public void DeepFirstTraverse(GraphNode startNode, System.Action<GraphNode> onTraverse)|
@@ -1723,6 +1726,18 @@ The interface for serie data component.
> class in XCharts.Runtime / Subclasses: [SingleAxis](#singleaxis),[DataZoom](#datazoom),[CalendarCoord](#calendarcoord),[GridCoord](#gridcoord),[GridLayout](#gridlayout),[GridCoord3D](#gridcoord3d),[ParallelCoord](#parallelcoord)
+## JsonUtil
+
+> class in XCharts.Runtime
+
+
+|public method|since|description|
+|--|--|--|
+|GetJsonArray<T>()||public static T[] GetJsonArray<T>(string json)|
+|GetJsonObject<T>()||public static T GetJsonObject<T>(string json)|
+|GetWebJson<T>()||public static IEnumerator GetWebJson<T>(string url, Action<T[]> callback)|
+|GetWebJson<T>()||public static IEnumerator GetWebJson<T>(string url, Action<T> callback)|
+
## LabelLine
> class in XCharts.Runtime / Inherits from: [ChildComponent](#childcomponent),[ISerieComponent](#iseriecomponent),[ISerieDataComponent](#iseriedatacomponent)
@@ -2019,6 +2034,7 @@ Location type. Quick to set the general location.
|CompareTo()||public int CompareTo(object obj)|
|OnRemove()||public virtual void OnRemove()|
|Reset()||public virtual void Reset() { }|
+|ResetStatus()||public virtual void ResetStatus() { }|
|SetAllDirty()||public virtual void SetAllDirty()|
|SetComponentDirty()||public virtual void SetComponentDirty()|
|SetDefaultValue()||public virtual void SetDefaultValue() { }|
@@ -2458,8 +2474,8 @@ Configurations of select state.
|AddData()||public SerieData AddData(List<double> valueList, string dataName = null, string dataId = null)
将一组数据添加到系列中。 如果数据只有一个,默认添加到维度Y中。 |
|AddData()||public SerieData AddData(params double[] values)
添加任意维数据到系列中。 |
|AddExtraComponent<T>()||public T AddExtraComponent<T>() where T : ChildComponent, ISerieComponent|
-|AddLink()||public SerieDataLink AddLink(string sourceName, string targetName, double value)
Add a link data. |
-|AddSerieData()||public void AddSerieData(SerieData serieData)|
+|AddLink()||public virtual SerieDataLink AddLink(string sourceId, string targetId, double value = 0)
Add a link data. |
+|AddSerieData()||public virtual void AddSerieData(SerieData serieData)|
|AddXYData()||public SerieData AddXYData(double xValue, double yValue, string dataName = null, string dataId = null)
添加(x,y)数据到维度X和维度Y |
|AddYData()||public SerieData AddYData(double value, string dataName = null, string dataId = null)
添加一个数据到维度Y(此时维度X对应的数据是索引) |
|AnimationEnable()||public void AnimationEnable(bool flag)
启用或取消初始动画 |
@@ -3388,6 +3404,11 @@ VisualMap component. Mapping data to visual elements such as colors.
|Copy()||public void Copy(VisualMapTheme theme)|
|VisualMapTheme()||public VisualMapTheme(ThemeType theme) : base(theme)|
+## Wrapper<T>
+
+> class in XCharts.Runtime
+
+
## XAxis
> class in XCharts.Runtime / Inherits from: [Axis](#axis)
diff --git a/Documentation~/en/configuration.md b/Documentation~/en/configuration.md
index 3f87ec82..f225256a 100644
--- a/Documentation~/en/configuration.md
+++ b/Documentation~/en/configuration.md
@@ -199,6 +199,7 @@ import APITable from '@site/src/components/APITable';
- [LangCandlestick](#langcandlestick)
- [LangTime](#langtime)
- [MainComponent](#maincomponent)
+- [Wrapper<T>](#wrappert)
- [XCResourcesImporter](#xcresourcesimporter)
- [XCSettings](#xcsettings)
@@ -2520,6 +2521,10 @@ VisualMap component. Mapping data to visual elements such as colors.
```
+## Wrapper<T>
+
+> class in XCharts.Runtime
+
## XAxis
> class in XCharts.Runtime / Inherits from: [Axis](#axis)
diff --git a/Documentation~/zh/api.md b/Documentation~/zh/api.md
index c9c54379..bb453b2a 100644
--- a/Documentation~/zh/api.md
+++ b/Documentation~/zh/api.md
@@ -107,6 +107,7 @@ slug: /api
- [ISimplifiedSerie](#isimplifiedserie)
- [ItemStyle](#itemstyle)
- [IUpdateRuntimeData](#iupdateruntimedata)
+- [JsonUtil](#jsonutil)
- [LabelLine](#labelline)
- [LabelStyle](#labelstyle)
- [Lang](#lang)
@@ -236,6 +237,7 @@ slug: /api
- [VisualMapHelper](#visualmaphelper)
- [VisualMapRange](#visualmaprange)
- [VisualMapTheme](#visualmaptheme)
+- [Wrapper<T>](#wrappert)
- [XAxis](#xaxis)
- [XAxis3D](#xaxis3d)
- [XChartsMgr](#xchartsmgr)
@@ -461,6 +463,7 @@ slug: /api
|IsTop()||public bool IsTop()|
|IsValue()||public bool IsValue()
是否为数值轴。 |
|RemoveData()||public void RemoveData(int dataIndex)|
+|ResetStatus()||public override void ResetStatus()
重置状态。 |
|SetComponentDirty()||public override void SetComponentDirty()|
|SetNeedUpdateFilterData()||public void SetNeedUpdateFilterData()|
|UpdateData()||public void UpdateData(int index, string category)
更新类目数据 |
@@ -730,7 +733,7 @@ slug: /api
|AddData()||public SerieData AddData(string serieName, double xValue, double yValue, string dataName = null, string dataId = null)
添加(x,y)数据到指定系列中。 |
|AddData()||public SerieData AddData(string serieName, List<double> multidimensionalData, string dataName = null, string dataId = null)
添加多维数据(x,y,z...)到指定的系列中。 |
|AddData()||public SerieData AddData(string serieName, params double[] multidimensionalData)
添加多维数据(x,y,z...)到指定的系列中。 |
-|AddLink()||public SerieDataLink AddLink(int serieIndex, string sourceName, string targetName, double value)
添加一个关系图的关系数据。 |
+|AddLink()||public SerieDataLink AddLink(int serieIndex, string sourceId, string targetId, double value = 0)
添加一个关系图的关系数据。 |
|AddSerie<T>()||public T AddSerie<T>(string serieName = null, bool show = true, bool addToHead = false) where T : Serie|
|AddXAxisData()||public void AddXAxisData(string category, int xAxisIndex = 0)
添加一个类目数据到指定的x轴。 |
|AddXAxisIcon()||public void AddXAxisIcon(Sprite icon, int xAxisIndex = 0)
添加一个图标到指定的x轴。 |
@@ -1446,7 +1449,7 @@ DataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息
|API|版本|描述|
|--|--|--|
|AddEdge()||public GraphEdge AddEdge(string nodeId1, string nodeId2, double value)|
-|AddNode()||public GraphNode AddNode(string nodeId, string nodeName, int dataIndex)|
+|AddNode()||public GraphNode AddNode(string nodeId, string nodeName, int dataIndex, double value)|
|BreadthFirstTraverse()||public void BreadthFirstTraverse(GraphNode startNode, System.Action<GraphNode> onTraverse)|
|Clear()||public void Clear()|
|DeepFirstTraverse()||public void DeepFirstTraverse(GraphNode startNode, System.Action<GraphNode> onTraverse)|
@@ -1723,6 +1726,18 @@ Drawing grid in rectangular coordinate. Line chart, bar chart, and scatter chart
> class in XCharts.Runtime / 子类: [SingleAxis](#singleaxis),[DataZoom](#datazoom),[CalendarCoord](#calendarcoord),[GridCoord](#gridcoord),[GridLayout](#gridlayout),[GridCoord3D](#gridcoord3d),[ParallelCoord](#parallelcoord)
+## JsonUtil
+
+> class in XCharts.Runtime
+
+
+|API|版本|描述|
+|--|--|--|
+|GetJsonArray<T>()||public static T[] GetJsonArray<T>(string json)|
+|GetJsonObject<T>()||public static T GetJsonObject<T>(string json)|
+|GetWebJson<T>()||public static IEnumerator GetWebJson<T>(string url, Action<T[]> callback)|
+|GetWebJson<T>()||public static IEnumerator GetWebJson<T>(string url, Action<T> callback)|
+
## LabelLine
> class in XCharts.Runtime / 继承自: [ChildComponent](#childcomponent),[ISerieComponent](#iseriecomponent),[ISerieDataComponent](#iseriedatacomponent)
@@ -2019,6 +2034,7 @@ Drawing grid in rectangular coordinate. Line chart, bar chart, and scatter chart
|CompareTo()||public int CompareTo(object obj)|
|OnRemove()||public virtual void OnRemove()|
|Reset()||public virtual void Reset() { }|
+|ResetStatus()||public virtual void ResetStatus() { }|
|SetAllDirty()||public virtual void SetAllDirty()|
|SetComponentDirty()||public virtual void SetComponentDirty()|
|SetDefaultValue()||public virtual void SetDefaultValue() { }|
@@ -2458,8 +2474,8 @@ Radar coordinate conponnet for radar charts. 雷达图坐标系组件,只适
|AddData()||public SerieData AddData(List<double> valueList, string dataName = null, string dataId = null)
将一组数据添加到系列中。 如果数据只有一个,默认添加到维度Y中。 |
|AddData()||public SerieData AddData(params double[] values)
添加任意维数据到系列中。 |
|AddExtraComponent<T>()||public T AddExtraComponent<T>() where T : ChildComponent, ISerieComponent|
-|AddLink()||public SerieDataLink AddLink(string sourceName, string targetName, double value)
添加一个关系图的关系数据。 |
-|AddSerieData()||public void AddSerieData(SerieData serieData)|
+|AddLink()||public virtual SerieDataLink AddLink(string sourceId, string targetId, double value = 0)
添加一个关系图的关系数据。 |
+|AddSerieData()||public virtual void AddSerieData(SerieData serieData)|
|AddXYData()||public SerieData AddXYData(double xValue, double yValue, string dataName = null, string dataId = null)
添加(x,y)数据到维度X和维度Y |
|AddYData()||public SerieData AddYData(double value, string dataName = null, string dataId = null)
添加一个数据到维度Y(此时维度X对应的数据是索引) |
|AnimationEnable()||public void AnimationEnable(bool flag)
启用或取消初始动画 |
@@ -3388,6 +3404,11 @@ UI帮助类。
|Copy()||public void Copy(VisualMapTheme theme)|
|VisualMapTheme()||public VisualMapTheme(ThemeType theme) : base(theme)|
+## Wrapper<T>
+
+> class in XCharts.Runtime
+
+
## XAxis
> class in XCharts.Runtime / 继承自: [Axis](#axis)
diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md
index 82101a24..ba966519 100644
--- a/Documentation~/zh/changelog.md
+++ b/Documentation~/zh/changelog.md
@@ -73,6 +73,7 @@ slug: /changelog
## master
+* (2024.05.09) 增加`JsonUtil`工具类
* (2024.04.23) 修复`ConvertXYAxis()`多次调用后图表异常的问题
* (2024.04.22) 修复`DataZoom`控制多个轴时的`GridCoord`获取可能不正确的问题 (#317)
* (2024.04.22) 增加`GridCoord3D`3D坐标系
diff --git a/Documentation~/zh/configuration.md b/Documentation~/zh/configuration.md
index 4e51f47b..633dc4cf 100644
--- a/Documentation~/zh/configuration.md
+++ b/Documentation~/zh/configuration.md
@@ -199,6 +199,7 @@ import APITable from '@site/src/components/APITable';
- [LangCandlestick](#langcandlestick)
- [LangTime](#langtime)
- [MainComponent](#maincomponent)
+- [Wrapper<T>](#wrappert)
- [XCResourcesImporter](#xcresourcesimporter)
- [XCSettings](#xcsettings)
@@ -2442,6 +2443,10 @@ Serie的状态样式。Serie的状态有正常,高亮,淡出,选中四种
```
+## Wrapper<T>
+
+> class in XCharts.Runtime
+
## XAxis
> class in XCharts.Runtime / 继承自: [Axis](#axis)
diff --git a/Runtime/Internal/BaseChart.Serie.cs b/Runtime/Internal/BaseChart.Serie.cs
index e402ee4d..ce742f00 100644
--- a/Runtime/Internal/BaseChart.Serie.cs
+++ b/Runtime/Internal/BaseChart.Serie.cs
@@ -447,16 +447,16 @@ namespace XCharts.Runtime
/// ||添加一个关系图的关系数据。
///
/// the index of serie
- /// the source name of link
- /// the target name of link
+ /// the source id of link
+ /// the target id of link
/// the value of link
///
- public SerieDataLink AddLink(int serieIndex, string sourceName, string targetName, double value)
+ public SerieDataLink AddLink(int serieIndex, string sourceId, string targetId, double value = 0)
{
var serie = GetSerie(serieIndex);
if (serie != null)
{
- var link = serie.AddLink(sourceName, targetName, value);
+ var link = serie.AddLink(sourceId, targetId, value);
RefreshPainter(serie.painter);
return link;
}
diff --git a/Runtime/Internal/Data/GraphData.cs b/Runtime/Internal/Data/GraphData.cs
index ea0414c1..2fbea247 100644
--- a/Runtime/Internal/Data/GraphData.cs
+++ b/Runtime/Internal/Data/GraphData.cs
@@ -209,7 +209,7 @@ namespace XCharts.Runtime
}
}
- public GraphNode AddNode(string nodeId, string nodeName, int dataIndex)
+ public GraphNode AddNode(string nodeId, string nodeName, int dataIndex, double value)
{
if (nodeMap.ContainsKey(nodeId))
{
@@ -248,9 +248,9 @@ namespace XCharts.Runtime
XLog.Warning("GraphData.AddEdge(): node2 is null");
return null;
}
- if (node1 == node2)
+ if (directed && node1 == node2)
{
- XLog.Warning("GraphData.AddEdge(): node1 == node2");
+ XLog.Warning("GraphData.AddEdge(): node1 == node2:" + node1);
return null;
}
string edgeKey = nodeId1 + "_" + nodeId2;
@@ -377,6 +377,7 @@ namespace XCharts.Runtime
{
public string id;
public string name;
+ public double value;
public List edges = new List();
public List inEdges = new List();
public List outEdges = new List();
@@ -386,11 +387,10 @@ namespace XCharts.Runtime
public int depth = -1;
public bool expand = true;
public int level = 0;
- public Vector3 position;
- public Vector3 delta;
+ public Vector3 position = Vector3.zero;
+ public Vector3 pp = Vector3.zero;
public float weight;
public float repulsion;
- public Vector3 pp;
public GraphNode(string id, string name, int dataIndex)
{
diff --git a/Runtime/Serie/Serie.cs b/Runtime/Serie/Serie.cs
index cbfe1f88..b3e6e706 100644
--- a/Runtime/Serie/Serie.cs
+++ b/Runtime/Serie/Serie.cs
@@ -1357,7 +1357,7 @@ namespace XCharts.Runtime
return serieData;
}
- public void AddSerieData(SerieData serieData)
+ public virtual void AddSerieData(SerieData serieData)
{
if (m_InsertDataToHead)
m_Data.Insert(0, serieData);
@@ -1547,15 +1547,15 @@ namespace XCharts.Runtime
/// Add a link data.
/// ||添加一个关系图的关系数据。
///
- ///
- ///
+ ///
+ ///
///
///
- public SerieDataLink AddLink(string sourceName, string targetName, double value)
+ public virtual SerieDataLink AddLink(string sourceId, string targetId, double value = 0)
{
var link = new SerieDataLink();
- link.source = sourceName;
- link.target = targetName;
+ link.source = sourceId;
+ link.target = targetId;
link.value = value;
m_Links.Add(link);
SetVerticesDirty();
diff --git a/Runtime/Utilities/JsonUtil.cs b/Runtime/Utilities/JsonUtil.cs
new file mode 100644
index 00000000..b8b018a6
--- /dev/null
+++ b/Runtime/Utilities/JsonUtil.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections;
+using UnityEngine;
+using UnityEngine.EventSystems;
+using UnityEngine.Networking;
+
+namespace XCharts.Runtime
+{
+ public static class JsonUtil
+ {
+
+ public static IEnumerator GetWebJson(string url, Action callback)
+ {
+ var www = UnityWebRequest.Get(url);
+ yield return www;
+#if UNITY_2020_1_OR_NEWER
+ if (www.result != UnityWebRequest.Result.Success)
+#else
+ if (www.isNetworkError || www.isHttpError)
+#endif
+ {
+ Debug.LogError("GetWebJson Error: " + www.error);
+ }
+
+ else
+ {
+ var json = www.downloadHandler.text.Trim();
+ callback(GetJsonArray(json));
+ www.Dispose();
+ }
+ }
+
+ public static IEnumerator GetWebJson(string url, Action callback)
+ {
+ var www = UnityWebRequest.Get(url);
+ yield return www;
+#if UNITY_2020_1_OR_NEWER
+ if (www.result != UnityWebRequest.Result.Success)
+#else
+ if (www.isNetworkError || www.isHttpError)
+#endif
+ {
+ Debug.LogError("GetWebJson Error: " + www.error);
+ }
+ else
+ {
+ var json = www.downloadHandler.text.Trim();
+ callback(GetJsonObject(json));
+ www.Dispose();
+ }
+ }
+
+ public static T GetJsonObject(string json)
+ {
+ return JsonUtility.FromJson(json);
+ }
+
+ public static T[] GetJsonArray(string json)
+ {
+ string newJson = "{ \"array\": " + json + "}";
+ Wrapper wrapper = JsonUtility.FromJson>(newJson);
+ return wrapper.array;
+ }
+
+ [Serializable]
+ private class Wrapper
+ {
+#pragma warning disable 0649
+ public T[] array;
+#pragma warning restore 0649
+ }
+ }
+}
\ No newline at end of file
diff --git a/Runtime/Utilities/JsonUtil.cs.meta b/Runtime/Utilities/JsonUtil.cs.meta
new file mode 100644
index 00000000..db138b1a
--- /dev/null
+++ b/Runtime/Utilities/JsonUtil.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 88e9115d32af34a3dae0d5c3e32de41c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: