1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- namespace XCharts.Runtime
- {
- public static class DataZoomHelper
- {
- public static void UpdateDataZoomRuntimeStartEndValue(DataZoom dataZoom, Serie serie)
- {
- if (dataZoom == null || serie == null)
- return;
-
- double min = 0;
- double max = 0;
- SerieHelper.GetMinMaxData(serie, out min, out max, null);
- dataZoom.context.startValue = min + (max - min) * dataZoom.start / 100;
- dataZoom.context.endValue = min + (max - min) * dataZoom.end / 100;
- }
-
- public static void UpdateDataZoomRuntimeStartEndValue<T>(BaseChart chart) where T : Serie
- {
- foreach (var component in chart.components)
- {
- if (component is DataZoom)
- {
- var dataZoom = component as DataZoom;
- if (!dataZoom.enable)
- continue;
-
- double min = double.MaxValue;
- double max = double.MinValue;
- foreach (var serie in chart.series)
- {
- if (!serie.show || !(serie is T))
- continue;
- if (!dataZoom.IsContainsXAxis(serie.xAxisIndex))
- continue;
-
- var axis = chart.GetChartComponent<XAxis>(serie.xAxisIndex);
-
- if (axis.minMaxType == Axis.AxisMinMaxType.Custom)
- {
- if (axis.min < min)
- min = axis.min;
- if (axis.max > max)
- max = axis.max;
- }
- else
- {
- double serieMinValue = 0;
- double serieMaxValue = 0;
- SerieHelper.GetMinMaxData(serie, out serieMinValue, out serieMaxValue, null, 2);
- if (serieMinValue < min)
- min = serieMinValue;
- if (serieMaxValue > max)
- max = serieMaxValue;
- }
- }
- dataZoom.context.startValue = min + (max - min) * dataZoom.start / 100;
- dataZoom.context.endValue = min + (max - min) * dataZoom.end / 100;
- }
- }
- }
- }
- }
|