private async void Delite_Click(object sender, RoutedEventArgs e)
        {
            cnv.Children.Clear();
            TreeCommands tc = new TreeCommands();

            if (((Vertexcs)Add.DataContext).Probability != 0)
            {
                List <Vertexcs> d = DeliteVertexes((Vertexcs)Add.DataContext);
                d.Add((Vertexcs)Add.DataContext);
                await tc.DeliteVerTex(d);

                vert = await tc.GiveALlVertex();
            }
            Button but = new Button();

            but.HorizontalAlignment = HorizontalAlignment.Left;
            but.VerticalAlignment   = VerticalAlignment.Top;
            but.Margin      = new Thickness(Widht / 2 - 10, 50, Widht / 2 - 10, Height - 70);
            but.Background  = new ImageBrush(new BitmapImage(new Uri(pathplus)));
            Back.Background = new ImageBrush(new BitmapImage(new Uri(path)));
            but.DataContext = FirstVer;
            but.Height      = 20;
            but.Width       = 20;
            but.Click      += But_Click;
            cnv.Children.Add(but);
            DrawRootVertexes(FirstVer);
            CostCurrentBranch(FirstVer, 0);
            DrawMaxDangerous();
        }
예제 #2
0
        private async void Window_Activated(object sender, EventArgs e)
        {
            if (flag)
            {
                Widht  = cnv.ActualWidth;
                Height = cnv.ActualHeight;

                DataCommands dc = new DataCommands();
                SelectedRisks = await dc.GiveAllRisks(project);

                if (SelectedRisks == null)
                {
                    SelectedRisks = new List <Risk>();
                }
                Drawing();
                TreeCommands tc = new TreeCommands();
                vert = await tc.GiveALlVertex();

                FirstVerTex = await tc.GiveFristVertex(drisk.Id);

                GiveTitle();
                CreateFirstVertex();
                CostCurrentBranch(FirstVerTex, 0);
                DrawMaxDangerous();
                WriteInListView();
                flag = false;
            }
        }
        private async void Window_Activated(object sender, EventArgs e)
        {
            if (flag)
            {
                try
                {
                    Widht  = cnv.ActualWidth;
                    Height = cnv.ActualHeight;
                    Label lab = new Label();
                    lab.HorizontalAlignment = HorizontalAlignment.Center;
                    lab.VerticalAlignment   = VerticalAlignment.Top;
                    lab.Content             = drisk.RiskName;
                    grid.Children.Add(lab);
                    TreeCommands tc  = new TreeCommands();
                    Button       but = new Button();
                    but.HorizontalAlignment = HorizontalAlignment.Left;
                    but.VerticalAlignment   = VerticalAlignment.Top;
                    but.Margin      = new Thickness(Widht / 2 - 10, 50, Widht / 2 - 10, Height - 70);
                    but.Background  = new ImageBrush(new BitmapImage(new Uri(pathplus)));
                    Back.Background = new ImageBrush(new BitmapImage(new Uri(path)));
                    Back.Foreground = new ImageBrush(new BitmapImage(new Uri(path)));
                    if (!await tc.Exist(drisk.Id))
                    {
                        FirstVer = new Vertexcs(drisk.Id, drisk.RiskName, Widht / 2, 50);
                        await tc.IsertNewVertex(FirstVer, drisk.Id);

                        FirstVer = await tc.GiveFristVertex(drisk.Id);

                        but.DataContext = FirstVer;
                    }
                    else
                    {
                        FirstVer = await tc.GiveFristVertex(drisk.Id);

                        but.DataContext = FirstVer;
                    }
                    but.Height = 20;
                    but.Width  = 20;
                    but.Click += But_Click;
                    cnv.Children.Add(but);
                    vert = await tc.GiveALlVertex();

                    DrawRootVertexes(FirstVer);
                    CostCurrentBranch(FirstVer, 0);
                    DrawMaxDangerous();
                    flag = false;
                }
                catch (NullReferenceException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
        private async void AddNewVertex_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (((Button)sender).DataContext == null)
                {
                    throw new Exception("выбрете вершину");
                }
                if (DESC.Text == "")
                {
                    throw new Exception("Заполните поле Description");
                }
                if (!double.TryParse(COST.Text, out double d))
                {
                    throw new Exception("значение Cost должно быть вещественным числом больше нуля");
                }
                if (double.Parse(COST.Text) <= 0)
                {
                    throw new Exception("значение Cost должно быть вещественным числом больше нуля");
                }
                if (!double.TryParse(Prob.Text, out double d1))
                {
                    throw new Exception("Значение Probability должно быть вещественным числом в предалам (0,1)");
                }
                if (double.Parse(Prob.Text) > 1)
                {
                    throw new Exception("Значение Probability должно быть вещественным числом в предалам (0,1)");
                }
                if (double.Parse(Prob.Text) < 0)
                {
                    throw new Exception("Значение Probability должно быть вещественным числом в предалам (0,1)");
                }
                Vertexcs parent = ((Vertexcs)((Button)sender).DataContext);

                int row = 1;
                CurrenRow(parent, ref row);
                if (parent.Probability != 0)
                {
                    row++;
                }
                if (row >= 4)
                {
                    throw new ArgumentException("Ветвь дерева не может превышать 4");
                }
                Vertexcs newver;
                string   line = $"{(parent.X - Widht / (2 * Math.Pow(4, row))):f3}";
                if (Cheker(double.Parse(line)))
                {
                    newver = new Vertexcs(parent.Id, DESC.Text, double.Parse(COST.Text), double.Parse(Prob.Text), parent.X - Widht / (2 * Math.Pow(4, row)), parent.Y + 50);
                }
                else
                {
                    line = $"{(parent.X + Widht / (2 * Math.Pow(4, row))):f3}";
                    if (Cheker(double.Parse(line)))
                    {
                        newver = new Vertexcs(parent.Id, DESC.Text, double.Parse(COST.Text), double.Parse(Prob.Text), parent.X + Widht / (2 * Math.Pow(4, row)), parent.Y + 50);
                    }
                    else
                    {
                        line = $"{(parent.X - 3 * Widht / (2 * Math.Pow(4, row))):f3}";
                        if (Cheker(double.Parse(line)))
                        {
                            newver = new Vertexcs(parent.Id, DESC.Text, double.Parse(COST.Text), double.Parse(Prob.Text), parent.X - 3 * Widht / (2 * Math.Pow(4, row)), parent.Y + 50);
                        }
                        else
                        {
                            line = $"{(parent.X + 3 * Widht / (2 * Math.Pow(4, row))):f3}";
                            if (Cheker(double.Parse(line)))
                            {
                                newver = new Vertexcs(parent.Id, DESC.Text, double.Parse(COST.Text), double.Parse(Prob.Text), parent.X + 3 * Widht / (2 * Math.Pow(4, row)), parent.Y + 50);
                            }
                            else
                            {
                                throw new Exception("Количество детей не может превышать 4");
                            }
                        }
                    }
                }
                TreeCommands tc = new TreeCommands();
                await tc.IsertNewVertex(newver, parent.Id);

                newver = await tc.GiveVertex(newver);

                vert.Add(newver);



                RefreshTree(FirstVer);
                Clear();
                CostCurrentBranch(FirstVer, 0);
                DrawMaxDangerous();
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message, "Enpty Exception");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Enpty Exception");
            }
        }