diff --git a/CHANGELOG.md b/CHANGELOG.md index 78f0e318..02cf9f85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ ## master +* (2022.06.25) 修复`DataZoom`开启时`Tooltip`显示数据不一致的问题 (#203) * (2022.06.25) 修复`Toolip`在类目轴无数据时绘制异常的问题 (#204) * (2022.06.25) 优化`Serie`设置`PlaceHolder`时的`Tooltip`表现 * (2022.06.25) 增加`Since`标识配置参数从哪个版本开始支持 diff --git a/Runtime/Component/Axis/AxisContext.cs b/Runtime/Component/Axis/AxisContext.cs index c47d5a6c..37fcf14e 100644 --- a/Runtime/Component/Axis/AxisContext.cs +++ b/Runtime/Component/Axis/AxisContext.cs @@ -42,6 +42,7 @@ namespace XCharts.Runtime public List runtimeData { get { return m_RuntimeData; } } public List labelValueList { get { return m_LabelValueList; } } public List labelObjectList { get { return m_AxisLabelList; } } + public int dataZoomStartIndex; internal List filterData; internal bool lastCheckInverse; @@ -107,17 +108,25 @@ namespace XCharts.Runtime if (range > data.Count - start - 1) start = data.Count - range - 1; if (start >= 0) + { + dataZoomStartIndex = start; filterData = data.GetRange(start, range); + } else + { + dataZoomStartIndex = 0; filterData = data; + } } else { + dataZoomStartIndex = 0; filterData = data; } } else if (end == 0) { + dataZoomStartIndex = 0; filterData = m_EmptyFliter; } } diff --git a/Runtime/Component/Tooltip/TooltipHandler.cs b/Runtime/Component/Tooltip/TooltipHandler.cs index 6add9b59..0d9f1b63 100644 --- a/Runtime/Component/Tooltip/TooltipHandler.cs +++ b/Runtime/Component/Tooltip/TooltipHandler.cs @@ -262,7 +262,7 @@ namespace XCharts.Runtime if (isTriggerAxis) { serie.context.pointerEnter = true; - serie.context.pointerAxisDataIndexs.Add((int) xAxis.context.pointerValue); + serie.context.pointerAxisDataIndexs.Add(serie.context.dataZoomStartIndex + (int) xAxis.context.pointerValue); xAxis.context.axisTooltipValue = xAxis.context.pointerValue; } } @@ -446,7 +446,7 @@ namespace XCharts.Runtime var axis = component as Axis; if (axis.gridIndex == gridIndex && axis.IsCategory()) { - dataIndex = (int) axis.context.pointerValue; + dataIndex = axis.context.dataZoomStartIndex + (int) axis.context.pointerValue; category = axis.GetData(dataIndex); return true; } @@ -532,10 +532,6 @@ namespace XCharts.Runtime Vector3 p2 = new Vector3(pX, pY); Vector3 p3 = new Vector3(pX + tooltipSplitWid, pY); Vector3 p4 = new Vector3(pX + tooltipSplitWid, grid.context.y); - Debug.LogError(p1 + "," + grid.context.x + "," + xAxis.context.pointerValue); - Debug.LogError(p2); - Debug.LogError(p3); - Debug.LogError(p4); UGL.DrawQuadrilateral(vh, p1, p2, p3, p4, chart.theme.tooltip.areaColor); } break; diff --git a/Runtime/Helper/SerieHelper.cs b/Runtime/Helper/SerieHelper.cs index 2000726e..74875936 100644 --- a/Runtime/Helper/SerieHelper.cs +++ b/Runtime/Helper/SerieHelper.cs @@ -707,17 +707,25 @@ namespace XCharts.Runtime if (range > data.Count - start - 1) start = data.Count - range - 1; if (start >= 0) + { + serie.context.dataZoomStartIndex = start; serie.m_FilterData = data.GetRange(start, range); + } else + { + serie.context.dataZoomStartIndex = 0; serie.m_FilterData = data; + } } else { + serie.context.dataZoomStartIndex = 0; serie.m_FilterData = data; } } else if (end == 0) { + serie.context.dataZoomStartIndex = 0; serie.m_FilterData = emptyFilter; } } diff --git a/Runtime/Serie/SerieContext.cs b/Runtime/Serie/SerieContext.cs index 931513f1..a458a528 100644 --- a/Runtime/Serie/SerieContext.cs +++ b/Runtime/Serie/SerieContext.cs @@ -30,6 +30,7 @@ namespace XCharts.Runtime /// public List pointerAxisDataIndexs = new List(); public bool isTriggerByAxis = false; + public int dataZoomStartIndex = 0; /// /// 中心点