diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c63499b..869d8e74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ ## master +* (2022.07.05) 修复`Chart`里有多个坐标系时绘制异常的问题 (#210) * (2022.07.04) 增加`Settings`的`axisMaxSplitNumber`参数设置`Axis`的最大分隔段数 * (2022.07.04) 修复`Axis`在设置`offset`后`Tick`绘制位置异常的问题 (#209) * (2022.07.03) 优化`AxisLabel`的`formatterFunction`自定义委托 diff --git a/Runtime/Component/Debug/DebugInfo.cs b/Runtime/Component/Debug/DebugInfo.cs index ba3f5c49..b0af3b0c 100644 --- a/Runtime/Component/Debug/DebugInfo.cs +++ b/Runtime/Component/Debug/DebugInfo.cs @@ -132,13 +132,6 @@ namespace XCharts.Runtime SetValueWithKInfo(s_Sb, "s-vert", vertCount); SetValueWithKInfo(s_Sb, "t-vert", m_Chart.m_TopPainterVertCount, false); - var serie0 = m_Chart.GetSerie(0); - for (int i = 0; i < serie0.dataCount; i++) - { - var serieData = serie0.data[i]; - s_Sb.AppendFormat("{0}:{1}\n", i, serieData.interact.targetVaue); - } - m_Label.SetText(s_Sb.ToString()); } } diff --git a/Runtime/Component/Settings/Settings.cs b/Runtime/Component/Settings/Settings.cs index 0b7d771e..c450f7a9 100644 --- a/Runtime/Component/Settings/Settings.cs +++ b/Runtime/Component/Settings/Settings.cs @@ -23,7 +23,7 @@ namespace XCharts.Runtime [SerializeField][Range(1, 10)] protected float m_CicleSmoothness = 2f; [SerializeField] protected float m_LegendIconLineWidth = 2; [SerializeField] private float[] m_LegendIconCornerRadius = new float[] { 0.25f, 0.25f, 0.25f, 0.25f }; - [SerializeField][Since("v3.1.0")] protected float m_AxisMaxSplitNumber = 20; + [SerializeField][Since("v3.1.0")] protected float m_AxisMaxSplitNumber = 50; public bool show { get { return m_Show; } } /// diff --git a/Runtime/Component/Tooltip/TooltipHandler.cs b/Runtime/Component/Tooltip/TooltipHandler.cs index 0d9f1b63..e06b11cc 100644 --- a/Runtime/Component/Tooltip/TooltipHandler.cs +++ b/Runtime/Component/Tooltip/TooltipHandler.cs @@ -199,6 +199,7 @@ namespace XCharts.Runtime private ISerieContainer GetPointerContainerAndSeries(Tooltip tooltip, List list) { list.Clear(); + ISerieContainer target = null; for (int i = chart.components.Count - 1; i >= 0; i--) { var component = chart.components[i]; @@ -230,11 +231,11 @@ namespace XCharts.Runtime chart.RefreshTopPainter(); } } - return container; + target = container; } } } - return null; + return target; } private void UpdateAxisPointerDataIndex(Serie serie, XAxis xAxis, YAxis yAxis, GridCoord grid, bool isTriggerAxis) diff --git a/Runtime/Component/Tooltip/TooltipView.cs b/Runtime/Component/Tooltip/TooltipView.cs index 2fe075f1..959283c0 100644 --- a/Runtime/Component/Tooltip/TooltipView.cs +++ b/Runtime/Component/Tooltip/TooltipView.cs @@ -58,6 +58,11 @@ namespace XCharts.Runtime { m_Active = flag && tooltip.showContent; ChartHelper.SetActive(gameObject, m_Active); + if (!flag) + { + foreach (var item in m_Items) + item.gameObject.SetActive(false); + } } public void Refresh() diff --git a/Runtime/Internal/BaseChart.Component.cs b/Runtime/Internal/BaseChart.Component.cs index e7ef7b3c..8e19c4d5 100644 --- a/Runtime/Internal/BaseChart.Component.cs +++ b/Runtime/Internal/BaseChart.Component.cs @@ -423,5 +423,22 @@ namespace XCharts.Runtime } return null; } + + internal bool GetSerieGridCoordAxis(Serie serie, out Axis axis, out Axis relativedAxis) + { + var yAxis = GetChartComponent(serie.yAxisIndex); + var isY = yAxis.IsCategory(); + if (isY) + { + axis = yAxis; + relativedAxis = GetChartComponent(serie.xAxisIndex); + } + else + { + axis = GetChartComponent(serie.xAxisIndex); + relativedAxis = yAxis; + } + return isY; + } } } \ No newline at end of file diff --git a/Runtime/Internal/Basic/MainComponent.cs b/Runtime/Internal/Basic/MainComponent.cs index 61159b30..202831e1 100644 --- a/Runtime/Internal/Basic/MainComponent.cs +++ b/Runtime/Internal/Basic/MainComponent.cs @@ -9,7 +9,7 @@ namespace XCharts.Runtime [System.Serializable] public class MainComponent : IComparable { - public int instanceId { get; internal set; } + public int instanceId { get { return index; } } public int index { get; internal set; } protected bool m_VertsDirty; protected bool m_ComponentDirty; diff --git a/Runtime/Serie/Bar/BarHandler.cs b/Runtime/Serie/Bar/BarHandler.cs index f6e118f7..0e1d4df8 100644 --- a/Runtime/Serie/Bar/BarHandler.cs +++ b/Runtime/Serie/Bar/BarHandler.cs @@ -128,21 +128,9 @@ namespace XCharts.Runtime if (!serie.show || serie.animation.HasFadeOut()) return; - var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); - Axis axis; Axis relativedAxis; - - if (isY) - { - axis = chart.GetChartComponent(serie.yAxisIndex); - relativedAxis = chart.GetChartComponent(serie.xAxisIndex); - } - else - { - axis = chart.GetChartComponent(serie.xAxisIndex); - relativedAxis = chart.GetChartComponent(serie.yAxisIndex); - } + var isY = chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis); m_SerieGrid = chart.GetChartComponent(axis.gridIndex); if (axis == null) diff --git a/Runtime/Serie/Bar/SimplifiedBarHandler.cs b/Runtime/Serie/Bar/SimplifiedBarHandler.cs index 3e4264de..fffb5779 100644 --- a/Runtime/Serie/Bar/SimplifiedBarHandler.cs +++ b/Runtime/Serie/Bar/SimplifiedBarHandler.cs @@ -104,21 +104,9 @@ namespace XCharts.Runtime if (!serie.show || serie.animation.HasFadeOut()) return; - var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); - Axis axis; Axis relativedAxis; - - if (isY) - { - axis = chart.GetChartComponent(serie.yAxisIndex); - relativedAxis = chart.GetChartComponent(serie.xAxisIndex); - } - else - { - axis = chart.GetChartComponent(serie.xAxisIndex); - relativedAxis = chart.GetChartComponent(serie.yAxisIndex); - } + var isY = chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis); m_SerieGrid = chart.GetChartComponent(axis.gridIndex); if (axis == null) diff --git a/Runtime/Serie/Line/LineHandler.GridCoord.cs b/Runtime/Serie/Line/LineHandler.GridCoord.cs index ff008396..410e3e2b 100644 --- a/Runtime/Serie/Line/LineHandler.GridCoord.cs +++ b/Runtime/Serie/Line/LineHandler.GridCoord.cs @@ -145,21 +145,11 @@ namespace XCharts.Runtime var lineArrow = serie.lineArrow; var visualMap = chart.GetVisualMapOfSerie(serie); var isVisualMapGradient = VisualMapHelper.IsNeedLineGradient(visualMap); - var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); Axis axis; Axis relativedAxis; + var isY = chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis); - if (isY) - { - axis = chart.GetChartComponent(serie.yAxisIndex); - relativedAxis = chart.GetChartComponent(serie.xAxisIndex); - } - else - { - axis = chart.GetChartComponent(serie.xAxisIndex); - relativedAxis = chart.GetChartComponent(serie.yAxisIndex); - } for (int i = 0; i < count; i++) { var serieData = serie.GetSerieData(i); @@ -270,21 +260,9 @@ namespace XCharts.Runtime if (serie.animation.HasFadeOut()) return; - var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); - Axis axis; Axis relativedAxis; - - if (isY) - { - axis = chart.GetChartComponent(serie.yAxisIndex); - relativedAxis = chart.GetChartComponent(serie.xAxisIndex); - } - else - { - axis = chart.GetChartComponent(serie.xAxisIndex); - relativedAxis = chart.GetChartComponent(serie.yAxisIndex); - } + var isY = chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis); if (axis == null) return; diff --git a/Runtime/Serie/Line/SimplifiedLineHandler.cs b/Runtime/Serie/Line/SimplifiedLineHandler.cs index 8b2b0e09..49bb49f0 100644 --- a/Runtime/Serie/Line/SimplifiedLineHandler.cs +++ b/Runtime/Serie/Line/SimplifiedLineHandler.cs @@ -149,21 +149,10 @@ namespace XCharts.Runtime if (serie.animation.HasFadeOut()) return; - var isY = ComponentHelper.IsAnyCategoryOfYAxis(chart.components); - Axis axis; Axis relativedAxis; + var isY = chart.GetSerieGridCoordAxis(serie, out axis, out relativedAxis); - if (isY) - { - axis = chart.GetChartComponent(serie.yAxisIndex); - relativedAxis = chart.GetChartComponent(serie.xAxisIndex); - } - else - { - axis = chart.GetChartComponent(serie.xAxisIndex); - relativedAxis = chart.GetChartComponent(serie.yAxisIndex); - } m_SerieGrid = chart.GetChartComponent(axis.gridIndex); if (axis == null)