Beispiel #1
0
        public static DateTimeSequence CalculateHours(Range <DateTime> range, int?interval, int?intervalOffset, int maxCount)
        {
            DateTime        dateTime        = new DateTime(range.Minimum.Year, range.Minimum.Month, range.Minimum.Day, 0, 0, 0);
            NumericSequence numericSequence = NumericSequence.CalculateUnits((int)Math.Floor(range.Minimum.Subtract(dateTime).TotalHours), (int)Math.Ceiling(range.Maximum.Subtract(dateTime).TotalHours), interval, intervalOffset, new int[6]
            {
                1,
                2,
                3,
                6,
                12,
                24
            }, maxCount);
            DateTimeSequence dateTimeSequence = new DateTimeSequence(DateTimeScaleUnit.Hours);

            try
            {
                foreach (DoubleR10 doubleR10 in numericSequence)
                {
                    int      num  = (int)doubleR10;
                    DateTime date = dateTime.AddHours((double)num);
                    dateTimeSequence.Add(date);
                }
            }
            catch (ArgumentOutOfRangeException ex)
            {
            }
            dateTimeSequence.Interval       = numericSequence.Interval;
            dateTimeSequence.IntervalOffset = numericSequence.IntervalOffset;
            return(dateTimeSequence);
        }
Beispiel #2
0
        public static DateTimeSequence CalculateMilliseconds(Range <DateTime> range, int?interval, int?intervalOffset, int maxCount)
        {
            DateTime        dateTime        = new DateTime(range.Minimum.Year, range.Minimum.Month, range.Minimum.Day, range.Minimum.Hour, range.Minimum.Minute, range.Minimum.Second);
            NumericSequence numericSequence = NumericSequence.CalculateUnits((int)Math.Floor(range.Minimum.Subtract(dateTime).TotalMilliseconds), (int)Math.Ceiling(range.Maximum.Subtract(dateTime).TotalMilliseconds), interval, intervalOffset, new int[10]
            {
                1,
                2,
                5,
                10,
                20,
                50,
                100,
                200,
                500,
                1000
            }, maxCount);
            DateTimeSequence dateTimeSequence = new DateTimeSequence(DateTimeScaleUnit.Milliseconds);

            try
            {
                foreach (DoubleR10 doubleR10 in numericSequence)
                {
                    double num = (double)doubleR10;
                    dateTimeSequence.Add(dateTime.AddMilliseconds(num));
                }
            }
            catch (ArgumentOutOfRangeException ex)
            {
            }
            dateTimeSequence.Interval       = numericSequence.Interval;
            dateTimeSequence.IntervalOffset = numericSequence.IntervalOffset;
            return(dateTimeSequence);
        }
Beispiel #3
0
        public static DateTimeSequence CalculateMonths(Range <DateTime> range, int?interval, int?intervalOffset, int maxCount)
        {
            DateTime        dateTime        = new DateTime(range.Minimum.Year, 1, 1);
            NumericSequence numericSequence = NumericSequence.CalculateUnits(range.Minimum.Month - 1, (range.Maximum.Year - dateTime.Year) * 12 + range.Maximum.Month - 1, interval, intervalOffset, new int[5]
            {
                1,
                2,
                3,
                6,
                12
            }, maxCount);
            DateTimeSequence dateTimeSequence = new DateTimeSequence(DateTimeScaleUnit.Months);

            try
            {
                foreach (DoubleR10 doubleR10 in numericSequence)
                {
                    int      months = (int)doubleR10;
                    DateTime date   = dateTime.AddMonths(months);
                    dateTimeSequence.Add(date);
                }
            }
            catch (ArgumentOutOfRangeException ex)
            {
            }
            dateTimeSequence.Interval       = numericSequence.Interval;
            dateTimeSequence.IntervalOffset = numericSequence.IntervalOffset;
            return(dateTimeSequence);
        }
Beispiel #4
0
        public static DateTimeSequence CalculateYears(Range <DateTime> range, int?interval, int?intervalOffset, int maxCount)
        {
            NumericSequence numericSequence = NumericSequence.CalculateUnits(range.Minimum.Year, range.Maximum.Year, interval, intervalOffset, new int[10]
            {
                1,
                2,
                5,
                10,
                20,
                50,
                100,
                200,
                500,
                1000
            }, maxCount);
            DateTimeSequence dateTimeSequence = new DateTimeSequence(DateTimeScaleUnit.Years);

            try
            {
                foreach (DoubleR10 doubleR10 in numericSequence)
                {
                    int year = (int)doubleR10;
                    if (year > 0 && year < 10000)
                    {
                        dateTimeSequence.Add(new DateTime(year, 1, 1));
                    }
                }
            }
            catch (ArgumentOutOfRangeException ex)
            {
            }
            dateTimeSequence.Interval       = numericSequence.Interval;
            dateTimeSequence.IntervalOffset = numericSequence.IntervalOffset;
            return(dateTimeSequence);
        }
Beispiel #5
0
 public void ExtendToCover(DateTime min, DateTime max)
 {
     try
     {
         while (min < this._min)
         {
             this._min = DateTimeSequence.AddInterval(this._min, -this._interval, this._unit);
             this._sequence.Insert(0, this._min);
         }
     }
     catch (ArgumentOutOfRangeException ex)
     {
     }
     try
     {
         while (max > this._max)
         {
             this._max = DateTimeSequence.AddInterval(this._max, this._interval, this._unit);
             this._sequence.Add(this._max);
         }
     }
     catch (ArgumentOutOfRangeException ex)
     {
     }
 }
Beispiel #6
0
        public DateTimeSequence RemoveDuplicates(DateTimeSequence other)
        {
            if (other == null || other.Count == 0)
            {
                return(this);
            }
            DateTimeSequence dateTimeSequence = new DateTimeSequence(this._unit);
            int index1 = 0;

            for (int index2 = 0; index2 < this.Count; ++index2)
            {
                DateTime date = this[index2];
                bool     flag = false;
                if (index1 < other.Count)
                {
                    DateTime dateTime = other[index1];
                    while (dateTime < date && index1 < other.Count - 1)
                    {
                        dateTime = other[++index1];
                    }
                    if (date == dateTime)
                    {
                        flag = true;
                    }
                }
                if (!flag)
                {
                    dateTimeSequence.Add(date);
                }
            }
            return(dateTimeSequence);
        }
Beispiel #7
0
 private IEnumerable <ScalePosition> Project(ScaleElementDefinition element, DateTimeSequence sequence)
 {
     this.RecalculateIfEmpty();
     foreach (DateTime dateTime in sequence)
     {
         yield return(new ScalePosition((object)dateTime, this.Project(dateTime)));
     }
 }
Beispiel #8
0
        public static DateTimeSequence CalculateWeeks(Range <DateTime> range, int?interval, int?intervalOffset, int maxCount, DayOfWeek firstDayOfWeek)
        {
            DateTime dateTime = new DateTime(range.Minimum.Year, range.Minimum.Month, range.Minimum.Day);

            while (dateTime.DayOfWeek != firstDayOfWeek)
            {
                dateTime = dateTime.AddDays(-1.0);
            }
            int num1            = (int)Math.Floor(range.Minimum.Subtract(dateTime).TotalDays);
            int num2            = (int)Math.Ceiling(range.Maximum.Subtract(dateTime).TotalDays);
            int min             = num1;
            int max             = num2;
            int?nullable        = interval;
            int?interval1       = nullable.HasValue ? new int?(nullable.GetValueOrDefault() * 7) : new int?();
            int?intervalOffset1 = intervalOffset;

            int[] steps = new int[2]
            {
                7,
                14
            };
            int              maxCount1        = maxCount;
            NumericSequence  numericSequence  = NumericSequence.CalculateUnits(min, max, interval1, intervalOffset1, steps, maxCount1);
            DateTimeSequence dateTimeSequence = new DateTimeSequence(DateTimeScaleUnit.Weeks);

            try
            {
                foreach (DoubleR10 doubleR10 in numericSequence)
                {
                    int      num3 = (int)doubleR10;
                    DateTime date = dateTime.AddDays((double)num3);
                    dateTimeSequence.Add(date);
                }
            }
            catch (ArgumentOutOfRangeException ex)
            {
            }
            dateTimeSequence.Interval       = numericSequence.Interval / (DoubleR10)7;
            dateTimeSequence.IntervalOffset = numericSequence.IntervalOffset / (DoubleR10)7;
            return(dateTimeSequence);
        }
Beispiel #9
0
        public static DateTimeSequence CalculateCenturies(Range <DateTime> range, int?interval, int?intervalOffset, int maxCount)
        {
            NumericRangeInfo range1 = new NumericRangeInfo((DoubleR10)range.Minimum.Year, (DoubleR10)range.Maximum.Year);
            int?   nullable1        = interval;
            double?interval1        = nullable1.HasValue ? new double?((double)nullable1.GetValueOrDefault()) : new double?();
            int?   nullable2        = intervalOffset;
            double?intervalOffset1  = nullable2.HasValue ? new double?((double)nullable2.GetValueOrDefault()) : new double?();
            int    maxCount1        = maxCount;
            int    minPower         = 2;

            DoubleR10[] steps = new DoubleR10[3]
            {
                (DoubleR10)1,
                (DoubleR10)2,
                (DoubleR10)5
            };
            int              num = 1;
            double           maxAllowedMargin = 1.0;
            NumericSequence  numericSequence  = NumericSequence.Calculate(range1, interval1, intervalOffset1, maxCount1, minPower, steps, num != 0, maxAllowedMargin);
            DateTimeSequence dateTimeSequence = new DateTimeSequence(DateTimeScaleUnit.Years);

            try
            {
                foreach (DoubleR10 doubleR10 in numericSequence)
                {
                    int year = (int)doubleR10;
                    if (year > 0)
                    {
                        dateTimeSequence.Add(new DateTime(year, 1, 1));
                    }
                }
            }
            catch (ArgumentOutOfRangeException ex)
            {
            }
            dateTimeSequence.Interval       = numericSequence.Interval;
            dateTimeSequence.IntervalOffset = numericSequence.IntervalOffset;
            return(dateTimeSequence);
        }
Beispiel #10
0
        private void CalculateSampleContent()
        {
            string           str1             = (string)null;
            LabelDefinition  label            = this.GetLabel(this.ActualMajorIntervalUnit);
            DateTimeSequence dateTimeSequence = this._majorSequence;

            for (int index = 0; index < dateTimeSequence.Count && index < 50; ++index)
            {
                string str2 = label.GetContent((object)dateTimeSequence[index]) as string;
                if (!string.IsNullOrEmpty(str2) && (str1 == null || str2.Length > str1.Length))
                {
                    str1 = str2;
                }
            }
            if (string.IsNullOrEmpty(str1))
            {
                label.SampleContent = label.GetContent((object)DateTime.Now);
            }
            else
            {
                label.SampleContent = (object)str1;
            }
        }
Beispiel #11
0
        public override void Recalculate()
        {
            Range <DateTime> range = DateTimeSequence.CalculateRange(this.ViewMinimum, this.ViewMaximum, this.Minimum, this.Maximum, RangeHelper.Add <DateTime>(this.ActualDataRange, this.CrossingPosition), this.DefaultRange);
            TimeSpan         size  = range.Maximum.Subtract(range.Minimum);

            this.ActualMajorIntervalUnit = DateTimeScale.IsNullOrRelative(this.MajorIntervalUnit) ? DateTimeSequence.GetMajorUnit(size, this.MaxCount) : this.MajorIntervalUnit.Value;
            this.ActualMinorIntervalUnit = DateTimeScale.IsNullOrRelative(this.MinorIntervalUnit) ? DateTimeSequence.GetMinorUnit(size, this.MaxCount) : this.MinorIntervalUnit.Value;
            int maxCount1 = this.MaxCount;

            switch (this.ActualMajorIntervalUnit)
            {
            case DateTimeScaleUnit.Years:
                this._majorSequence = DateTimeSequence.CalculateYears(range, this.MajorInterval, this.MajorIntervalOffset, maxCount1);
                break;

            case DateTimeScaleUnit.Months:
                this._majorSequence = DateTimeSequence.CalculateMonths(range, this.MajorInterval, this.MajorIntervalOffset, maxCount1);
                break;

            case DateTimeScaleUnit.Weeks:
                this._majorSequence = DateTimeSequence.CalculateWeeks(range, this.MajorInterval, this.MajorIntervalOffset, maxCount1, this.FirstDayOfWeek);
                break;

            case DateTimeScaleUnit.Days:
                this._majorSequence = DateTimeSequence.CalculateDays(range, this.MajorInterval, this.MajorIntervalOffset, maxCount1);
                break;

            case DateTimeScaleUnit.Hours:
                this._majorSequence = DateTimeSequence.CalculateHours(range, this.MajorInterval, this.MajorIntervalOffset, maxCount1);
                break;

            case DateTimeScaleUnit.Minutes:
                this._majorSequence = DateTimeSequence.CalculateMinutes(range, this.MajorInterval, this.MajorIntervalOffset, maxCount1);
                break;

            case DateTimeScaleUnit.Seconds:
                this._majorSequence = DateTimeSequence.CalculateSeconds(range, this.MajorInterval, this.MajorIntervalOffset, maxCount1);
                break;

            case DateTimeScaleUnit.Milliseconds:
                this._majorSequence = DateTimeSequence.CalculateMilliseconds(range, this.MajorInterval, this.MajorIntervalOffset, maxCount1);
                break;

            default:
                throw new NotImplementedException();
            }
            int maxCount2 = this._majorSequence.Count * DateTimeSequence.GetMinorCountPerMajorInterval(this.ActualMajorIntervalUnit);

            switch (this.ActualMinorIntervalUnit)
            {
            case DateTimeScaleUnit.Years:
                this._minorSequence = DateTimeSequence.CalculateYears(range, this.MinorInterval, this.MinorIntervalOffset, maxCount2);
                break;

            case DateTimeScaleUnit.Months:
                this._minorSequence = DateTimeSequence.CalculateMonths(range, this.MinorInterval, this.MinorIntervalOffset, maxCount2);
                break;

            case DateTimeScaleUnit.Weeks:
                this._minorSequence = DateTimeSequence.CalculateWeeks(range, this.MinorInterval, this.MinorIntervalOffset, maxCount2, this.FirstDayOfWeek);
                break;

            case DateTimeScaleUnit.Days:
                this._minorSequence = DateTimeSequence.CalculateDays(range, this.MinorInterval, this.MinorIntervalOffset, maxCount2);
                break;

            case DateTimeScaleUnit.Hours:
                this._minorSequence = DateTimeSequence.CalculateHours(range, this.MinorInterval, this.MinorIntervalOffset, maxCount2);
                break;

            case DateTimeScaleUnit.Minutes:
                this._minorSequence = DateTimeSequence.CalculateMinutes(range, this.MinorInterval, this.MinorIntervalOffset, maxCount2);
                break;

            case DateTimeScaleUnit.Seconds:
                this._minorSequence = DateTimeSequence.CalculateSeconds(range, this.MinorInterval, this.MinorIntervalOffset, maxCount2);
                break;

            case DateTimeScaleUnit.Milliseconds:
                this._minorSequence = DateTimeSequence.CalculateMilliseconds(range, this.MinorInterval, this.MinorIntervalOffset, maxCount2);
                break;

            default:
                throw new NotImplementedException();
            }
            if (this.ActualDataRange.HasValue && !this.Minimum.HasValue)
            {
                range = range.ExtendTo(this._minorSequence.Minimum);
            }
            if (this.ActualDataRange.HasValue && !this.Maximum.HasValue)
            {
                range = range.ExtendTo(this._minorSequence.Maximum);
            }
            this.CalculateActual(range);
            this.CalculateSampleContent();
            base.Recalculate();
        }
Beispiel #12
0
        public void MoveToCover(DateTime min, DateTime max)
        {
            int num1 = (int)this._interval;

            switch (this.Unit)
            {
            case DateTimeScaleUnit.Years:
                int num2 = (min.Year - this._min.Year) / num1;
                if (num2 < 0)
                {
                    --num2;
                }
                this._min = this._min.AddYears(num2 * num1);
                break;

            case DateTimeScaleUnit.Months:
                int num3 = ((min.Year - this._min.Year) * 12 + min.Month - this._min.Month) / num1;
                if (num3 < 0)
                {
                    --num3;
                }
                this._min = this._min.AddMonths(num3 * num1);
                break;

            case DateTimeScaleUnit.Weeks:
                this._min = this._min.AddDays(Math.Floor(min.Subtract(this._min).TotalDays / 7.0 / (double)num1) * (double)num1 * 7.0);
                break;

            case DateTimeScaleUnit.Days:
                this._min = this._min.AddDays(Math.Floor(min.Subtract(this._min).TotalDays / (double)num1) * (double)num1);
                break;

            case DateTimeScaleUnit.Hours:
                this._min = this._min.AddHours(Math.Floor(min.Subtract(this._min).TotalHours / (double)num1) * (double)num1);
                break;

            case DateTimeScaleUnit.Minutes:
                this._min = this._min.AddMinutes(Math.Floor(min.Subtract(this._min).TotalMinutes / (double)num1) * (double)num1);
                break;

            case DateTimeScaleUnit.Seconds:
                this._min = this._min.AddSeconds(Math.Floor(min.Subtract(this._min).TotalSeconds / (double)num1) * (double)num1);
                break;

            case DateTimeScaleUnit.Milliseconds:
                this._min = this._min.AddMilliseconds(Math.Floor(min.Subtract(this._min).TotalMilliseconds / (double)num1) * (double)num1);
                break;

            default:
                throw new NotImplementedException();
            }
            this._sequence.Clear();
            this._sequence.Add(this._min);
            this._max = this._min;
            try
            {
                while (max > this._max)
                {
                    this._max = DateTimeSequence.AddInterval(this._max, this._interval, this._unit);
                    this._sequence.Add(this._max);
                }
            }
            catch (ArgumentOutOfRangeException ex)
            {
            }
        }