Initial Commit
This commit is contained in:
67
Charts/Axes/DateTime/Strategies/ExtendedDaysStrategy.cs
Normal file
67
Charts/Axes/DateTime/Strategies/ExtendedDaysStrategy.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Microsoft.Research.DynamicDataDisplay.Charts
|
||||
{
|
||||
public class ExtendedDaysStrategy : IDateTimeTicksStrategy
|
||||
{
|
||||
private static readonly DifferenceIn[] diffs = new DifferenceIn[] {
|
||||
DifferenceIn.Year,
|
||||
DifferenceIn.Day,
|
||||
DifferenceIn.Hour,
|
||||
DifferenceIn.Minute,
|
||||
DifferenceIn.Second,
|
||||
DifferenceIn.Millisecond
|
||||
};
|
||||
|
||||
public DifferenceIn GetDifference(TimeSpan span)
|
||||
{
|
||||
span = span.Duration();
|
||||
|
||||
DifferenceIn diff;
|
||||
if (span.Days > 365)
|
||||
diff = DifferenceIn.Year;
|
||||
else if (span.Days > 0)
|
||||
diff = DifferenceIn.Day;
|
||||
else if (span.Hours > 0)
|
||||
diff = DifferenceIn.Hour;
|
||||
else if (span.Minutes > 0)
|
||||
diff = DifferenceIn.Minute;
|
||||
else if (span.Seconds > 0)
|
||||
diff = DifferenceIn.Second;
|
||||
else
|
||||
diff = DifferenceIn.Millisecond;
|
||||
|
||||
return diff;
|
||||
}
|
||||
|
||||
public bool TryGetLowerDiff(DifferenceIn diff, out DifferenceIn lowerDiff)
|
||||
{
|
||||
lowerDiff = diff;
|
||||
|
||||
int index = Array.IndexOf(diffs, diff);
|
||||
if (index == -1)
|
||||
return false;
|
||||
|
||||
if (index == diffs.Length - 1)
|
||||
return false;
|
||||
|
||||
lowerDiff = diffs[index + 1];
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool TryGetBiggerDiff(DifferenceIn diff, out DifferenceIn biggerDiff)
|
||||
{
|
||||
biggerDiff = diff;
|
||||
|
||||
int index = Array.IndexOf(diffs, diff);
|
||||
if (index == -1 || index == 0)
|
||||
return false;
|
||||
|
||||
biggerDiff = diffs[index - 1];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user