diff --git a/CHANGELOG-EN.md b/CHANGELOG-EN.md index 50005d1c..22a5e48f 100644 --- a/CHANGELOG-EN.md +++ b/CHANGELOG-EN.md @@ -38,6 +38,7 @@ ## master +* (2021.07.01) Added `DataZoom` arguments to `supportInsideScroll` and `supportInsideDrag` to set whether scrolling and dragging are supported in the coordinate system * (2021.06.27) Add `showStartLabel` and `showEndLabel` arguments to `AxisLabel` to set whether the `Label` should be displayed at the beginning and end of the `AxisLabel` * (2021.06.27) Added `formatter` delegate method to `AxisLabel` and `SerieLabel` (#145) * (2021.06.27) Added `DataZoom`'s `orient` parameter to set horizontal or vertical styles diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c928b15..bfdafc11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ ## master +* (2021.07.01) 增加`DataZoom`的`supportInsideScroll`和`supportInsideDrag`参数设置坐标系内是否支持滚动和拖拽 * (2021.06.27) 增加`AxisLabel`的`showStartLabel`和`showEndLabel`参数设置首尾的`Label`是否显示 * (2021.06.27) 增加`AxisLabel`和`SerieLabel`的`formatter`委托方法 (#145) * (2021.06.27) 增加`DataZoom`的`orient`参数设置水平或垂直样式 diff --git a/Editor/PropertyDrawers/DataZoomDrawer.cs b/Editor/PropertyDrawers/DataZoomDrawer.cs index d8392442..c994ddb8 100644 --- a/Editor/PropertyDrawers/DataZoomDrawer.cs +++ b/Editor/PropertyDrawers/DataZoomDrawer.cs @@ -19,6 +19,7 @@ namespace XCharts base.OnGUI(pos, prop, label); if (MakeFoldout(prop, "m_Enable")) { + var m_SupportInside = prop.FindPropertyRelative("m_SupportInside"); var m_SupportSlider = prop.FindPropertyRelative("m_SupportSlider"); var m_Start = prop.FindPropertyRelative("m_Start"); var m_End = prop.FindPropertyRelative("m_End"); @@ -26,6 +27,11 @@ namespace XCharts ++EditorGUI.indentLevel; PropertyField(prop, "m_Orient"); PropertyField(prop, "m_SupportInside"); + if (m_SupportInside.boolValue) + { + PropertyField(prop, "m_SupportInsideScroll"); + PropertyField(prop, "m_SupportInsideDrag"); + } PropertyField(prop, m_SupportSlider); PropertyField(prop, "m_ZoomLock"); PropertyField(prop, "m_ScrollSensitivity"); diff --git a/Runtime/Component/Main/DataZoom.cs b/Runtime/Component/Main/DataZoom.cs index a312fa02..783c85b7 100644 --- a/Runtime/Component/Main/DataZoom.cs +++ b/Runtime/Component/Main/DataZoom.cs @@ -74,6 +74,8 @@ namespace XCharts [SerializeField] private List m_XAxisIndexs = new List() { 0 }; [SerializeField] private List m_YAxisIndexs = new List() { }; [SerializeField] private bool m_SupportInside; + [SerializeField] private bool m_SupportInsideScroll = true; + [SerializeField] private bool m_SupportInsideDrag = true; [SerializeField] private bool m_SupportSlider; [SerializeField] private bool m_SupportSelect; [SerializeField] private bool m_ShowDataShadow; @@ -150,6 +152,22 @@ namespace XCharts set { if (PropertyUtil.SetStruct(ref m_SupportInside, value)) SetVerticesDirty(); } } /// + /// 是否支持坐标系内滚动 + /// + public bool supportInsideScroll + { + get { return m_SupportInsideScroll; } + set { if (PropertyUtil.SetStruct(ref m_SupportInsideScroll, value)) SetVerticesDirty(); } + } + /// + /// 是否支持坐标系内拖拽 + /// + public bool supportInsideDrag + { + get { return m_SupportInsideDrag; } + set { if (PropertyUtil.SetStruct(ref m_SupportInsideDrag, value)) SetVerticesDirty(); } + } + /// /// Whether a slider is supported. There are separate sliders on which the user zooms or roams. /// 是否支持滑动条。有单独的滑动条,用户在滑动条上进行缩放或漫游。 /// @@ -771,7 +789,7 @@ namespace XCharts { if (!dataZoom.enable) continue; var grid = chart.GetDataZoomGridOrDefault(dataZoom); - if (dataZoom.supportInside) + if (dataZoom.supportInside && dataZoom.supportInsideDrag) { if (chart.IsInGrid(grid, pos)) { @@ -892,7 +910,7 @@ namespace XCharts { if (!dataZoom.enable || dataZoom.zoomLock) continue; var grid = chart.GetDataZoomGridOrDefault(dataZoom); - if ((dataZoom.supportInside && chart.IsInGrid(grid, pos)) || + if ((dataZoom.supportInside && dataZoom.supportInsideScroll && chart.IsInGrid(grid, pos)) || dataZoom.IsInZoom(pos)) { ScaleDataZoom(dataZoom, eventData.scrollDelta.y * dataZoom.scrollSensitivity); @@ -904,7 +922,7 @@ namespace XCharts { if (deltaPercent == 0) return; if (Input.touchCount > 1) return; - if (!dataZoom.supportInside) return; + if (!dataZoom.supportInside || !dataZoom.supportInsideDrag) return; if (!dataZoom.runtimeCoordinateDrag) return; var diff = dataZoom.end - dataZoom.start; if (deltaPercent > 0) @@ -1007,7 +1025,7 @@ namespace XCharts private void CheckDataZoomScale(DataZoom dataZoom) { - if (!dataZoom.enable || dataZoom.zoomLock || !dataZoom.supportInside) return; + if (!dataZoom.enable || dataZoom.zoomLock || !dataZoom.supportInside || !dataZoom.supportInsideDrag) return; if (Input.touchCount == 2) {