Пример #1
0
        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")
            {
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
                }
            }
        }
Пример #4
0
        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());
                }
            }
        }