private void TrainingViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (db_context != null) { try { db_context.SaveChanges(); } catch (Exception ex) { MessageBox.Show(ex.InnerException.ToString()); } } tr_pathWrapper l_wrapper = (sender as tr_pathWrapper); trPathNodeModel l_node = path_graph_dict[l_wrapper.num_path][0].ActualValues[(int)l_wrapper.order] as trPathNodeModel; if (e.PropertyName == "speed") { l_node.Speed = l_wrapper.speed; if (l_wrapper.order == path_graph_dict[l_wrapper.num_path][0].ActualValues.Count - 2) { (path_graph_dict[l_wrapper.num_path][0].ActualValues[(int)l_wrapper.order + 1] as trPathNodeModel).Speed = l_wrapper.speed; } } else if (e.PropertyName == "duration") { } }
ObservableCollection <tr_pathWrapper> collectionOfWrappers(List <tr_path> a_col) { ObservableCollection <tr_pathWrapper> l_res = new ObservableCollection <tr_pathWrapper>(); foreach (var v in a_col) { tr_pathWrapper l_w = new tr_pathWrapper(v, (l_res.Count > 0 ? l_res.Last() : null)); l_res.Add(l_w); } return(l_res); }
public void DeleteTrPathItem(ObservableCollection <tr_pathWrapper> a_col, tr_pathWrapper item, SeriesCollection a_graf) { if (item == null) { return; } a_col.Remove(item); int idx = (int)item.order; a_graf[0].ActualValues.RemoveAt(idx); //if fake point left then remove it int l_pointCnt = a_graf[0].ActualValues.Count; if (l_pointCnt < 2) { a_graf[0].ActualValues.Clear(); } else { for (int i = idx; i < l_pointCnt; ++i) { (a_graf[0].ActualValues[i] as trPathNodeModel).Start -= item.duration; } (a_graf[0].ActualValues[l_pointCnt - 1] as trPathNodeModel).Speed = (a_graf[0].ActualValues[l_pointCnt - 2] as trPathNodeModel).Speed; } if (item.Next != null) { item.Next.order--; } if (db_context != null) { db_context.tr_path.Remove(item.tr_path); try { db_context.SaveChanges(); } catch (Exception e) { MessageBox.Show(e.InnerException.ToString()); } } }
public void AddTrPathItem(ObservableCollection <tr_pathWrapper> a_col, tr_pathWrapper item, SeriesCollection a_graf, long a_num_path) { if (item == null) { return; } int idx = (int)item.order + 1; long l_minDuration = 10; tr_pathWrapper l_newPath = new tr_pathWrapper(new tr_path() { id_training = training.id, num_path = a_num_path, duration = l_minDuration, order = idx, speed = a_col[idx - 1].speed }); if (idx < a_col.Count) { a_col.Insert(idx, l_newPath); } else { a_col.Add(l_newPath); } l_newPath.Next = item.Next; if (item.Next != null) { item.Next.Previous = l_newPath; } l_newPath.Previous = item; item.Next = l_newPath; l_newPath.order = idx; l_newPath.deleteButtonClicked += (tr_pathWrapper s) => { DeleteTrPathItem(a_col, s, a_graf); return(1); }; l_newPath.addButtonClicked += (tr_pathWrapper s) => { AddTrPathItem(a_col, s, a_graf, a_num_path); return(1); }; trPathNodeModel l_newPoint = new trPathNodeModel() { Speed = (a_graf[0].ActualValues[idx - 1] as trPathNodeModel).Speed, Start = (a_graf[0].ActualValues[idx - 1] as trPathNodeModel).Start + a_col[idx - 1].duration }; for (int i = idx; i < a_graf[0].ActualValues.Count; ++i) { (a_graf[0].ActualValues[i] as trPathNodeModel).Start += a_col[idx].duration; } a_graf[0].ActualValues.Insert(idx, l_newPoint); int l_pointCnt = a_graf[0].ActualValues.Count; if (idx == l_pointCnt - 2) { (a_graf[0].ActualValues[l_pointCnt - 1] as trPathNodeModel).Speed = (a_graf[0].ActualValues[l_pointCnt - 2] as trPathNodeModel).Speed; } if (db_context != null) { db_context.tr_path.Add(l_newPath.tr_path); try { db_context.SaveChanges(); } catch (Exception e) { MessageBox.Show(e.InnerException.ToString()); } } }