From 2119fda9f05683ad78ba79e227aa71c7c563c8d8 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Thu, 9 Jan 2020 19:30:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BD=93=E8=AE=BE=E7=BD=AE`D?= =?UTF-8?q?ataZoom`=E7=9A=84`minShowNum`=E6=97=B6=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + Runtime/Component/Main/Axis.cs | 15 ++++++++++++--- Runtime/Component/Main/Serie.cs | 16 +++++++++++++--- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18c98036..c48c095f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # 更新日志 +* (2020.01.09) 修复当设置`DataZoom`的`minShowNum`时可能异常的问题 * (2020.01.08) 修复当设置`AxisLine`的`onZero`时刻度显示异常的问题 * (2020.01.08) 增加`Mask`遮罩遮挡支持 * (2019.12.21) 增加`Tooltip`的单个数据项和标题的字符串模版格式器 diff --git a/Runtime/Component/Main/Axis.cs b/Runtime/Component/Main/Axis.cs index 6c5fe660..185996f8 100644 --- a/Runtime/Component/Main/Axis.cs +++ b/Runtime/Component/Main/Axis.cs @@ -390,6 +390,7 @@ namespace XCharts { var startIndex = (int)((data.Count - 1) * dataZoom.start / 100); var endIndex = (int)((data.Count - 1) * dataZoom.end / 100); + if (endIndex < startIndex) endIndex = startIndex; if (startIndex != filterStart || endIndex != filterEnd || dataZoom.minShowNum != filterMinShow || m_NeedUpdateFilterData) { filterStart = startIndex; @@ -399,9 +400,17 @@ namespace XCharts if (m_Data.Count > 0) { var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1; - if (count < dataZoom.minShowNum) count = dataZoom.minShowNum; - if (startIndex + count > m_Data.Count - 1) count = m_Data.Count - 1 - startIndex; - filterData = m_Data.GetRange(startIndex, count); + if (count < dataZoom.minShowNum) + { + if (dataZoom.minShowNum > m_Data.Count) count = m_Data.Count; + else count = dataZoom.minShowNum; + } + if (startIndex + count > m_Data.Count) + { + int start = endIndex - count; + filterData = m_Data.GetRange(start < 0 ? 0 : start, count); + } + else filterData = m_Data.GetRange(startIndex, count); } else { diff --git a/Runtime/Component/Main/Serie.cs b/Runtime/Component/Main/Serie.cs index 7aed7b28..d8f0a48f 100644 --- a/Runtime/Component/Main/Serie.cs +++ b/Runtime/Component/Main/Serie.cs @@ -966,6 +966,8 @@ namespace XCharts { var startIndex = (int)((data.Count - 1) * dataZoom.start / 100); var endIndex = (int)((data.Count - 1) * dataZoom.end / 100); + if (endIndex < startIndex) endIndex = startIndex; + if (startIndex != m_FilterStart || endIndex != m_FilterEnd || dataZoom.minShowNum != m_FilterMinShow || m_NeedUpdateFilterData) { m_FilterStart = startIndex; @@ -973,11 +975,19 @@ namespace XCharts m_FilterMinShow = dataZoom.minShowNum; m_NeedUpdateFilterData = false; var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1; - if (count < dataZoom.minShowNum) count = dataZoom.minShowNum; + if (count < dataZoom.minShowNum) + { + if (dataZoom.minShowNum > m_Data.Count) count = m_Data.Count; + else count = dataZoom.minShowNum; + } if (m_Data.Count > 0) { - if (startIndex + count > m_Data.Count - 1) count = m_Data.Count - 1 - startIndex; - m_FilterData = m_Data.GetRange(startIndex, count); + if (startIndex + count > m_Data.Count) + { + int start = endIndex - count; + m_FilterData = m_Data.GetRange(start < 0 ? 0 : start, count); + } + else m_FilterData = m_Data.GetRange(startIndex, count); } else {