diff --git a/Documentation~/en/api.md b/Documentation~/en/api.md
index 0424493e..599effa0 100644
--- a/Documentation~/en/api.md
+++ b/Documentation~/en/api.md
@@ -340,7 +340,7 @@ slug: /api
|SetSeriePainterMaterial()||public void SetSeriePainterMaterial(Material material)
设置Serie Painter的材质球 |
|SetTopPainterMaterial()||public void SetTopPainterMaterial(Material material)
设置Top Painter的材质球 |
|SetUpperPainterMaterial()||public void SetUpperPainterMaterial(Material material)
设置Upper Painter的材质球 |
-|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex)
trigger tooltip by data index. |
+|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex, int serieIndex = 0)
trigger tooltip by data index. |
|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(Vector3 localPosition)
trigger tooltip by chart local position. |
|TryAddChartComponent()||public bool TryAddChartComponent(Type type)|
|TryAddChartComponent<T>()||public bool TryAddChartComponent<T>() where T : MainComponent|
diff --git a/Documentation~/zh/api.md b/Documentation~/zh/api.md
index c89e9ef7..6acc461a 100644
--- a/Documentation~/zh/api.md
+++ b/Documentation~/zh/api.md
@@ -340,7 +340,7 @@ slug: /api
|SetSeriePainterMaterial()||public void SetSeriePainterMaterial(Material material)
设置Serie Painter的材质球 |
|SetTopPainterMaterial()||public void SetTopPainterMaterial(Material material)
设置Top Painter的材质球 |
|SetUpperPainterMaterial()||public void SetUpperPainterMaterial(Material material)
设置Upper Painter的材质球 |
-|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex)
尝试触发指定数据项的Tooltip. |
+|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex, int serieIndex = 0)
尝试触发指定数据项的Tooltip. |
|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(Vector3 localPosition)
在指定的位置尝试触发Tooltip. |
|TryAddChartComponent()||public bool TryAddChartComponent(Type type)|
|TryAddChartComponent<T>()||public bool TryAddChartComponent<T>() where T : MainComponent|
diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md
index 20f5e8fa..5fc99394 100644
--- a/Documentation~/zh/changelog.md
+++ b/Documentation~/zh/changelog.md
@@ -68,6 +68,7 @@ slug: /changelog
## master
+* (2023.09.05) 修复`Ring`的`TriggerTooltip()`接口无效的问题
* (2023.09.05) 修复`Radar`数据全为0时绘制报错的问题
## v3.8.0
diff --git a/Runtime/Internal/BaseChart.API.cs b/Runtime/Internal/BaseChart.API.cs
index c1d4de97..6c502c28 100644
--- a/Runtime/Internal/BaseChart.API.cs
+++ b/Runtime/Internal/BaseChart.API.cs
@@ -671,11 +671,12 @@ namespace XCharts.Runtime
/// |尝试触发指定数据项的Tooltip.
///
/// 数据项索引
+ /// Serie索引,默认为第0个Serie
///
[Since("v3.7.0")]
- public bool TriggerTooltip(int dataIndex)
+ public bool TriggerTooltip(int dataIndex, int serieIndex = 0)
{
- var serie = GetSerie(0);
+ var serie = GetSerie(serieIndex);
if (serie == null) return false;
var dataPoints = serie.context.dataPoints;
var dataPoint = Vector3.zero;
diff --git a/Runtime/Serie/Ring/RingHandler.cs b/Runtime/Serie/Ring/RingHandler.cs
index 9ca6ccc9..40fc8c40 100644
--- a/Runtime/Serie/Ring/RingHandler.cs
+++ b/Runtime/Serie/Ring/RingHandler.cs
@@ -99,7 +99,7 @@ namespace XCharts.Runtime
param.color = color;
param.marker = SerieHelper.GetItemMarker(serie, serieData, marker);
param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter);
- param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); ;
+ param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter);
param.columns.Clear();
param.columns.Add(param.marker);
@@ -111,7 +111,7 @@ namespace XCharts.Runtime
private Vector3 GetLabelLineEndPosition(Serie serie, SerieData serieData, LabelLine labelLine)
{
- if (labelLine == null || !labelLine.show)
+ if (labelLine == null || !labelLine.show)
return serieData.context.labelLinePosition;
var isRight = !serie.clockwise;
var dire = isRight ? Vector3.right : Vector3.left;
@@ -207,10 +207,13 @@ namespace XCharts.Runtime
var startDegree = GetStartAngle(serie);
var toDegree = GetToAngle(serie, degree);
var insideRadius = outsideRadius - ringWidth;
+ var halfAngle = startDegree + (toDegree - startDegree) / 2;
+ var halfRadius = (outsideRadius + insideRadius) / 2;
serieData.context.startAngle = startDegree;
serieData.context.toAngle = toDegree;
serieData.context.insideRadius = insideRadius;
serieData.context.outsideRadius = serieData.radius > 0 ? serieData.radius : outsideRadius;
+ serieData.context.position = ChartHelper.GetPosition(serie.context.center, halfAngle, halfRadius);
UpdateLabelPosition(serieData);
}
AvoidLabelOverlap();