applyRangePadding method

  1. @override
void applyRangePadding (_VisibleRange range, 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;
  _max = range.maximum;
  ActualRangeChangedArgs rangeChangedArgs;
  if (minimum == null && maximum == null) {
    final ChartRangePadding rangePadding =
        _calculateRangePadding(this, _chart);
    final DateTime minimum = DateTime.fromMillisecondsSinceEpoch(_min);
    final DateTime maximum = DateTime.fromMillisecondsSinceEpoch(_max);
    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;
        default:
          break;
      }
    }
  }
  range.minimum = _min;
  range.maximum = _max;
  range.delta = range.maximum - range.minimum;

  calculateVisibleRange(_axisSize);

  /// Setting range as visible zoomRange
  if (visibleMinimum != null && visibleMaximum != null) {
    _visibleRange.minimum = visibleMinimum.millisecondsSinceEpoch;
    _visibleRange.maximum = visibleMaximum.millisecondsSinceEpoch;
    _visibleRange.delta = _visibleRange.maximum - _visibleRange.minimum;
    _zoomFactor = _visibleRange.delta / range.delta;
  }
  if (_chart.onActualRangeChanged != null) {
    rangeChangedArgs = ActualRangeChangedArgs();
    rangeChangedArgs.axis = this;
    rangeChangedArgs.axisName = _name;
    rangeChangedArgs.orientation = _orientation;
    rangeChangedArgs.actualMin = range.minimum;
    rangeChangedArgs.actualMax = range.maximum;
    rangeChangedArgs.actualInterval = range.interval;
    rangeChangedArgs.visibleMin = _visibleRange.minimum;
    rangeChangedArgs.visibleMax = _visibleRange.maximum;
    rangeChangedArgs.visibleInterval = _visibleRange.interval;
    _chart.onActualRangeChanged(rangeChangedArgs);
    _visibleRange.minimum = rangeChangedArgs.visibleMin;
    _visibleRange.maximum = rangeChangedArgs.visibleMax;
    _visibleRange.interval = rangeChangedArgs.visibleInterval;
  }
}