修复当设置DataZoomminShowNum时可能异常的问题

This commit is contained in:
monitor1394
2020-01-09 19:30:15 +08:00
parent 7ccd378e7d
commit 2119fda9f0
3 changed files with 26 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
# 更新日志
* (2020.01.09) 修复当设置`DataZoom``minShowNum`时可能异常的问题
* (2020.01.08) 修复当设置`AxisLine``onZero`时刻度显示异常的问题
* (2020.01.08) 增加`Mask`遮罩遮挡支持
* (2019.12.21) 增加`Tooltip`的单个数据项和标题的字符串模版格式器

View File

@@ -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
{

View File

@@ -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
{