Ejemplo n.º 1
0
        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()));
                }
            }
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 4
0
        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>());
        }