applyRangePadding method
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;
}
}