Esempio n. 1
0
        public ActionResult Aggregate(ResultsModel resultsModel)
        {
            try
            {
                // union
                double lower = 10, upper = 0;
                foreach (var result in resultsModel.AllResults)
                {
                    if (!result.IsFullWorkspace)
                    {
                        var splitInterval = (from i in result.OutputInterval.Split(new[] {";", "[", "]"},
                            StringSplitOptions.RemoveEmptyEntries)
                            select i.Trim()).ToList();
                        if (splitInterval.Count() == 2)
                        {
                            double parsedLower = double.Parse(splitInterval[0]);
                            if (parsedLower < lower)
                            {
                                lower = parsedLower;
                            }

                            double parsedUpper = double.Parse(splitInterval[1]);
                            if (parsedUpper > upper)
                            {
                                upper = parsedUpper;
                            }
                        }
                    }
                }

                // intersection with full results
                foreach (var result in resultsModel.AllResults)
                {
                    if (result.IsFullWorkspace)
                    {
                        var splitInterval = (from i in result.OutputInterval.Split(new[] { ";", "[", "]" },
                            StringSplitOptions.RemoveEmptyEntries)
                                             select i.Trim()).ToList();
                        if (splitInterval.Count() == 2)
                        {
                            double parsedLower = double.Parse(splitInterval[0]);
                            if (parsedLower < upper)
                            {
                                lower = parsedLower;
                            }

                            double parsedUpper = double.Parse(splitInterval[1]);
                            if (parsedUpper > lower)
                            {
                                upper = parsedUpper;
                            }
                        }
                    }
                }

                var interval = new Interval(lower, upper);
                var aggregatedResult = new ResultModel
                {
                    IsAggregated = true,
                    OutputInterval = interval.ToString(),
                    OutputLinguistic = string.Join( ", ", DecisionMakerType2.IntervalToLinguistic(interval))
                };

                return PartialView("_Result", aggregatedResult);
            }
            catch (Exception ex)
            {
                return new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError);
            }
        }
Esempio n. 2
0
        public ActionResult DrawChart(ResultsModel resultsModel)
        {
            try
            {
                var chart = new Chart();
                chart.Width = 1000;
                chart.Height = 800;
                chart.Palette = ChartColorPalette.SeaGreen;
                int counter = 1;
                foreach (var result in resultsModel.AllResults)
                {
                    chart.Series.Add(CreateSeries(result.OutputInterval, result.WorkspaceName, ref counter, result.IsAggregated));
                }

                if (resultsModel.AggregatedResult != null)
                {
                    chart.Series.Add(
                        CreateSeries(
                            resultsModel.AggregatedResult.OutputInterval,
                            resultsModel.AggregatedResult.WorkspaceName,
                            ref counter,
                            true));
                }

                chart.ChartAreas.Add(CreateChartArea(counter, resultsModel));

                MemoryStream ms = new MemoryStream();
                chart.SaveImage(ms);
                var data = Convert.ToBase64String(ms.GetBuffer());
                return Json(data);
            }
            catch (Exception ex)
            {
                return new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError);
            }
        }
Esempio n. 3
0
        private ChartArea CreateChartArea(int counter, ResultsModel results)
        {
            ChartArea chartArea = new ChartArea();
            chartArea.Name = "Result Chart";
            chartArea.BackColor = Color.Transparent;
            chartArea.AxisX.LabelAutoFitStyle = LabelAutoFitStyles.WordWrap;
            chartArea.AxisX.Interval = 1;
            chartArea.AxisX.IntervalOffset = -0.5;
            chartArea.AxisX.Maximum = counter - 0.5;
            chartArea.AxisX.Minimum = 0.5;

            chartArea.AxisY.IsLabelAutoFit = false;
            chartArea.AxisY.Interval = 2;
            chartArea.AxisY.Maximum = 10;
            chartArea.AxisX.LabelStyle.Font = new Font("Verdana,Arial,Helvetica,sans-serif", 20F, FontStyle.Regular);
            chartArea.AxisY.LabelStyle.Font = new Font("Verdana,Arial,Helvetica,sans-serif", 20F, FontStyle.Regular);
            chartArea.AxisY.LineColor = Color.FromArgb(18, 44, 63);
            chartArea.AxisX.LineColor = Color.FromArgb(18, 44, 63);
            chartArea.AxisY.MajorGrid.LineColor = Color.FromArgb(18, 44, 63);
            chartArea.AxisX.MajorGrid.LineColor = Color.FromArgb(18, 44, 63);
            chartArea.AxisX.LabelStyle.ForeColor = Color.FromArgb(18, 44, 63);
            chartArea.AxisY.LabelStyle.ForeColor = Color.FromArgb(18, 44, 63);
            double offset = 0.5;
            foreach (var result in results.AllResults)
            {
                chartArea.AxisX.CustomLabels.Add(offset, offset + 1, result.WorkspaceName);
                offset++;
            }

            if (results.AggregatedResult != null)
            {
                chartArea.AxisX.CustomLabels.Add(offset, offset + 1, results.AggregatedResult.WorkspaceName);
            }

            return chartArea;
        }