applyRangePadding method

  1. @override
void applyRangePadding(
  1. _VisibleRange range,
  2. num? interval
)
override

Applies range padding to auto, normal, additional, round, and none types.

Implementation

@override
void applyRangePadding(_VisibleRange range, num? interval) {
  _min = range.minimum.toInt();
  _max = range.maximum.toInt();
  ActualRangeChangedArgs rangeChangedArgs;
  if (_dateTimeAxis.minimum == null && _dateTimeAxis.maximum == null) {
    final ChartRangePadding rangePadding =
        _calculateRangePadding(this, _chart);
    final DateTime minimum =
        DateTime.fromMillisecondsSinceEpoch(_min!.toInt());
    final DateTime maximum =
        DateTime.fromMillisecondsSinceEpoch(_max!.toInt());
    if (rangePadding == ChartRangePadding.none) {
      _min = minimum.millisecondsSinceEpoch;
      _max = maximum.millisecondsSinceEpoch;
    } else if (rangePadding == ChartRangePadding.additional ||
        rangePadding == ChartRangePadding.round) {
      switch (_actualIntervalType) {
        case DateTimeIntervalType.years:
          _calculateYear(minimum, maximum, rangePadding, interval!.toInt());
          break;
        case DateTimeIntervalType.months:
          _calculateMonth(minimum, maximum, rangePadding, interval!.toInt());
          break;
        case DateTimeIntervalType.days:
          _calculateDay(minimum, maximum, rangePadding, interval!.toInt());
          break;
        case DateTimeIntervalType.hours:
          _calculateHour(minimum, maximum, rangePadding, interval!.toInt());
          break;
        case DateTimeIntervalType.minutes:
          _calculateMinute(minimum, maximum, rangePadding, interval!.toInt());
          break;
        case DateTimeIntervalType.seconds:
          _calculateSecond(minimum, maximum, rangePadding, interval!.toInt());
          break;
        case DateTimeIntervalType.auto:
          break;
      }
    }
  }
  range.minimum = _min;
  range.maximum = _max;
  range.delta = range.maximum - range.minimum;

  calculateVisibleRange(_axisSize);

  /// Setting range as visible zoomRange
  if ((_dateTimeAxis.visibleMinimum != null ||
          _dateTimeAxis.visibleMaximum != null) &&
      (_dateTimeAxis.visibleMinimum != _dateTimeAxis.visibleMaximum) &&
      (!_chartState._isRedrawByZoomPan)) {
    _chartState._isRedrawByZoomPan = false;
    _visibleRange!.minimum = _visibleMinimum ??
        (_dateTimeAxis.visibleMinimum != null
            ? _dateTimeAxis.visibleMinimum!.millisecondsSinceEpoch
            : _visibleRange!.minimum);
    _visibleRange!.maximum = _visibleMaximum ??
        (_dateTimeAxis.visibleMaximum != null
            ? _dateTimeAxis.visibleMaximum!.millisecondsSinceEpoch
            : _visibleRange!.maximum);
    _visibleRange!.delta = _visibleRange!.maximum - _visibleRange!.minimum;
    _visibleRange!.interval = calculateInterval(_visibleRange!, _axisSize);
    _visibleRange!.interval = interval != null && interval % 1 != 0
        ? interval
        : _visibleRange!.interval;
    _zoomFactor = _visibleRange!.delta / (range.delta);
    _zoomPosition =
        (_visibleRange!.minimum - _actualRange!.minimum) / range.delta;
  }
  if (_chart.onActualRangeChanged != null) {
    rangeChangedArgs = ActualRangeChangedArgs(_name!, _dateTimeAxis,
        range.minimum, range.maximum, range.interval, _orientation!);
    rangeChangedArgs.visibleMin = _visibleRange!.minimum;
    rangeChangedArgs.visibleMax = _visibleRange!.maximum;
    rangeChangedArgs.visibleInterval = _visibleRange!.interval;
    _chart.onActualRangeChanged!(rangeChangedArgs);
    _visibleRange!.minimum = rangeChangedArgs.visibleMin is DateTime
        ? rangeChangedArgs.visibleMin.millisecondsSinceEpoch
        : rangeChangedArgs.visibleMin;
    _visibleRange!.maximum = rangeChangedArgs.visibleMax is DateTime
        ? rangeChangedArgs.visibleMax.millisecondsSinceEpoch
        : rangeChangedArgs.visibleMax;
    _visibleRange!.delta = _visibleRange!.maximum - _visibleRange!.minimum;
    _visibleRange!.interval = rangeChangedArgs.visibleInterval;
    _zoomFactor = _visibleRange!.delta / (range.delta);
    _zoomPosition =
        (_visibleRange!.minimum - _actualRange!.minimum) / range.delta;
  }
}