diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md index cb0505f2..6a61bcc2 100644 --- a/Assets/XCharts/CHANGELOG.md +++ b/Assets/XCharts/CHANGELOG.md @@ -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`版本 diff --git a/Assets/XCharts/Documentation/XCharts配置项手册.md b/Assets/XCharts/Documentation/XCharts配置项手册.md index f2a23a38..d621e404 100644 --- a/Assets/XCharts/Documentation/XCharts配置项手册.md +++ b/Assets/XCharts/Documentation/XCharts配置项手册.md @@ -219,6 +219,7 @@ * `scrollSensitivity`:缩放区域组件的敏感度。值越高每次缩放所代表的数据越多。 * `fontSize`:字体大小。 * `fontStyle`:字体样式。 +* `minShowNum`:最小显示数据个数。当DataZoom放大到最大时,最小显示的数据个数。 ## `VisualMap` diff --git a/Assets/XCharts/Editor/PropertyDrawers/DataZoomDrawer.cs b/Assets/XCharts/Editor/PropertyDrawers/DataZoomDrawer.cs index 7c001233..c42c8342 100644 --- a/Assets/XCharts/Editor/PropertyDrawers/DataZoomDrawer.cs +++ b/Assets/XCharts/Editor/PropertyDrawers/DataZoomDrawer.cs @@ -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; } diff --git a/Assets/XCharts/Runtime/Component/Main/Axis.cs b/Assets/XCharts/Runtime/Component/Main/Axis.cs index 95822e63..6c5fe660 100644 --- a/Assets/XCharts/Runtime/Component/Main/Axis.cs +++ b/Assets/XCharts/Runtime/Component/Main/Axis.cs @@ -267,6 +267,7 @@ namespace XCharts private int filterStart; private int filterEnd; + private int filterMinShow; private List filterData; private List m_AxisLabelTextList = new List(); 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 diff --git a/Assets/XCharts/Runtime/Component/Main/Serie.cs b/Assets/XCharts/Runtime/Component/Main/Serie.cs index bc7bfd50..7aed7b28 100644 --- a/Assets/XCharts/Runtime/Component/Main/Serie.cs +++ b/Assets/XCharts/Runtime/Component/Main/Serie.cs @@ -251,6 +251,7 @@ namespace XCharts [NonSerialized] private int m_FilterStart; [NonSerialized] private int m_FilterEnd; + [NonSerialized] private int m_FilterMinShow; [NonSerialized] private List m_FilterData; [NonSerialized] private Dictionary> m_UpSmoothPoints = new Dictionary>(); [NonSerialized] private Dictionary> m_DownSmoothPoints = new Dictionary>(); @@ -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