private object CalculateDateTimeIntervalType(DoubleRange actualRange, Size availableSize, ref DateTimeIntervalType dateTimeIntervalType) { var dateTimeMin = ChartExtensionUtils.FromOADate(actualRange.Start); var dateTimeMax = ChartExtensionUtils.FromOADate(actualRange.End); var timeSpan = dateTimeMax.Subtract(dateTimeMin); double interval = 0; switch (dateTimeIntervalType) { case DateTimeIntervalType.Years: interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalDays / 365), availableSize); break; case DateTimeIntervalType.Months: interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalDays / 30), availableSize); break; case DateTimeIntervalType.Days: interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalDays), availableSize); break; case DateTimeIntervalType.Hours: interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalHours), availableSize); break; case DateTimeIntervalType.Minutes: interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalMinutes), availableSize); break; case DateTimeIntervalType.Seconds: interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalSeconds), availableSize); break; case DateTimeIntervalType.Milliseconds: interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalMilliseconds), availableSize); break; case DateTimeIntervalType.Auto: var range = new DoubleRange(0, timeSpan.TotalDays / 365); interval = base.CalculateNiceInterval(range, availableSize); if (interval >= 1) { dateTimeIntervalType = DateTimeIntervalType.Years; return(interval); } interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalDays / 30), availableSize); if (interval >= 1) { dateTimeIntervalType = DateTimeIntervalType.Months; return(interval); } interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalDays), availableSize); if (interval >= 1) { dateTimeIntervalType = DateTimeIntervalType.Days; return(interval); } interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalHours), availableSize); if (interval >= 1) { dateTimeIntervalType = DateTimeIntervalType.Hours; return(interval); } interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalMinutes), availableSize); if (interval >= 1) { dateTimeIntervalType = DateTimeIntervalType.Minutes; return(interval); } interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalSeconds), availableSize); if (interval >= 1) { dateTimeIntervalType = DateTimeIntervalType.Seconds; return(interval); } interval = base.CalculateNiceInterval(new DoubleRange(0, timeSpan.TotalMilliseconds), availableSize); dateTimeIntervalType = DateTimeIntervalType.Milliseconds; break; } return(interval); }