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); }
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); }
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); }
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); }
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) { } }
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); }
private IEnumerable <ScalePosition> Project(ScaleElementDefinition element, DateTimeSequence sequence) { this.RecalculateIfEmpty(); foreach (DateTime dateTime in sequence) { yield return(new ScalePosition((object)dateTime, this.Project(dateTime))); } }
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); }
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); }
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; } }
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(); }
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) { } }