예제 #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()));
                }
            }
        }
예제 #2
0
        // TODO: This is duplicated across multiple classes... must refactor
        private AxisGridLine CreateAxisGridLine(AxisMap map, DateTime value, string label)
        {
            var position = map.Map(value);

            var line = new AxisGridLine()
            {
                LabelName = label,
                Position  = position.GetValueOrDefault()
            };

            return(line);
        }
예제 #3
0
        // TODO: This is duplicated across multiple classes... must refactor
        private static AxisGridLine CreateAxisGridLine(AxisMap map, DateTime value)
        {
            var position = map.Map(value);

            var line = new AxisGridLine()
            {
                LabelName = value.ToLongTimeString(),
                Position  = position.GetValueOrDefault()
            };

            return(line);
        }
        private static AxisGridLine CreateAxisLine(AxisMap map, bool value)
        {
            var location = map.Map(value);

            var line = new AxisGridLine()
            {
                LabelName = value.ToString(),
                Position  = location ?? 0d
            };

            return(line);
        }
예제 #5
0
        private IEnumerable <AxisGridLine> CreateValueGridLines(AxisMap map, List <object> values, double lower, double upper)
        {
            if (map.SortOrder == SortOrder.Descending)
            {
                values.Reverse();
            }

            foreach (var value in values)
            {
                var location = map.Map(value).GetValueOrDefault();

                if (location >= lower && location <= upper)
                {
                    yield return(CreateAxisGridLine(location, value.ToString()));
                }
            }
        }
예제 #6
0
 private double GetPosition(AxisMap map, double value)
 {
     return(map.Map(value).GetValueOrDefault());
 }