增加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
* (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

View File

@@ -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`参数设置水平或垂直样式

View File

@@ -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");

View File

@@ -74,6 +74,8 @@ namespace XCharts
[SerializeField] private List<int> m_XAxisIndexs = new List<int>() { 0 };
[SerializeField] private List<int> m_YAxisIndexs = new List<int>() { };
[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(); }
}
/// <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.
/// 是否支持滑动条。有单独的滑动条,用户在滑动条上进行缩放或漫游。
/// </summary>
@@ -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)
{