Exemple #1
0
        private void Update()
        {
            //StackPanel Col0 = new StackPanel();
            //StackPanel Col1 = new StackPanel();
            //StackPanel Col2 = new StackPanel();
            //Grid.SetColumn(Col0, 0);
            //Grid.SetColumn(Col1, 1);
            //Grid.SetColumn(Col2, 2);

            //_toClear.ForEach(x => LayoutRoot.Children.Remove(x));
            Col0.Children.Clear();
            Col1.Children.Clear();
            Col2.Children.Clear();
            var doc = DocumentManager.CurrentDocument;

            //---------------------------------图表1--------------------------------------------------
            var chart1 = ChartHelper.GetChart("图1: 资本投资 vs 支出限度",
                ChartHelper.ColumnSeries("资本投资", Enumerable.Range(doc.City.C02 + 2, 5).Select(x => new { Key = x.ToString(), Value = NaNto0(_basket.P20A[x]) }).ToArray(), Brushes.Purple),
                ChartHelper.ColumnSeries("现有支出", Enumerable.Range(doc.City.C02 + 2, 5).Select(x => new { Key = x.ToString(), Value = NaNto0(_basket.C8B[x]) }).ToArray(), Brushes.YellowGreen),
                ChartHelper.LineSeries("支出限额", Enumerable.Range(doc.City.C02 + 2, 5).Select(x => new { Key = x.ToString(), Value = NaNto0(_basket.C8A[x]) }).ToArray(), Brushes.Red));
            _toClear.Add(chart1);
            Col0.Children.Add(chart1);

            //---------------------------------图表2--------------------------------------------------
            var chart2 = ChartHelper.GetChart("图2:需贷款额度 vs 还债能力",
                ChartHelper.ColumnSeries("新增贷款年还债", Enumerable.Range(doc.City.C02 + 2, 5).Select(x => new { Key = x.ToString(), Value = NaNto0(_basket.P22A[x]) }).ToArray(), Brushes.Orange),
                ChartHelper.ColumnSeries("现有年还债能力", Enumerable.Range(doc.City.C02 + 2, 5).Select(x => new { Key = x.ToString(), Value = NaNto0(_basket.C7C[x]) }).ToArray(), Brushes.Navy),
                ChartHelper.LineSeries("估算最大年还债", Enumerable.Range(doc.City.C02 + 2, 5).Select(x => new { Key = x.ToString(), Value = NaNto0(_basket.C8E[x]) }).ToArray(), Brushes.Red));
            _toClear.Add(chart2);
            Col0.Children.Add(chart2);

            //---------------------------------总表--------------------------------------------------
            YearwiseTable tableP20 = new YearwiseTable { SectionNumber = "", Title = "5年计划", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed };
            tableP20.Rows.Add("P20A", _basket.P20A);
            tableP20.Rows.Add("P20B", _basket.P20B);
            tableP20.Rows.Add("P20C", _basket.P20C);
            tableP20.Rows.Add("P20D", _basket.P20D);
            tableP20.Rows.Add("P20E", _basket.P20E);
            tableP20.Rows.Add("P20F", _basket.P20F);
            tableP20.Rows.Add("P20G", _basket.P20G);
            Enumerable.Range(2, 5).ToList().ForEach(x => tableP20.Years.Add(new YearDefinition(x, false, true)));
            tableP20.Years.Add(YearDefinition.Sum);
            tableP20.Render();
            _toClear.Add(tableP20);
            Col1.Children.Add(tableP20);

            YearwiseTable tableP21 = new YearwiseTable { SectionNumber = "", Title = "", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed };
            tableP21.Rows.Add("GC8A", _basket.C8A);
            tableP21.Rows.Add("GC8B", _basket.C8B);
            tableP21.Rows.Add("GC8C", _basket.C8C_1);
            tableP21.Rows.Add("GC7C", _basket.C7C);
            tableP21.Rows.Add("P22A", _basket.P22A);
            tableP21.Rows.Add("GC8E", _basket.C8E);
            Enumerable.Range(2, 5).ToList().ForEach(x => tableP21.Years.Add(new YearDefinition(x, false, true)));
            tableP21.Years.Add(YearDefinition.Sum);
            tableP21.Render();
            _toClear.Add(tableP21);
            Col1.Children.Add(tableP21);

            //---------------------------------分表--------------------------------------------------
            foreach (var proj in _basket.Projects)
            {
                YearwiseTable table = new YearwiseTable { SectionNumber = "", Title = proj.P1A, Brush_TitleCell = Brushes.Navy, Brush_Title = Brushes.White };
                table.Rows.Add("P20A", proj.P20A);
                table.Rows.Add("P20B", proj.P20B);
                table.Rows.Add("P20C", proj.P20C);
                table.Rows.Add("P20D", proj.P20D);
                table.Rows.Add("P20E", proj.P20E);
                table.Rows.Add("P20F", proj.P20F);
                table.Rows.Add("P22A", proj.P22A);
                Enumerable.Range(2, 5).ToList().ForEach(x => table.Years.Add(new YearDefinition(x, false, true)));
                table.Years.Add(YearDefinition.Sum);
                table.Render();
                _toClear.Add(table);
                Col2.Children.Add(table);
            }

            //cvs.Height = new List<StackPanel> { Col0, Col1, Col2 }.Max(x => x.ActualHeight); // 为什么AcutalHeight都为0?
            //var h = new List<StackPanel> { Col0, Col1, Col2 }.Max(x => x.RenderSize.Height);
        }
Exemple #2
0
        private List <UIElement> GetLayout()
        {
            List <UIElement> panel = new List <UIElement>();

            Document doc = DocumentManager.CurrentDocument;

            panel.Add(new TextBlock {
                Text = "LOCAL GOVERNMENT BUDGET FORECAST / 当地政府预算预测", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });

            YearwiseTable tableC6 = new YearwiseTable {
                SectionNumber = "1.6", Title = "当地政府债务"
            };

            tableC6.Rows.Add("C6A", doc.City.C6A);
            tableC6.Rows.Add("C6B", doc.City.C6B);
            tableC6.Rows.Add("C6C", doc.City.C6C);
            tableC6.Rows.Add("C6D", doc.City.C6D);
            tableC6.Rows.Add("C6E", doc.City.C6E);
            tableC6.Rows.Add("C6F", doc.City.C6F);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableC6.Years.Add(new YearDefinition(x, false, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableC6.Years.Add(new YearDefinition(x, false, true)));
            tableC6.Render();
            panel.Add(tableC6);

            YearwiseTable tableC7 = new YearwiseTable {
                SectionNumber = "1.7", Title = "当地政府支出"
            };

            tableC7.Rows.Add("C7A", doc.City.C7A);
            tableC7.Rows.Add("C7B", doc.City.C7B);
            tableC7.Rows.Add("C7C", doc.City.C7C);
            tableC7.Rows.Add("C7D", doc.City.C7D);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableC7.Years.Add(new YearDefinition(x, false, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableC7.Years.Add(new YearDefinition(x, false, true)));
            tableC7.Render();
            panel.Add(tableC7);

            YearwiseTable tableC8 = new YearwiseTable {
                SectionNumber = "1.8", Title = "总投资能力"
            };

            tableC8.Rows.Add("C8A", doc.City.C8A);
            tableC8.Rows.Add("C8B", doc.City.C8B);
            tableC8.Rows.Add("C8C", doc.City.C8C);
            tableC8.Rows.Add("C8D", doc.City.C8D);
            tableC8.Rows.Add("C8E", doc.City.C8E);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableC8.Years.Add(new YearDefinition(x, false, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableC8.Years.Add(new YearDefinition(x, false, true)));
            tableC8.Render();
            panel.Add(tableC8);

            panel.Add(new TextBlock {
                Text = "ASSUMPTIONS / 预算预测假设", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });

            YearwiseTable tableC9 = new YearwiseTable {
                SectionNumber = "1.9", Title = "宏观经济数据假设"
            };

            tableC9.Rows.Add("C9A", doc.City.C9A);
            tableC9.Rows.Add("C9B", doc.City.C9B);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableC9.Years.Add(new YearDefinition(x, true, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableC9.Years.Add(new YearDefinition(x, true, true)));
            tableC9.SetPercentageRows("C9A", "C9B");
            tableC9.Render();
            tableC9.UserInput += (sender, e) => UpdateData();
            panel.Add(tableC9);

            PropertyTable tableC10 = new PropertyTable {
                SectionNumber = "1.10", Title = "商业贷款条件假设", Brush_TitleCell = Brushes.DarkRed, Margin = new Thickness(0, 0, 0, 0)
            };

            tableC10.Rows.Add("C10A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC10.Rows.Add("C10B", Tuple.Create <object, object>(doc.City, 0.0));
            tableC10.SetPercentageRows("C10A");
            tableC10.Render();
            tableC10.UserInput += (sender, e) => UpdateData();
            panel.Add(tableC10);

            PropertyTable tableC11 = new PropertyTable {
                SectionNumber = "1.11", Title = "优惠贷款条件假设", Brush_TitleCell = Brushes.DarkRed
            };

            tableC11.Rows.Add("C11A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC11.Rows.Add("C11B", Tuple.Create <object, object>(doc.City, 0.0));
            tableC11.SetPercentageRows("C11A");
            tableC11.Render();
            tableC11.UserInput += (sender, e) => UpdateData();
            panel.Add(tableC11);

            PropertyTable tableC12 = new PropertyTable {
                SectionNumber = "1.12", Title = "当地税收征管假设", Brush_TitleCell = Brushes.DarkRed
            };

            tableC12.Rows.Add("C12A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC12.Rows.Add("C12B", Tuple.Create <object, object>(doc.City, 0.0));
            tableC12.Rows.Add("C12C", Tuple.Create <object, object>(doc.City, 0.0));
            tableC12.SetPercentageRows("C12A", "C12C");
            tableC12.Render();
            tableC12.UserInput += (sender, e) => UpdateData();
            panel.Add(tableC12);

            PropertyTable tableC13 = new PropertyTable {
                SectionNumber = "1.13", Title = "汇率假设(兑美元)", Brush_TitleCell = Brushes.DarkRed
            };

            tableC13.Rows.Add("C13A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC13.Render();
            tableC13.UserInput += (sender, e) => UpdateData();
            panel.Add(tableC13);

            PropertyTable tableC14 = new PropertyTable {
                SectionNumber = "1.14", Title = "投资预算和债务清偿假设", Brush_TitleCell = Brushes.DarkRed
            };

            tableC14.Rows.Add("C14A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC14.Rows.Add("C14B", Tuple.Create <object, object>(doc.City, 0.0));
            tableC14.SetPercentageRows("C14A", "C14B");
            tableC14.Render();
            tableC14.UserInput += (sender, e) => UpdateData();
            panel.Add(tableC14);

            PropertyTable tableC15 = new PropertyTable {
                SectionNumber = "1.15", Title = "收入预测假设", Brush_TitleCell = Brushes.DarkRed
            };

            tableC15.Rows.Add("C15A_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15A_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15B_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15B_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15C_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15C_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15D_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15D_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15E_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15E_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.SetPercentageTable();
            tableC15.Render();
            tableC15.UserInput += (sender, e) => UpdateData();
            panel.Add(tableC15);

            PropertyTable tableC16 = new PropertyTable {
                SectionNumber = "1.16", Title = "支出预测假设", Brush_TitleCell = Brushes.DarkRed
            };

            tableC16.Rows.Add("C16A_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16A_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16B_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16B_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16C_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16C_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.SetPercentageTable();
            tableC16.Render();
            tableC16.UserInput += (sender, e) => UpdateData();
            panel.Add(tableC16);

            //---------------------------------图表--------------------------------------------------
            panel.Add(ChartHelper.GetChart("BUDGET FORECAST: REVENUES VERSUS EXPENDITURES",
                                           ChartHelper.ColumnSeries("经营性支出", Enumerable.Range(doc.City.C02 + 1, 5).Select(x => new { Key = x.ToString(), Value = doc.City.C8B[x] }).ToArray(), Brushes.YellowGreen),
                                           ChartHelper.LineSeries("经营性收入", Enumerable.Range(doc.City.C02 + 1, 5).Select(x => new { Key = x.ToString(), Value = doc.City.C8A[x] }).ToArray(), Brushes.Red)));

            panel.Add(new TextBlock {
                Text = "LOCAL GOVERNMENT BUDGET FORECAST / 当地政府预算预测", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });

            Button btnFinancial = new Button {
                Content = "点击以转到城市评估", Width = 200, HorizontalAlignment = HorizontalAlignment.Left
            };

            btnFinancial.Click += (sender, e) => NavigationManager.Navigate("CityPage.xaml");
            panel.Add(btnFinancial);

            _tables = new List <IUpdateTable> {
                tableC6, tableC7, tableC8
            };

            return(panel);
        }
        private List <UIElement> GetLayout()
        {
            List <UIElement> panel = new List <UIElement>();

            Document          doc  = DocumentManager.CurrentDocument;
            ProjectStatistics proj = doc.Projects[id];

            Binding pipBinding = new Binding("PIP")
            {
                Source = proj, Mode = BindingMode.TwoWay
            };

            panel.Add(new TextBlock {
                Text = "Include project in PIP?", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });
            ComboBox cbbPipTop = new ComboBox {
                Width = 200, HorizontalAlignment = HorizontalAlignment.Left, ItemsSource = new string[] { "Yes", "No" }
            };

            cbbPipTop.SetBinding(ComboBox.SelectedIndexProperty, pipBinding);
            panel.Add(cbbPipTop);

            //---------------------------------表2.1--------------------------------------------------
            panel.Add(new TextBlock {
                Text = "2.1  PROJECT DESCRIPTORS", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });

            StackPanel tableP1 = new StackPanel {
                Width = 500, HorizontalAlignment = HorizontalAlignment.Left
            };

            tableP1.Children.Add(new TextBlock {
                Text = "A. Project Name/项目名称是什么"
            });
            TextBox txtP1A = new TextBox {
                Text = proj.P1A
            };

            txtP1A.LostFocus += GetTextBoxLostFocusHandler(txtP1A, GetValidator(txtP1A), () => proj.P1A = txtP1A.Text, txtP1A.Text);
            tableP1.Children.Add(txtP1A);
            tableP1.Children.Add(new TextBlock {
                Text = "B. Location/项目位于城市何处"
            });
            TextBox txtP1B = new TextBox {
                Text = proj.P1B
            };

            txtP1B.LostFocus += GetTextBoxLostFocusHandler(txtP1B, GetValidator(txtP1B), () => proj.P1B = txtP1B.Text, txtP1B.Text);
            tableP1.Children.Add(txtP1B);
            tableP1.Children.Add(new TextBlock {
                Text = "C. Sector - To which sector does the project belong/项目属于哪个部门"
            });
            ComboBox cbbP1C = new ComboBox();

            ProjectStatistics.Sector.ToList().ForEach(x => cbbP1C.Items.Add(x));
            cbbP1C.SelectedIndex     = proj.P1C[0];
            cbbP1C.SelectionChanged += (sender, e) => proj.P1C[0] = cbbP1C.SelectedIndex;
            tableP1.Children.Add(cbbP1C);
            tableP1.Children.Add(new TextBlock {
                Text = "D. Purpose - What is the main dimension of the project/项目主要方面"
            });
            ComboBox cbbP1D = new ComboBox();

            ProjectStatistics.Purpose.ToList().ForEach(x => cbbP1D.Items.Add(x));
            cbbP1D.SelectedIndex     = proj.P1D;
            cbbP1D.SelectionChanged += (sender, e) => proj.P1D = cbbP1D.SelectedIndex;
            tableP1.Children.Add(cbbP1D);
            tableP1.Children.Add(new TextBlock {
                Text = "E. Status of Project - What is the current status of the project/项目现状如何", Background = Brushes.Yellow
            });
            ComboBox cbbP1E = new ComboBox();

            ProjectStatistics.StatusOfProject.ToList().ForEach(x => cbbP1E.Items.Add(x));
            cbbP1E.SelectedIndex     = proj.P1E;
            cbbP1E.SelectionChanged += (sender, e) => proj.P1E = cbbP1E.SelectedIndex;
            tableP1.Children.Add(cbbP1E);
            tableP1.Children.Add(new TextBlock {
                Text = "F. Time Frame - Expected commencement & completion year/时间框架"
            });
            ComboBox cbbP1F_1 = new ComboBox();
            ComboBox cbbP1F_2 = new ComboBox();

            Enumerable.Range(0, 10).Select(x => proj.P02 + x).ToList().ForEach(x => { cbbP1F_1.Items.Add(x); cbbP1F_2.Items.Add(x); });
            cbbP1F_1.SelectedItem      = proj.P1F_1;
            cbbP1F_2.SelectedItem      = proj.P1F_2;
            cbbP1F_1.SelectionChanged += (sender, e) => proj.P1F_1 = Convert.ToInt32(cbbP1F_1.SelectedItem);
            cbbP1F_2.SelectionChanged += (sender, e) => proj.P1F_2 = Convert.ToInt32(cbbP1F_2.SelectedItem);
            tableP1.Children.Add(cbbP1F_1);
            tableP1.Children.Add(cbbP1F_2);

            panel.Add(tableP1);

            //---------------------------------表2.2--------------------------------------------------
            panel.Add(new TextBlock {
                Text = "FINANCIAL PARAMETERS", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });

            YearwiseTable tableP2 = new YearwiseTable();

            tableP2.SectionNumber = "2.2";
            tableP2.Title         = "资本成本";
            tableP2.Rows.Add("P2A", proj.P2A);
            tableP2.Rows.Add("P2B", proj.P2B);
            tableP2.Rows.Add("P2C", proj.P2C);
            tableP2.Rows.Add("P2D", proj.P2D);
            tableP2.Rows.Add("P2E", proj.P2E);
            tableP2.Rows.Add("P2F", proj.P2F);
            tableP2.LockRows("P2F");
            Enumerable.Range(1, 10).ToList().ForEach(x => tableP2.Years.Add(new YearDefinition(x, true, true)));
            tableP2.Years.Add(YearDefinition.Sum);
            tableP2.Render();
            tableP2.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP2);

            //---------------------------------表2.3--------------------------------------------------
            YearwiseTable tableP3 = new YearwiseTable();

            tableP3.SectionNumber = "2.3";
            tableP3.Title         = "资本投资的预期资金来源";
            tableP3.Rows.Add("P3A", proj.P3A);
            tableP3.Rows.Add("P3B", proj.P3B);
            tableP3.Rows.Add("P3C", proj.P3C);
            tableP3.Rows.Add("P3D", proj.P3D);
            tableP3.Rows.Add("P3E", proj.P3E);
            tableP3.Rows.Add("P3T", proj.P3T);
            tableP3.Rows.Add("P3F", proj.P3F);
            tableP3.LockRows("P3T", "P3F");
            Enumerable.Range(1, 10).ToList().ForEach(x => tableP3.Years.Add(new YearDefinition(x, true, true)));
            tableP3.Years.Add(YearDefinition.Sum);
            tableP3.Render();
            tableP3.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP3);

            //---------------------------------表2.4--------------------------------------------------
            PropertyTable tableP4 = new PropertyTable {
                SectionNumber = "2.4", Title = "运营与维护成本"
            };

            tableP4.Rows.Add("P4A", Tuple.Create <object, object>(proj, 0.0));
            tableP4.Render();
            tableP4.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP4);

            //---------------------------------表2.5--------------------------------------------------
            PropertyTable tableP5 = new PropertyTable {
                SectionNumber = "2.5", Title = "新增商业贷款"
            };

            tableP5.Rows.Add("P5A", Tuple.Create <object, object>(proj, 0));
            tableP5.Rows.Add("P5B", Tuple.Create <object, object>(proj, 0));
            tableP5.Rows.Add("P5C", Tuple.Create <object, object>(proj, 0));
            tableP5.Rows.Add("P5D", Tuple.Create <object, object>(proj, 0.0));
            tableP5.SetPercentageRows("P5D");
            tableP5.Render();
            tableP5.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP5);

            //---------------------------------表2.6--------------------------------------------------
            PropertyTable tableP6 = new PropertyTable {
                SectionNumber = "2.6", Title = "新增优惠贷款"
            };

            tableP6.Rows.Add("P6A", Tuple.Create <object, object>(proj, 0));
            tableP6.Rows.Add("P6B", Tuple.Create <object, object>(proj, 0));
            tableP6.Rows.Add("P6C", Tuple.Create <object, object>(proj, 0));
            tableP6.Rows.Add("P6D", Tuple.Create <object, object>(proj, 0.0));
            tableP6.SetPercentageRows("P6D");
            tableP6.Render();
            tableP6.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP6);

            //---------------------------------表2.7--------------------------------------------------
            PropertyTable tableP7 = new PropertyTable {
                SectionNumber = "2.7", Title = "运营与维护成本的资金来源"
            };

            tableP7.Rows.Add("P7A", Tuple.Create <object, object>(proj, 0.0));
            tableP7.Rows.Add("P7B", Tuple.Create <object, object>(proj, 0.0));
            tableP7.Rows.Add("P7C", Tuple.Create <object, object>(proj, 0.0));
            tableP7.Rows.Add("P7D", Tuple.Create <object, object>(proj, 0.0));
            tableP7.Rows.Add("P7E", Tuple.Create <object, object>(proj, 0.0));
            tableP7.Render();
            tableP7.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP7);

            //---------------------------------问卷--------------------------------------------------
            panel.Add(new TextBlock {
                Text = "PRIORITISATION PARAMETERS", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });

            Button btnToQ = new Button {
                Content = "打开问卷(总结模式)", Width = 200, HorizontalAlignment = HorizontalAlignment.Left
            };

            btnToQ.Click += new RoutedEventHandler(btnToQ_Click);
            panel.Add(btnToQ);

            Button btnToQ1 = new Button {
                Content = "打开问卷(演示模式)", Width = 200, HorizontalAlignment = HorizontalAlignment.Left
            };

            btnToQ1.Click += (sender, e) => NavigationManager.Navigate("QuestionPage.xaml", "type=project&id=" + id.ToString());
            panel.Add(btnToQ1);

            //---------------------------------场景得分--------------------------------------------------
            PropertyTable tablePS = new PropertyTable {
                SectionNumber = "2.S", Title = "场景得分", Brush_ResultCell = Brushes.DarkRed, Brush_Title = Brushes.DarkRed, Brush_TitleCell = Brushes.Silver
            };

            tablePS.Rows.Add("EnvironmentScenario", Tuple.Create <object, object>(proj, 0.0));
            tablePS.Rows.Add("EconomicScenario", Tuple.Create <object, object>(proj, 0.0));
            tablePS.Rows.Add("RevenueScenario", Tuple.Create <object, object>(proj, 0.0));
            tablePS.Rows.Add("Social", Tuple.Create <object, object>(proj, 0.0));
            tablePS.Rows.Add("PovertyScenario", Tuple.Create <object, object>(proj, 0.0));
            tablePS.LockRows("EnvironmentScenario", "EconomicScenario", "RevenueScenario", "Social", "PovertyScenario");
            tablePS.Render();
            panel.Add(tablePS);

            //---------------------------------表2.14--------------------------------------------------
            panel.Add(new TextBlock {
                Text = "ANTICIPATED IMPACT OF THE PROJECT ON THE BUDGET", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });

            YearwiseTable tableP14 = new YearwiseTable {
                SectionNumber = "2.14", Title = "新增商业贷款", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP14.Rows.Add("P14A", proj.P14A);
            tableP14.Rows.Add("P14B", proj.P14B);
            tableP14.Rows.Add("P14C", proj.P14C);
            tableP14.Rows.Add("P14D", proj.P14D);
            Enumerable.Range(-3, 5).ToList().ForEach(x => tableP14.Years.Add(new YearDefinition(x, true, false)));
            Enumerable.Range(2, 9).ToList().ForEach(x => tableP14.Years.Add(new YearDefinition(x, false, true)));
            tableP14.Render();
            tableP14.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP14);

            //---------------------------------表2.15--------------------------------------------------
            YearwiseTable tableP15 = new YearwiseTable {
                SectionNumber = "2.15", Title = "新增优惠贷款", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP15.Rows.Add("P15A", proj.P15A);
            tableP15.Rows.Add("P15B", proj.P15B);
            tableP15.Rows.Add("P15C", proj.P15C);
            tableP15.Rows.Add("P15D", proj.P15D);
            Enumerable.Range(-3, 5).ToList().ForEach(x => tableP15.Years.Add(new YearDefinition(x, true, false)));
            Enumerable.Range(2, 9).ToList().ForEach(x => tableP15.Years.Add(new YearDefinition(x, false, true)));
            tableP15.Render();
            tableP15.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP15);

            //---------------------------------表2.16--------------------------------------------------
            YearwiseTable tableP16 = new YearwiseTable {
                SectionNumber = "2.16", Title = "额外收入预估值", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP16.Rows.Add("P16A", proj.P16A);
            tableP16.Rows.Add("P16B", proj.P16B);
            Enumerable.Range(-3, 5).ToList().ForEach(x => tableP16.Years.Add(new YearDefinition(x, true, false)));
            Enumerable.Range(2, 9).ToList().ForEach(x => tableP16.Years.Add(new YearDefinition(x, false, true)));
            tableP16.Render();
            tableP16.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP16);

            //---------------------------------表2.17--------------------------------------------------
            YearwiseTable tableP17 = new YearwiseTable {
                SectionNumber = "2.17", Title = "额外支出预估值", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP17.Rows.Add("P17A", proj.P17A);
            tableP17.Rows.Add("P17B", proj.P17B);
            Enumerable.Range(-3, 5).ToList().ForEach(x => tableP17.Years.Add(new YearDefinition(x, true, false)));
            Enumerable.Range(2, 9).ToList().ForEach(x => tableP17.Years.Add(new YearDefinition(x, false, true)));
            tableP17.Render();
            tableP17.UserInput += (sender, e) => UpdateData();
            panel.Add(tableP17);

            //---------------------------------表2.18--------------------------------------------------
            YearwiseTable tableP18 = new YearwiseTable {
                SectionNumber = "2.18", Title = "ORIGINAL BUDGET FORECAST (FROM FORECAST SHEET)", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP18.Rows.Add("P18A", proj.P18A);
            tableP18.Rows.Add("P18B", proj.P18B);
            tableP18.Rows.Add("P18C", proj.P18C);
            tableP18.Rows.Add("P18D", proj.P18D);
            tableP18.Rows.Add("P18E", proj.P18E);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableP18.Years.Add(new YearDefinition(x, false, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableP18.Years.Add(new YearDefinition(x, false, true)));
            tableP18.Render();
            panel.Add(tableP18);

            //---------------------------------表2.19--------------------------------------------------
            YearwiseTable tableP19 = new YearwiseTable {
                SectionNumber = "2.19", Title = "PROJECT IMPACT ON BUDGET FORECAST", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP19.Rows.Add("P19A", proj.P19A);
            tableP19.Rows.Add("P19B", proj.P19B);
            tableP19.Rows.Add("P19C", proj.P19C);
            tableP19.Rows.Add("P19D", proj.P19D);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableP19.Years.Add(new YearDefinition(x, false, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableP19.Years.Add(new YearDefinition(x, false, true)));
            tableP19.Render();
            panel.Add(tableP19);

            //---------------------------------图表1--------------------------------------------------
            var chart1 = ChartHelper.GetChart("GRAPH 1: IMPACT OF PROJECT ON LOCAL GOVERNMENT INVESTMENT CAPACITY",
                                              ChartHelper.ColumnSeries("预计预算", Enumerable.Range(doc.City.C02 - 3, 14).Select(x => new { Key = x.ToString(), Value = NaNto0(proj.P18D[x]) }).ToArray(), Brushes.Silver),
                                              ChartHelper.ColumnSeries("项目影响", Enumerable.Range(doc.City.C02 - 3, 14).Select(x => new { Key = x.ToString(), Value = NaNto0(proj.P19D[x]) }).ToArray(), Brushes.YellowGreen));

            chart1.Width = 800;
            panel.Add(chart1);

            //---------------------------------表2.20--------------------------------------------------
            YearwiseTable tableP20 = new YearwiseTable {
                SectionNumber = "2.20", Title = "重要投资资金来源", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP20.Rows.Add("P20A", proj.P20A);
            tableP20.Rows.Add("P20B", proj.P20B);
            tableP20.Rows.Add("P20C", proj.P20C);
            tableP20.Rows.Add("P20D", proj.P20D);
            tableP20.Rows.Add("P20E", proj.P20E);
            tableP20.Rows.Add("P20F", proj.P20F);
            tableP20.Rows.Add("P20G", proj.P20G);
            Enumerable.Range(1, 9).ToList().ForEach(x => tableP20.Years.Add(new YearDefinition(x, false, true)));
            tableP20.Years.Add(YearDefinition.Sum);
            tableP20.Render();
            panel.Add(tableP20);

            //---------------------------------表2.21--------------------------------------------------
            YearwiseTable tableP21 = new YearwiseTable {
                SectionNumber = "2.21", Title = "资本支出", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP21.Rows.Add("P21A", proj.P21A);
            tableP21.Rows.Add("P21B", proj.P21B);
            tableP21.Rows.Add("P21C", proj.P21C);
            Enumerable.Range(1, 9).ToList().ForEach(x => tableP21.Years.Add(new YearDefinition(x, false, true)));
            tableP21.Render();
            panel.Add(tableP21);

            //---------------------------------表2.22--------------------------------------------------
            YearwiseTable tableP22 = new YearwiseTable {
                SectionNumber = "2.22", Title = "资本支出", Brush_TitleCell = Brushes.Silver, Brush_Title = Brushes.DarkRed
            };

            tableP22.Rows.Add("P22A", proj.P22A);
            tableP22.Rows.Add("P22B", proj.P22B);
            tableP22.Rows.Add("P22C", proj.P22C);
            Enumerable.Range(1, 9).ToList().ForEach(x => tableP22.Years.Add(new YearDefinition(x, false, true)));
            tableP22.Render();
            panel.Add(tableP22);

            //---------------------------------图表2--------------------------------------------------
            panel.Add(ChartHelper.GetChart("GRAPH 2: CAPITAL INVESTMENT REQUIRED VERSUS EXPENDITURE CEILING",
                                           ChartHelper.ColumnSeries("资本投资", Enumerable.Range(doc.City.C02 + 1, 9).Select(x => new { Key = x.ToString(), Value = NaNto0(proj.P21A[x]) }).ToArray(), Brushes.Purple),
                                           ChartHelper.ColumnSeries("现有支出", Enumerable.Range(doc.City.C02 + 1, 9).Select(x => new { Key = x.ToString(), Value = NaNto0(proj.P21B[x]) }).ToArray(), Brushes.YellowGreen),
                                           ChartHelper.LineSeries("支出限额", Enumerable.Range(doc.City.C02 + 1, 9).Select(x => new { Key = x.ToString(), Value = NaNto0(proj.P21C[x]) }).ToArray(), Brushes.Red)));

            //---------------------------------图表3--------------------------------------------------
            panel.Add(ChartHelper.GetChart("GRAPH 3: LOANS REQUIRED VERSUS DEBT SERVICE CAPACITY",
                                           ChartHelper.ColumnSeries("新增贷款", Enumerable.Range(doc.City.C02 + 1, 9).Select(x => new { Key = x.ToString(), Value = NaNto0(proj.P22A[x]) }).ToArray(), Brushes.Orange),
                                           ChartHelper.ColumnSeries("还本付息", Enumerable.Range(doc.City.C02 + 1, 9).Select(x => new { Key = x.ToString(), Value = NaNto0(proj.P22B[x]) }).ToArray(), Brushes.SlateGray),
                                           ChartHelper.LineSeries("最大偿力", Enumerable.Range(doc.City.C02 + 1, 9).Select(x => new { Key = x.ToString(), Value = NaNto0(proj.P22C[x]) }).ToArray(), Brushes.Red)));

            panel.Add(new TextBlock {
                Text = "Include project in PIP?", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });
            ComboBox cbbPipBottom = new ComboBox {
                Width = 200, HorizontalAlignment = HorizontalAlignment.Left, ItemsSource = new string[] { "Yes", "No" }
            };

            cbbPipBottom.SetBinding(ComboBox.SelectedIndexProperty, pipBinding);
            panel.Add(cbbPipBottom);

            panel.Add(new TextBlock {
                Text = "Go to...", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold, Margin = new Thickness(0, 20, 0, 0)
            });
            Button btnFinancial = new Button {
                Content = "点击转到总结表单", Width = 200, HorizontalAlignment = HorizontalAlignment.Left
            };

            btnFinancial.Click += (sender, e) => NavigationManager.Navigate("SummaryPage.xaml");
            panel.Add(btnFinancial);

            _tables = new List <IUpdateTable> {
                tableP2, tableP3, tableP5, tableP6, tableP7, tablePS, tableP14, tableP15, tableP16, tableP17, tableP18, tableP19, tableP20, tableP21, tableP22
            };

            return(panel);
        }
Exemple #4
0
        public List <StackPanel> GetPages()
        {
            List <StackPanel> panel = Enumerable.Range(0, 7).Select(x => new StackPanel()).ToList();

            Document doc = DocumentManager.CurrentDocument;

            //panel[0].Children.Add(new TextBlock { Text = "LOCAL GOVERNMENT BUDGET FORECAST / 当地政府预算预测", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold });
            YearwiseTable tableC6 = new YearwiseTable {
                SectionNumber = "1.6", Title = "当地政府收入 Local Government Revenues"
            };

            tableC6.Rows.Add("C6A", doc.City.C6A);
            tableC6.Rows.Add("C6B", doc.City.C6B);
            tableC6.Rows.Add("C6C", doc.City.C6C);
            tableC6.Rows.Add("C6D", doc.City.C6D);
            tableC6.Rows.Add("C6E", doc.City.C6E);
            tableC6.Rows.Add("C6F", doc.City.C6F);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableC6.Years.Add(new YearDefinition(x, false, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableC6.Years.Add(new YearDefinition(x, false, true)));
            tableC6.Render();
            panel[0].Children.Add(tableC6);

            YearwiseTable tableC7 = new YearwiseTable {
                SectionNumber = "1.7", Title = "当地政府支出 Local Government Expenditures"
            };

            tableC7.Rows.Add("C7A", doc.City.C7A);
            tableC7.Rows.Add("C7B", doc.City.C7B);
            tableC7.Rows.Add("C7C", doc.City.C7C);
            tableC7.Rows.Add("C7D", doc.City.C7D);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableC7.Years.Add(new YearDefinition(x, false, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableC7.Years.Add(new YearDefinition(x, false, true)));
            tableC7.Render();
            panel[0].Children.Add(tableC7);

            YearwiseTable tableC8 = new YearwiseTable {
                SectionNumber = "1.8", Title = "总投资能力 Summary Investment Capacity"
            };

            tableC8.Rows.Add("C8A", doc.City.C8A);
            tableC8.Rows.Add("C8B", doc.City.C8B);
            tableC8.Rows.Add("C8C", doc.City.C8C);
            tableC8.Rows.Add("C8D", doc.City.C8D);
            tableC8.Rows.Add("C8E", doc.City.C8E);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableC8.Years.Add(new YearDefinition(x, false, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableC8.Years.Add(new YearDefinition(x, false, true)));
            tableC8.Render();
            panel[1].Children.Add(tableC8);

            //panel[2].Children.Add(new TextBlock { Text = "ASSUMPTIONS / 预算预测假设", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold });
            YearwiseTable tableC9 = new YearwiseTable {
                SectionNumber = "1.9", Title = "宏观经济数据假设 Assumptions Macro-Economic Data"
            };

            tableC9.Rows.Add("C9A", doc.City.C9A);
            tableC9.Rows.Add("C9B", doc.City.C9B);
            Enumerable.Range(-3, 4).ToList().ForEach(x => tableC9.Years.Add(new YearDefinition(x, true, false)));
            Enumerable.Range(1, 10).ToList().ForEach(x => tableC9.Years.Add(new YearDefinition(x, true, true)));
            tableC9.SetPercentageRows("C9A", "C9B");
            tableC9.Render();
            tableC9.UserInput += (sender, e) => UpdateData();
            panel[2].Children.Add(tableC9);

            PropertyTable tableC10 = new PropertyTable {
                SectionNumber = "1.10", Title = "商业贷款条件假设 Assumptions Loan Conditions Commercial Lending", Brush_TitleCell = FindResource("gradient_red") as Brush
            };

            tableC10.Rows.Add("C10A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC10.Rows.Add("C10B", Tuple.Create <object, object>(doc.City, 0.0));
            tableC10.SetPercentageRows("C10A");
            tableC10.Render();
            tableC10.UserInput += (sender, e) => UpdateData();
            panel[2].Children.Add(tableC10);

            PropertyTable tableC11 = new PropertyTable {
                SectionNumber = "1.11", Title = "优惠贷款条件假设 Assumptions Loan Conditions Preferential Lending", Brush_TitleCell = FindResource("gradient_red") as Brush
            };

            tableC11.Rows.Add("C11A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC11.Rows.Add("C11B", Tuple.Create <object, object>(doc.City, 0.0));
            tableC11.SetPercentageRows("C11A");
            tableC11.Render();
            tableC11.UserInput += (sender, e) => UpdateData();
            panel[2].Children.Add(tableC11);

            PropertyTable tableC12 = new PropertyTable {
                SectionNumber = "1.12", Title = "当地税收征管假设 Local Tax Collection", Brush_TitleCell = FindResource("gradient_red") as Brush
            };

            tableC12.Rows.Add("C12A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC12.Rows.Add("C12B", Tuple.Create <object, object>(doc.City, 0.0));
            tableC12.Rows.Add("C12C", Tuple.Create <object, object>(doc.City, 0.0));
            tableC12.SetPercentageRows("C12A", "C12C");
            tableC12.Render();
            tableC12.UserInput += (sender, e) => UpdateData();
            panel[3].Children.Add(tableC12);

            PropertyTable tableC13 = new PropertyTable {
                SectionNumber = "1.13", Title = "汇率假设(兑美元) Assumptions Exchange Rate (to USD)", Brush_TitleCell = FindResource("gradient_red") as Brush
            };

            tableC13.Rows.Add("C13A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC13.Render();
            tableC13.UserInput += (sender, e) => UpdateData();
            panel[3].Children.Add(tableC13);

            PropertyTable tableC14 = new PropertyTable {
                SectionNumber = "1.14", Title = "投资预算和债务清偿假设 Assumptions Investment Budget & Debt Service", Brush_TitleCell = FindResource("gradient_red") as Brush
            };

            tableC14.Rows.Add("C14A", Tuple.Create <object, object>(doc.City, 0.0));
            tableC14.Rows.Add("C14B", Tuple.Create <object, object>(doc.City, 0.0));
            tableC14.SetPercentageRows("C14A", "C14B");
            tableC14.Render();
            tableC14.UserInput += (sender, e) => UpdateData();
            panel[3].Children.Add(tableC14);

            PropertyTable tableC15 = new PropertyTable {
                SectionNumber = "1.15", Title = "收入预测假设 Assumptions Revenue Forecast", Brush_TitleCell = FindResource("gradient_red") as Brush
            };

            tableC15.Rows.Add("C15A_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15A_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15B_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15B_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15C_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15C_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15D_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15D_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15E_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.Rows.Add("C15E_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC15.SetPercentageTable();
            tableC15.Render();
            tableC15.UserInput += (sender, e) => UpdateData();
            panel[4].Children.Add(tableC15);

            PropertyTable tableC16 = new PropertyTable {
                SectionNumber = "1.16", Title = "支出预测假设 Assumptions Expenditure Forecast", Brush_TitleCell = FindResource("gradient_red") as Brush
            };

            tableC16.Rows.Add("C16A_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16A_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16B_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16B_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16C_1", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.Rows.Add("C16C_2", Tuple.Create <object, object>(doc.City, 0.0));
            tableC16.SetPercentageTable();
            tableC16.Render();
            tableC16.UserInput += (sender, e) => UpdateData();
            panel[4].Children.Add(tableC16);

            //---------------------------------图表--------------------------------------------------
            panel[5].Children.Add(ChartHelper.GetChart("BUDGET FORECAST: REVENUES VERSUS EXPENDITURES",
                                                       ChartHelper.ColumnSeries("经营性支出", Enumerable.Range(doc.City.C02 + 1, 5).Select(x => new { Key = x.ToString(), Value = doc.City.C8B[x] }).ToArray(), Brushes.YellowGreen),
                                                       ChartHelper.LineSeries("经营性收入", Enumerable.Range(doc.City.C02 + 1, 5).Select(x => new { Key = x.ToString(), Value = doc.City.C8A[x] }).ToArray(), Brushes.Red)));

            panel[6].Children.Add(new TextBlock {
                Text = "CITY BASIC / 城市基本数据", Foreground = Brushes.DarkRed, FontWeight = FontWeights.Bold
            });
            Button btnFinancial = new Button {
                Content = "点击以转到城市评估", Width = 200, HorizontalAlignment = HorizontalAlignment.Left
            };

            btnFinancial.Click += (sender, e) => NavigationManager.Navigate("RichCityPage.xaml");
            panel[6].Children.Add(btnFinancial);
            //Button btnProj = new Button { Content = "点击以转到项目评估", Width = 200, HorizontalAlignment = HorizontalAlignment.Left };
            //btnProj.Click += (sender, e) => NavigationManager.Navigate("RichCityPage.xaml");
            //panel[6].Children.Add(btnProj);

            _tables = new List <IUpdateTable> {
                tableC6, tableC7, tableC8
            };

            return(panel);
        }