From 3db082c376a2acb075fe6a087197bbc0badf35be Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Thu, 1 Jul 2021 07:38:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0`DataZoom`=E7=9A=84`supportIn?= =?UTF-8?q?sideScroll`=E5=92=8C`supportInsideDrag`=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=9D=90=E6=A0=87=E7=B3=BB=E5=86=85=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E6=94=AF=E6=8C=81=E6=BB=9A=E5=8A=A8=E5=92=8C=E6=8B=96?= =?UTF-8?q?=E6=8B=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG-EN.md | 1 + CHANGELOG.md | 1 + Editor/PropertyDrawers/DataZoomDrawer.cs | 6 ++++++ Runtime/Component/Main/DataZoom.cs | 26 ++++++++++++++++++++---- 4 files changed, 30 insertions(+), 4 deletions(-) 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) {