public override Scale Create(DataValueType valueType) { DateTimeScale dateTimeScale = new DateTimeScale(); dateTimeScale.ValueType = valueType; return((Scale)dateTimeScale); }
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(); }