Example #1
0
        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);
        }