Beispiel #1
0
        public static void UpdateDataZoomRuntimeStartEndValue(CoordinateChart chart, SerieType serieType)
        {
            foreach (var dataZoom in chart.dataZooms)
            {
                if (!dataZoom.enable)
                {
                    continue;
                }
                double min = double.MaxValue;
                double max = double.MinValue;
                foreach (var serie in chart.series.list)
                {
                    if (!serie.show || serie.type != serieType)
                    {
                        continue;
                    }
                    if (!dataZoom.IsContainsXAxis(serie.xAxisIndex))
                    {
                        continue;
                    }
                    var axis = chart.GetXAxis(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.runtimeStartValue = min + (max - min) * dataZoom.start / 100;
                dataZoom.runtimeEndValue   = min + (max - min) * dataZoom.end / 100;
            }
        }
 private void CheckDataZoomLabel(DataZoom dataZoom)
 {
     if (dataZoom.enable && dataZoom.supportSlider && dataZoom.showDetail)
     {
         Vector2 local;
         if (!chart.ScreenPointToChartPoint(Input.mousePosition, out local))
         {
             dataZoom.SetLabelActive(false);
             return;
         }
         if (dataZoom.IsInSelectedZoom(local) ||
             dataZoom.IsInStartZoom(local) ||
             dataZoom.IsInEndZoom(local))
         {
             dataZoom.SetLabelActive(true);
             RefreshDataZoomLabel();
         }
         else
         {
             dataZoom.SetLabelActive(false);
         }
     }
     if (m_CheckDataZoomLabel)
     {
         m_CheckDataZoomLabel = false;
         var xAxis      = chart.GetXAxis(dataZoom.xAxisIndexs[0]);
         var startIndex = (int)((xAxis.data.Count - 1) * dataZoom.start / 100);
         var endIndex   = (int)((xAxis.data.Count - 1) * dataZoom.end / 100);
         if (m_DataZoomLastStartIndex != startIndex || m_DataZoomLastEndIndex != endIndex)
         {
             m_DataZoomLastStartIndex = startIndex;
             m_DataZoomLastEndIndex   = endIndex;
             if (xAxis.data.Count > 0)
             {
                 dataZoom.SetStartLabelText(xAxis.data[startIndex]);
                 dataZoom.SetEndLabelText(xAxis.data[endIndex]);
             }
             chart.InitAxisX();
         }
         var start = dataZoom.runtimeX + dataZoom.runtimeWidth * dataZoom.start / 100;
         var end   = dataZoom.runtimeX + dataZoom.runtimeWidth * dataZoom.end / 100;
         var hig   = dataZoom.runtimeHeight;
         dataZoom.UpdateStartLabelPosition(new Vector3(start - 10, chart.chartY + dataZoom.bottom + hig / 2));
         dataZoom.UpdateEndLabelPosition(new Vector3(end + 10, chart.chartY + dataZoom.bottom + hig / 2));
     }
 }