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

This commit is contained in:
monitor1394
2019-12-21 20:00:58 +08:00
parent 4c27359cc0
commit 0dbc2e1c5c
5 changed files with 17 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
# 更新日志
* (2019.12.21) 增加`DataZoom`的最小显示数据个数`minShowNum`
* (2019.12.20) 增加`Demo40_Radar.cs`雷达图代码操作`Demo`
* (2019.12.20) 添加`RadarChart`相关API接口
* (2019.12.17) 发布`v1.1.0`版本

View File

@@ -219,6 +219,7 @@
* `scrollSensitivity`:缩放区域组件的敏感度。值越高每次缩放所代表的数据越多。
* `fontSize`:字体大小。
* `fontStyle`:字体样式。
* `minShowNum`最小显示数据个数。当DataZoom放大到最大时最小显示的数据个数。
## `VisualMap`

View File

@@ -35,6 +35,7 @@ namespace XCharts
SerializedProperty m_RangeMode = prop.FindPropertyRelative("m_RangeMode");
SerializedProperty m_Start = prop.FindPropertyRelative("m_Start");
SerializedProperty m_End = prop.FindPropertyRelative("m_End");
SerializedProperty m_MinShowNum = prop.FindPropertyRelative("m_MinShowNum");
SerializedProperty m_ScrollSensitivity = prop.FindPropertyRelative("m_ScrollSensitivity");
SerializedProperty m_FontSize = prop.FindPropertyRelative("m_FontSize");
SerializedProperty m_FontStyle = prop.FindPropertyRelative("m_FontStyle");
@@ -79,8 +80,11 @@ namespace XCharts
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_End);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_MinShowNum);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
if (m_Start.floatValue < 0) m_Start.floatValue = 0;
if (m_End.floatValue > 100) m_End.floatValue = 100;
if (m_MinShowNum.intValue < 0) m_MinShowNum.intValue = 0;
--EditorGUI.indentLevel;
}
}
@@ -91,7 +95,7 @@ namespace XCharts
int num = 1;
if (m_DataZoomModuleToggle)
{
num += 7;
num += 8;
if (prop.FindPropertyRelative("m_SupportSlider").boolValue) num += 6;
}

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