private void UpdateTimeline(List <Tuple <string, DateTime> > NewInterval) { //New series collection to update actual series collection SeriesCollection SC = new SeriesCollection(); List <LineSeries> ListOfMacLines = new List <LineSeries>(); GlobalInterval.Clear(); Mac.Clear(); Time.Clear(); SeriesCollection.Clear(); TimeIntervalGlobal.Clear(); //Insert new intervals GlobalInterval.AddRange(NewInterval); //Sort all list of itervals GlobalInterval.Sort((x, y) => DateTime.Compare(x.Item2, y.Item2)); //Dictionary containing the first part of the interval detected inside global interval Dictionary <string, DateTime> InitializedPoints = new Dictionary <string, DateTime>(); foreach (Tuple <string, DateTime> t in GlobalInterval) { //Check if mac is new or inside list if (!Mac.Contains(t.Item1)) { //Mac is new, is not inside list Mac.Add(t.Item1); LineSeries ls = new LineSeries(); ls.Title = t.Item1; ls.Values = new ChartValues <ObservablePoint>(); ListOfMacLines.Add(ls); } //Check if interval is already in graph if (!TimeIntervalGlobal.Contains(t.Item2)) { //Time value is not inside graph UpdateTimeInterval(t.Item2); } //Check if first part of interval is already inside dictionary if (!InitializedPoints.ContainsKey(t.Item1)) { //First part of interval has been found InitializedPoints.Add(t.Item1, t.Item2); } else { //Last part of interval has been found ObservablePoint p1 = new ObservablePoint(TimeIntervalGlobal.IndexOf(InitializedPoints[t.Item1]), Mac.IndexOf(t.Item1)); ObservablePoint p2 = new ObservablePoint(TimeIntervalGlobal.IndexOf(t.Item2), Mac.IndexOf(t.Item1)); //List of observable point ChartValues <ObservablePoint> Values = new ChartValues <ObservablePoint>(); Values.Add(new ObservablePoint(double.NaN, double.NaN)); Values.Add(p1); Values.Add(p2); Values.Add(new ObservablePoint(double.NaN, double.NaN)); //Insert interval inside LineSeries ListOfMacLines.Find(x => x.Title.CompareTo(t.Item1) == 0).Values = Values; } } SeriesCollection.Clear(); foreach (LineSeries ls in ListOfMacLines) { SeriesCollection.Add(ls); } }