public TimelineGenerator(ICollection <TimelineAxis> axis, TimeRangeCollection allies, double scaleWidth, double minPos, double maxPos)
        {
            AxisDataCollection  = axis;
            TimeRangeCollection = allies;

            _minPos     = minPos;
            _maxPos     = maxPos;
            _scaleWidth = scaleWidth;

            _timePosConverter = new DateTimeAndPosConverter(minPos, maxPos, new TimeRange()
            {
                StartDateTime = TimeRangeCollection.First().StartDateTime,
                EndDateTime   = TimeRangeCollection.Last().EndDateTime
            });
        }
        public void GenerateEvents(Canvas canvas, EventModelManager eventManager)
        {
            var dictionary = eventManager.GetEventModel(TimeRangeCollection.First().StartDateTime, TimeRangeCollection.Last().EndDateTime);

            foreach (var axis in AxisDataCollection)
            {
                if (axis.IsDisplayed == false)
                {
                    continue;
                }

                if (!dictionary.ContainsKey(axis.Id))
                {
                    continue;
                }

                var placableRectList = new List <PlacableRect>();

                foreach (var evModl in dictionary[axis.Id])
                {
                    var top    = GetTop(evModl.StartDateTime);
                    var height = GetHeight(evModl.StartDateTime, evModl.EndDateTime.AddSeconds(-1));

                    var viewModel = new EventBorderViewModel()
                    {
                        Parent = evModl, MyBrush = axis.DrawBrush, Title = evModl.Title
                    };
                    placableRectList.Add(new PlacableRect()
                    {
                        rect = new Rect(0, top, 0, height), source = viewModel
                    });
                }
                GenerateEventBorders(canvas, placableRectList, GetLeft(axis.Id), axis.Width, axis.IsUnbound);
            }
        }