private IEnumerable <AxisGridLine> CreateAlphaGridLines(AxisMap map, List <string> values, double lower, double upper) { var lowerString = map.SortOrder == SortOrder.Ascending ? (string)map.MapInverse(lower) : (string)map.MapInverse(upper); var upperString = map.SortOrder == SortOrder.Ascending ? (string)map.MapInverse(upper) : (string)map.MapInverse(lower); var lowerChar = IsFirstCharacterValid(lowerString) ? lowerString[0] : StartChar; var upperChar = IsFirstCharacterValid(upperString) ? upperString[0] : EndChar; for (var c = lowerChar; c <= upperChar; c++) { var first = values.Where(p => p != string.Empty) .FirstOrDefault(p => p[0].ToString().ToUpper() == c.ToString().ToUpper()); if (first != null) { yield return(CreateAxisGridLine(map.Map(first).GetValueOrDefault(), c.ToString().ToUpper())); } } }
public IEnumerable <AxisGridLine> Create(AxisMap map, double lower, double upper) { var lowerFloat = map.SortOrder == SortOrder.Ascending ? (double)map.MapInverse(lower) / 2 : (double)map.MapInverse(upper) / 2; var upperFloat = map.SortOrder == SortOrder.Ascending ? (double)map.MapInverse(upper) / 2 : (double)map.MapInverse(lower) / 2; if (lowerFloat <= double.MinValue / 2) { yield return(CreateAxisGridLine(map, double.MinValue)); } if (upperFloat >= double.MaxValue / 2) { yield return(CreateAxisGridLine(map, double.MaxValue)); } var width = (double)upperFloat - lowerFloat; var step = 0d; var start = double.MinValue; for (var i = 0.0000000001; i < double.MaxValue; i *= 10) { double i2 = i / 2; if (width >= i2 && width < i2 * 20) { step = i2; start = lowerFloat - (lowerFloat % i2); break; } } if (step == 0d) { yield break; } for (var i = start; i <= upperFloat; i += step) { yield return(CreateAxisGridLine(map, i * 2)); } }
public IEnumerable <AxisGridLine> Create(AxisMap map, double lower, double upper) { var lowerInt = map.SortOrder == SortOrder.Ascending ? (int)map.MapInverse(lower) : (int)map.MapInverse(upper); var upperInt = map.SortOrder == SortOrder.Ascending ? (int)map.MapInverse(upper) : (int)map.MapInverse(lower); var width = (double)upperInt - lowerInt; if (lowerInt == int.MinValue) { yield return(CreateAxisGridLine(map, lowerInt)); } if (upperInt == int.MaxValue) { yield return(CreateAxisGridLine(map, upperInt)); } var step = 0d; var start = 0d; for (var i = 1d; i < int.MaxValue; i *= 10) { if (width >= i && width < i * 15) { step = i; start = (int)(lowerInt - (lowerInt % i)); break; } } if (step == 0d) { yield break; } for (var i = start; i <= upperInt; i += step) { yield return(CreateAxisGridLine(map, (int)i)); } }
public IEnumerable <AxisGridLine> Create(AxisMap map, double lower, double upper) { var lowerDateTime = map.SortOrder == SortOrder.Ascending ? (DateTime)map.MapInverse(lower) : (DateTime)map.MapInverse(upper); var upperDateTime = map.SortOrder == SortOrder.Ascending ? (DateTime)map.MapInverse(upper) : (DateTime)map.MapInverse(lower); var widthInYears = upperDateTime.Year - lowerDateTime.Year; var widthInDays = upperDateTime.Subtract(lowerDateTime).Days; var widthInSeconds = upperDateTime.Subtract(lowerDateTime).TotalSeconds; var widthInMilliseconds = upperDateTime.Subtract(lowerDateTime).TotalMilliseconds; if (widthInYears == YearsMaxDateTime) { return(_minMaxFactory.Create(map)); } if (widthInYears > YearsInMillenium) { return(_yearFactory.Create(map, lowerDateTime, upperDateTime, YearsInMillenium)); } if (widthInYears > YearsInCentury) { return(_yearFactory.Create(map, lowerDateTime, upperDateTime, YearsInCentury)); } if (widthInYears > YearsInDecade) { return(_yearFactory.Create(map, lowerDateTime, upperDateTime, YearsInDecade)); } if (widthInDays > DaysInYear) { return(_yearFactory.Create(map, lowerDateTime, upperDateTime, 1)); } if (widthInDays > DaysInQuarterYear) { return(_dayFactory.CreateQuarters(map, lowerDateTime, upperDateTime)); } if (widthInDays > DaysInMonth) { return(_dayFactory.CreateMonths(map, lowerDateTime, upperDateTime)); } if (widthInDays > DaysInWeek) { return(_dayFactory.CreateWeeks(map, lowerDateTime, upperDateTime)); } if (widthInSeconds > SecondsInDay) { return(_dayFactory.CreateDays(map, lowerDateTime, upperDateTime)); } if (widthInSeconds > SecondsInFourHours) { return(_secondFactory.CreateFourHours(map, lowerDateTime, upperDateTime)); } if (widthInSeconds > SecondsInHour) { return(_secondFactory.CreateHours(map, lowerDateTime, upperDateTime)); } if (widthInSeconds > SecondsInTenMinutes) { return(_secondFactory.CreateTenMinutes(map, lowerDateTime, upperDateTime)); } if (widthInSeconds > SecondsInMinute) { return(_secondFactory.CreateMinutes(map, lowerDateTime, upperDateTime)); } if (widthInSeconds > SecondsInTenSeconds) { return(_secondFactory.CreateTenSeconds(map, lowerDateTime, upperDateTime)); } if (widthInMilliseconds > MillisecondsInSecond) { return(_secondFactory.CreateSeconds(map, lowerDateTime, upperDateTime)); } return(new List <AxisGridLine>()); }