增加DataZoom的最小显示数据个数minShowNum

This commit is contained in:
monitor1394
2019-12-21 20:00:58 +08:00
parent e4dced8c3c
commit 22cdfbd59f
5 changed files with 17 additions and 3 deletions

View File

@@ -267,6 +267,7 @@ namespace XCharts
private int filterStart;
private int filterEnd;
private int filterMinShow;
private List<string> filterData;
private List<Text> m_AxisLabelTextList = new List<Text>();
private GameObject m_TooltipLabel;
@@ -389,14 +390,17 @@ namespace XCharts
{
var startIndex = (int)((data.Count - 1) * dataZoom.start / 100);
var endIndex = (int)((data.Count - 1) * dataZoom.end / 100);
if (startIndex != filterStart || endIndex != filterEnd || m_NeedUpdateFilterData)
if (startIndex != filterStart || endIndex != filterEnd || dataZoom.minShowNum != filterMinShow || m_NeedUpdateFilterData)
{
filterStart = startIndex;
filterEnd = endIndex;
filterMinShow = dataZoom.minShowNum;
m_NeedUpdateFilterData = false;
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);
}
else

View File

@@ -251,6 +251,7 @@ namespace XCharts
[NonSerialized] private int m_FilterStart;
[NonSerialized] private int m_FilterEnd;
[NonSerialized] private int m_FilterMinShow;
[NonSerialized] private List<SerieData> m_FilterData;
[NonSerialized] private Dictionary<int, List<Vector3>> m_UpSmoothPoints = new Dictionary<int, List<Vector3>>();
[NonSerialized] private Dictionary<int, List<Vector3>> m_DownSmoothPoints = new Dictionary<int, List<Vector3>>();
@@ -965,14 +966,17 @@ namespace XCharts
{
var startIndex = (int)((data.Count - 1) * dataZoom.start / 100);
var endIndex = (int)((data.Count - 1) * dataZoom.end / 100);
if (startIndex != m_FilterStart || endIndex != m_FilterEnd || m_NeedUpdateFilterData)
if (startIndex != m_FilterStart || endIndex != m_FilterEnd || dataZoom.minShowNum != m_FilterMinShow || m_NeedUpdateFilterData)
{
m_FilterStart = startIndex;
m_FilterEnd = endIndex;
m_FilterMinShow = dataZoom.minShowNum;
m_NeedUpdateFilterData = false;
var count = endIndex == startIndex ? 1 : endIndex - startIndex + 1;
if (count < dataZoom.minShowNum) 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);
}
else