Пример #1
0
        private void plotdatabtn_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                SeriesCollection.Clear();
            }
            catch
            {
                SeriesCollection = new SeriesCollection
                {
                };
            }

            try
            {
                SeriesCollection2.Clear();
            }
            catch
            {
                SeriesCollection2 = new SeriesCollection
                {
                };
            }

            var selected = listsrdata.SelectedItem.ToString();

            var chkboxOADs   = TPRplot.Children.OfType <CheckBox>();
            var chkboxdepths = Profileplot.Children.OfType <CheckBox>();

            var plotOADs     = new List <int>();
            var plotOADsdb   = new List <double>();
            var plotdepths   = new List <int>();
            var plotdepthsdb = new List <double>();
            var OADlabels    = new List <string> {
            };

            var rgx = Regex.Split(selected, "  ");

            // get index of data
            int idx = Convert.ToInt32(rgx[0]) - 1;

            JArray exjarr;

            using (StreamReader sr = new StreamReader("srdata.json"))
            {
                string exjson = sr.ReadToEnd();
                exjarr = JArray.Parse(exjson);
            }

            var data = exjarr[idx];

            var rownum = data.Count();
            var colnum = data[0].Count();



            // For the TPR Graph
            foreach (CheckBox chkoad in chkboxOADs)
            {
                if (chkoad.IsChecked.Value)
                {
                    var oadindex = Convert.ToInt32(Regex.Split(chkoad.Name, "_")[1]);

                    plotOADs.Add(oadindex);
                    plotOADsdb.Add(Convert.ToDouble(chkoad.Content));
                }
            }

            // For the Profile Graph
            foreach (CheckBox chkdepth in chkboxdepths)
            {
                if (chkdepth.IsChecked.Value)
                {
                    var dpindex = Convert.ToInt32(Regex.Split(chkdepth.Name, "_")[1]);

                    plotdepths.Add(dpindex);
                    plotdepthsdb.Add(Convert.ToDouble(chkdepth.Content));
                }
            }


            //Plot TPR
            for (int f = 1; f < plotOADs.Count() + 1; f++)
            {
                var tprvals        = new List <double>();
                var pltdepthlabels = new List <string> {
                };

                var pltoadindex = plotOADs[f - 1];

                for (int ff = 1; ff < rownum; ff++)
                {
                    if (Normalizebox.IsChecked.Value == true)
                    {
                        var Normval = Math.Abs(Convert.ToDouble(data[Normdepth.SelectedIndex + 1][Normoad.SelectedIndex + 1]));

                        tprvals.Add(RoundToSignificantDigits(Math.Abs(Convert.ToDouble(data[ff][pltoadindex])) / Normval, 4));
                    }
                    else
                    {
                        tprvals.Add(RoundToSignificantDigits(Math.Abs(Convert.ToDouble(data[ff][pltoadindex])), 4));
                    }
                    pltdepthlabels.Add(data[ff][0].ToString());
                }



                var chvals = tprvals.ToArray <double>();

                //YFormatter = value => value.ToString("C");

                plottpr.AxisX.Clear();

                plottpr.AxisX.Add(
                    new Axis
                {
                    Labels = pltdepthlabels.ToArray()
                }
                    );
                //Labels = pltdepthlabels.ToArray();

                DataContext = this;

                SeriesCollection.Add(new LineSeries
                {
                    Title             = "OAD - " + Convert.ToString(plotOADsdb[f - 1]),
                    Values            = chvals.AsChartValues(), //new ChartValues<double> {  },
                    DataLabels        = true,
                    LineSmoothness    = 0,                      //0: straight lines, 1: really smooth lines
                    PointGeometry     = null,                   //Geometry.Parse("m 25 70.36218 20 -28 -20 22 -8 -6 z"),
                    PointGeometrySize = 50,
                    PointForeground   = Brushes.Gray
                });
            }


            // Plot profile
            for (int g = 1; g < plotdepths.Count() + 1; g++)
            {
                var oadvals      = new List <double>();
                var pltoadlabels = new List <string> {
                };

                var pltdpindex = plotdepths[g - 1];

                for (int gg = 1; gg < colnum / 3 + 1; gg++)
                {
                    if (Normalizebox.IsChecked.Value == true)
                    {
                        var Normval = Math.Abs(Convert.ToDouble(data[Normdepth.SelectedIndex + 1][Normoad.SelectedIndex + 1]));

                        oadvals.Add(RoundToSignificantDigits(Math.Abs(Convert.ToDouble(data[pltdpindex][gg])) / Normval, 4));
                    }
                    else
                    {
                        oadvals.Add(RoundToSignificantDigits(Math.Abs(Convert.ToDouble(data[pltdpindex][gg])), 4));
                    }

                    pltoadlabels.Add(data[0][gg].ToString());
                }

                var chvals = oadvals.ToArray <double>();

                plotprofile.AxisX.Clear();

                plotprofile.AxisX.Add(
                    new Axis
                {
                    Labels = pltoadlabels.ToArray()
                }
                    );


                DataContext = this;


                SeriesCollection2.Add(new LineSeries
                {
                    Title             = "Depth - " + Convert.ToString(plotdepthsdb[g - 1]) + "cm",
                    Values            = chvals.AsChartValues(), //new ChartValues<double> {  },
                    DataLabels        = true,
                    LineSmoothness    = 0,                      //0: straight lines, 1: really smooth lines
                    PointGeometry     = null,                   //Geometry.Parse("m 25 70.36218 20 -28 -20 22 -8 -6 z"),
                    PointGeometrySize = 50,
                    PointForeground   = Brushes.Gray
                });
            }
        }
Пример #2
0
        public void DiagrammERInit()
        {
            var qry2 = from o in MonthUseERList
                       select new
            {
                o.FactCost,
                o.DifferenceCost,
                o.ResourceName
            };
            double Total     = qry2.Sum(n => n.FactCost);
            double TotalDiff = qry2.Sum(n => Math.Abs(n.DifferenceCost));

            var qry3 = from o in MonthUseERList
                       where o.FactCost >= Total * Proc / 100
                       orderby o.FactCost descending
                       select new
            {
                o.FactCost,
                o.ResourceName
            };
            var qry4 = from o in MonthUseERList
                       where o.FactCost < Total * Proc / 100
                       select new
            {
                o.FactCost,
                o.ResourceName
            };
            double Total1 = qry4.Sum(n => n.FactCost);

            var qry5 = from o in MonthUseERList
                       where Math.Abs(o.DifferenceCost) >= TotalDiff * Proc / 100
                       orderby o.DifferenceCost descending
                       select new
            {
                o.DifferenceCost,
                o.ResourceName
            };
            var qry6 = from o in MonthUseERList
                       where Math.Abs(o.DifferenceCost) < TotalDiff * Proc / 100
                       //orderby o.DifferenceCost descending
                       select new
            {
                o.DifferenceCost,
                o.ResourceName
            };
            double Total2 = qry6.Sum(n => n.DifferenceCost);

            SeriesCollection1.Clear();
            foreach (var newY in qry3.ToList())
            {
                PieSeries ps10 = new PieSeries
                {
                    Title      = newY.ResourceName,
                    DataLabels = true,
                    FontSize   = 10,
                    FontWeight = FontWeights.Bold,
                    LabelPoint = point => string.Format("{0},\r\n {1:N0}", newY.ResourceName, point.Y),
                    Values     = new ChartValues <ObservableValue> {
                        new ObservableValue(newY.FactCost)
                    }
                };
                SeriesCollection1.Add(ps10);
            }
            PieSeries ps2 = new PieSeries
            {
                Title      = "Прочие",
                DataLabels = true,
                FontSize   = 10,
                FontWeight = FontWeights.Bold,
                LabelPoint = point => string.Format("{0},\r\n {1:N0}", "Прочие", point.Y),
                Values     = new ChartValues <ObservableValue> {
                    new ObservableValue(Total1)
                }
            };

            SeriesCollection1.Add(ps2);

            SeriesCollection2.Clear();
            ColumnSeries ps1 = new ColumnSeries()
            {
                //LabelsPosition = BarLabelPosition.Parallel,
                //Fill = System.Windows.Media.Brushes.PowderBlue,
                DataLabels = true,
                FontSize   = 10,
                FontWeight = FontWeights.Bold,
                Values     = new ChartValues <ObservableValue>()
            };

            foreach (var newY in qry5.ToList())
            {
                ps1.Values.Add(new ObservableValue(newY.DifferenceCost));
            }
            ps1.Values.Add(new ObservableValue(Total2));
            SeriesCollection2.Add(ps1);

            LabelsER.Clear();
            foreach (var newX in qry5.ToList())
            {
                LabelsER.Add(newX.ResourceName.ToString());
            }
            ;
            LabelsER.Add("Прочие");

            //Labels = new ObservableCollection<string>(MonthUseList.Select(x => x.ResourceName));
            FormatterER = val => val.ToString("N0");
        }