增加DataZoomsupportInsideScrollsupportInsideDrag参数设置坐标系内是否支持滚动和拖拽

This commit is contained in:
monitor1394
2021-07-01 07:38:06 +08:00
parent 26a12f7a33
commit 3db082c376
4 changed files with 30 additions and 4 deletions

View File

@@ -38,6 +38,7 @@
## master ## 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) 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 `formatter` delegate method to `AxisLabel` and `SerieLabel` (#145)
* (2021.06.27) Added `DataZoom`'s `orient` parameter to set horizontal or vertical styles * (2021.06.27) Added `DataZoom`'s `orient` parameter to set horizontal or vertical styles

View File

@@ -38,6 +38,7 @@
## master ## master
* (2021.07.01) 增加`DataZoom``supportInsideScroll``supportInsideDrag`参数设置坐标系内是否支持滚动和拖拽
* (2021.06.27) 增加`AxisLabel``showStartLabel``showEndLabel`参数设置首尾的`Label`是否显示 * (2021.06.27) 增加`AxisLabel``showStartLabel``showEndLabel`参数设置首尾的`Label`是否显示
* (2021.06.27) 增加`AxisLabel``SerieLabel``formatter`委托方法 (#145) * (2021.06.27) 增加`AxisLabel``SerieLabel``formatter`委托方法 (#145)
* (2021.06.27) 增加`DataZoom``orient`参数设置水平或垂直样式 * (2021.06.27) 增加`DataZoom``orient`参数设置水平或垂直样式

View File

@@ -19,6 +19,7 @@ namespace XCharts
base.OnGUI(pos, prop, label); base.OnGUI(pos, prop, label);
if (MakeFoldout(prop, "m_Enable")) if (MakeFoldout(prop, "m_Enable"))
{ {
var m_SupportInside = prop.FindPropertyRelative("m_SupportInside");
var m_SupportSlider = prop.FindPropertyRelative("m_SupportSlider"); var m_SupportSlider = prop.FindPropertyRelative("m_SupportSlider");
var m_Start = prop.FindPropertyRelative("m_Start"); var m_Start = prop.FindPropertyRelative("m_Start");
var m_End = prop.FindPropertyRelative("m_End"); var m_End = prop.FindPropertyRelative("m_End");
@@ -26,6 +27,11 @@ namespace XCharts
++EditorGUI.indentLevel; ++EditorGUI.indentLevel;
PropertyField(prop, "m_Orient"); PropertyField(prop, "m_Orient");
PropertyField(prop, "m_SupportInside"); PropertyField(prop, "m_SupportInside");
if (m_SupportInside.boolValue)
{
PropertyField(prop, "m_SupportInsideScroll");
PropertyField(prop, "m_SupportInsideDrag");
}
PropertyField(prop, m_SupportSlider); PropertyField(prop, m_SupportSlider);
PropertyField(prop, "m_ZoomLock"); PropertyField(prop, "m_ZoomLock");
PropertyField(prop, "m_ScrollSensitivity"); PropertyField(prop, "m_ScrollSensitivity");

View File

@@ -74,6 +74,8 @@ namespace XCharts
[SerializeField] private List<int> m_XAxisIndexs = new List<int>() { 0 }; [SerializeField] private List<int> m_XAxisIndexs = new List<int>() { 0 };
[SerializeField] private List<int> m_YAxisIndexs = new List<int>() { }; [SerializeField] private List<int> m_YAxisIndexs = new List<int>() { };
[SerializeField] private bool m_SupportInside; [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_SupportSlider;
[SerializeField] private bool m_SupportSelect; [SerializeField] private bool m_SupportSelect;
[SerializeField] private bool m_ShowDataShadow; [SerializeField] private bool m_ShowDataShadow;
@@ -150,6 +152,22 @@ namespace XCharts
set { if (PropertyUtil.SetStruct(ref m_SupportInside, value)) SetVerticesDirty(); } set { if (PropertyUtil.SetStruct(ref m_SupportInside, value)) SetVerticesDirty(); }
} }
/// <summary> /// <summary>
/// 是否支持坐标系内滚动
/// </summary>
public bool supportInsideScroll
{
get { return m_SupportInsideScroll; }
set { if (PropertyUtil.SetStruct(ref m_SupportInsideScroll, value)) SetVerticesDirty(); }
}
/// <summary>
/// 是否支持坐标系内拖拽
/// </summary>
public bool supportInsideDrag
{
get { return m_SupportInsideDrag; }
set { if (PropertyUtil.SetStruct(ref m_SupportInsideDrag, value)) SetVerticesDirty(); }
}
/// <summary>
/// Whether a slider is supported. There are separate sliders on which the user zooms or roams. /// Whether a slider is supported. There are separate sliders on which the user zooms or roams.
/// 是否支持滑动条。有单独的滑动条,用户在滑动条上进行缩放或漫游。 /// 是否支持滑动条。有单独的滑动条,用户在滑动条上进行缩放或漫游。
/// </summary> /// </summary>
@@ -771,7 +789,7 @@ namespace XCharts
{ {
if (!dataZoom.enable) continue; if (!dataZoom.enable) continue;
var grid = chart.GetDataZoomGridOrDefault(dataZoom); var grid = chart.GetDataZoomGridOrDefault(dataZoom);
if (dataZoom.supportInside) if (dataZoom.supportInside && dataZoom.supportInsideDrag)
{ {
if (chart.IsInGrid(grid, pos)) if (chart.IsInGrid(grid, pos))
{ {
@@ -892,7 +910,7 @@ namespace XCharts
{ {
if (!dataZoom.enable || dataZoom.zoomLock) continue; if (!dataZoom.enable || dataZoom.zoomLock) continue;
var grid = chart.GetDataZoomGridOrDefault(dataZoom); var grid = chart.GetDataZoomGridOrDefault(dataZoom);
if ((dataZoom.supportInside && chart.IsInGrid(grid, pos)) || if ((dataZoom.supportInside && dataZoom.supportInsideScroll && chart.IsInGrid(grid, pos)) ||
dataZoom.IsInZoom(pos)) dataZoom.IsInZoom(pos))
{ {
ScaleDataZoom(dataZoom, eventData.scrollDelta.y * dataZoom.scrollSensitivity); ScaleDataZoom(dataZoom, eventData.scrollDelta.y * dataZoom.scrollSensitivity);
@@ -904,7 +922,7 @@ namespace XCharts
{ {
if (deltaPercent == 0) return; if (deltaPercent == 0) return;
if (Input.touchCount > 1) return; if (Input.touchCount > 1) return;
if (!dataZoom.supportInside) return; if (!dataZoom.supportInside || !dataZoom.supportInsideDrag) return;
if (!dataZoom.runtimeCoordinateDrag) return; if (!dataZoom.runtimeCoordinateDrag) return;
var diff = dataZoom.end - dataZoom.start; var diff = dataZoom.end - dataZoom.start;
if (deltaPercent > 0) if (deltaPercent > 0)
@@ -1007,7 +1025,7 @@ namespace XCharts
private void CheckDataZoomScale(DataZoom dataZoom) 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) if (Input.touchCount == 2)
{ {