コード例 #1
0
        private Task <Chart> GenerateChartTaskOverTime(List <string> paramsList)
        {
            var generateChartTask = Task.Run(function: () =>
            {
                if (!_resultContext.SimulationJobs.Any())
                {
                    return(null);
                }

                SimulationType simType = (paramsList[index: 1].Equals(value: "Decentral"))
                    ? SimulationType.Decentral
                    : SimulationType.Central;

                Chart chart = new Chart {
                    Type = Enums.ChartType.Scatter
                };

                // charttype
                var cc = new ChartColors();
                // use available hight in Chart
                // use available hight in Chart
                var machinesKpi = _resultContext.Kpis.Where(predicate: x => x.SimulationConfigurationId == Convert.ToInt32(paramsList[0]) &&
                                                            x.SimulationType == simType &&
                                                            x.KpiType == KpiType.ResourceUtilization &&
                                                            !x.IsKpi &&
                                                            !x.IsFinal && x.SimulationNumber == Convert.ToInt32(paramsList[2]))
                                  .ToList();
                var settlingTime = _resultContext.SimulationConfigurations.First(predicate: x => x.Id == Convert.ToInt32(paramsList[0])).SettlingStart;
                var machines     = machinesKpi.Select(selector: n => n.Name).Distinct().ToList();
                var data         = new Data {
                    Labels = machines
                };

                // create Dataset for each Lable
                data.Datasets = new List <Dataset>();

                var i = 0;
                foreach (var machine in machines)
                {
                    // add zero to start
                    var kpis = new List <LineScatterData> {
                        new LineScatterData {
                            X = "0", Y = "0"
                        }
                    };
                    kpis.AddRange(collection: machinesKpi.Where(predicate: x => x.Name == machine).OrderBy(keySelector: x => x.Time)
                                  .Select(selector: x => new LineScatterData {
                        X = x.Time.ToString(), Y = (x.Value * 100).ToString()
                    }).ToList());

                    var lds = new LineScatterDataset()
                    {
                        Data            = kpis,
                        BorderWidth     = 2,
                        Label           = machine,
                        ShowLine        = true,
                        Fill            = "false",
                        BackgroundColor = cc.Get(i),
                        BorderColor     = cc.Get(i++),
                        LineTension     = 0
                    };
                    data.Datasets.Add(item: lds);
                }


                data.Datasets.Add(item: new LineScatterDataset()
                {
                    Data = new List <LineScatterData> {
                        new LineScatterData {
                            X = "0", Y = "100"
                        }, new LineScatterData {
                            X = Convert.ToDouble(value: settlingTime).ToString(), Y = "100"
                        }
                    },
                    BorderWidth     = 1,
                    Label           = "Settling time",
                    BackgroundColor = ChartJSCore.Helpers.ChartColor.FromRgba(0, 0, 0, 0.1),
                    BorderColor     = ChartJSCore.Helpers.ChartColor.FromRgba(0, 0, 0, 0.3),
                    ShowLine        = true,
                    //Fill = true,
                    //SteppedLine = false,
                    LineTension = 0,
                    PointRadius = new List <int> {
                        0, 0
                    }
                });

                chart.Data = data;

                // Specifie xy Axis
                var xAxis = new List <Scale>()
                {
                    new CartesianScale {
                        Stacked = false, Display = true
                    }
                };
                var yAxis = new List <Scale>()
                {
                    new CartesianScale()
                    {
                        Stacked = false, Ticks = new CartesianLinearTick {
                            BeginAtZero = true, Min = 0, Max = 100
                        }, Display = true,
                        Id = "first-y-axis", Type = "linear", ScaleLabel = new ScaleLabel {
                            LabelString = "Value in %", Display = true, FontSize = 12
                        },
                    }
                };
                //var yAxis = new List<Scale>() { new BarScale{ Ticks = new CategoryTick { Min = "0", Max  = (yMaxScale * 1.1).ToString() } } };
                chart.Options = new Options()
                {
                    Scales = new Scales {
                        XAxes = xAxis, YAxes = yAxis
                    },
                    Responsive          = true,
                    MaintainAspectRatio = true,
                    Legend = new Legend {
                        Position = "bottom", Display = true, FullWidth = true
                    },
                    Title = new Title {
                        Text = "Machine Workload over Time", Position = "top", FontSize = 24, FontStyle = "bold", Display = true
                    }
                };

                return(chart);
            });

            return(generateChartTask);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: tassan/ChartJSCore
        public static string GenerateLineScatterChart()
        {
            Chart chart = new Chart();

            chart.Type = "line";

            Data data = new Data();

            LineScatterDataset dataset = new LineScatterDataset()
            {
                Label = "Scatter Dataset",
                Data  = new List <LineScatterData>()
            };

            LineScatterData scatterData1 = new LineScatterData();
            LineScatterData scatterData2 = new LineScatterData();
            LineScatterData scatterData3 = new LineScatterData();

            scatterData1.x = "-10";
            scatterData1.y = "0";
            dataset.Data.Add(scatterData1);

            scatterData2.x = "0";
            scatterData2.y = "10";
            dataset.Data.Add(scatterData2);

            scatterData3.x = "10";
            scatterData3.y = "5";
            dataset.Data.Add(scatterData3);

            data.Datasets = new List <Dataset>();
            data.Datasets.Add(dataset);

            chart.Data = data;

            Options options = new Options()
            {
                Scales = new Scales()
            };

            Scales scales = new Scales()
            {
                XAxes = new List <Scale>()
                {
                    new CartesianScale()
                    {
                        Type     = "linear",
                        Position = "bottom",
                        Ticks    = new CartesianLinearTick()
                        {
                            BeginAtZero = true
                        }
                    }
                }
            };

            options.Scales = scales;

            chart.Options = options;

            string code = chart.CreateChartCode("lineChart");

            return(code);
        }
コード例 #3
0
        private static Chart GenerateLineScatterChart()
        {
            var chart = new Chart {
                Type = Enums.ChartType.Line
            };

            var data = new Data();

            var dataset = new LineScatterDataset
            {
                Label = "Scatter Dataset",
                Data  = new List <LineScatterData>()
            };

            var scatterData1 = new LineScatterData();
            var scatterData2 = new LineScatterData();
            var scatterData3 = new LineScatterData();

            scatterData1.X = "-10";
            scatterData1.Y = "0";
            dataset.Data.Add(scatterData1);

            scatterData2.X = "0";
            scatterData2.Y = "10";
            dataset.Data.Add(scatterData2);

            scatterData3.X = "10";
            scatterData3.Y = "5";
            dataset.Data.Add(scatterData3);

            data.Datasets = new List <Dataset> {
                dataset
            };

            chart.Data = data;

            var options = new Options
            {
                Scales = new Scales()
            };

            var scales = new Scales
            {
                XAxes = new List <Scale>
                {
                    new CartesianScale
                    {
                        Type     = "linear",
                        Position = "bottom",
                        Ticks    = new CartesianLinearTick
                        {
                            BeginAtZero = true
                        }
                    }
                }
            };

            options.Scales = scales;

            chart.Options = options;
            return(chart);
        }
コード例 #4
0
ファイル: ChartGenerator.cs プロジェクト: Planche95/Smarti
        public Chart GenerateLineScatterChart()
        {
            Chart chart = new Chart
            {
                Type = "line"
            };

            ChartJSCore.Models.Data data = new ChartJSCore.Models.Data();

            LineScatterDataset dataset = new LineScatterDataset()
            {
                Label = "Scatter Dataset",
                Data  = new List <LineScatterData>()
            };

            LineScatterData scatterData1 = new LineScatterData();
            LineScatterData scatterData2 = new LineScatterData();
            LineScatterData scatterData3 = new LineScatterData();

            scatterData1.x = -10;
            scatterData1.y = 0;
            dataset.Data.Add(scatterData1);

            scatterData2.x = 0;
            scatterData2.y = 10;
            dataset.Data.Add(scatterData2);

            scatterData3.x = 10;
            scatterData3.y = 5;
            dataset.Data.Add(scatterData3);

            data.Datasets = new List <Dataset>
            {
                dataset
            };

            chart.Data = data;

            Options options = new Options()
            {
                Scales = new Scales()
            };

            Scales scales = new Scales()
            {
                XAxes = new List <Object>()
                {
                    new CartesianScale()
                    {
                        Type     = "linear",
                        Position = "bottom",
                        Ticks    = new CartesianLinearTick()
                        {
                            BeginAtZero = true
                        }
                    }
                }
            };

            options.Scales = scales;

            chart.Options = options;

            return(chart);
        }
        public async Task <IViewComponentResult> InvokeAsync(List <string> paramsList)
        {
            var generateChartTask = Task.Run(function: () =>
            {
                if (!_context.SimulationOperations.Any())
                {
                    return(null);
                }

                var simConfig = _context.SimulationConfigurations.Single(predicate: x => x.Id == Convert.ToInt32(paramsList[0]));
                var maxX      = Convert.ToInt32(value: Math.Floor(d: (decimal)simConfig.SimulationEndTime / 1000) * 1000);

                Chart chart = new Chart();

                // charttype
                chart.Type = Enums.ChartType.Scatter;

                // use available hight in Chart
                chart.Options = new LineOptions()
                {
                    MaintainAspectRatio = false,
                    Responsive          = true,
                    Scales = new Scales
                    {
                        YAxes = new List <Scale> {
                            new CartesianScale {
                                Id         = "first-y-axis", Type = "linear", Display = true,
                                ScaleLabel = new ScaleLabel {
                                    LabelString = "Value in €", Display = true, FontSize = 12
                                },
                                Ticks = new CartesianLinearTick {
                                    Min = 0, Display = true
                                }
                            }
                        },
                        XAxes = new List <Scale> {
                            new CartesianScale {
                                Id    = "first-x-axis", Type = "linear", Display = true,
                                Ticks = new CartesianLinearTick {
                                    Max = maxX, Min = 0, Display = true
                                },
                                ScaleLabel = new ScaleLabel {
                                    LabelString = "Time in min", Display = true, FontSize = 12
                                }
                            }
                        },
                    },
                    Legend = new Legend {
                        Position = "bottom", Display = true, FullWidth = true
                    },
                    Title = new Title {
                        Text = "Machine Workloads", Position = "top", FontSize = 24, FontStyle = "bold"
                    }
                };


                SimulationType simType = (paramsList[index: 1].Equals(value: "Decentral")) ? SimulationType.Decentral : SimulationType.Central;
                var kpis = _context.Kpis.Where(predicate: x => x.KpiType == KpiType.StockEvolution &&
                                               x.Count <= maxX &&
                                               x.SimulationConfigurationId == Convert.ToInt32(paramsList[0]) &&
                                               x.SimulationNumber == Convert.ToInt32(paramsList[2]) &&
                                               x.SimulationType == simType).OrderBy(keySelector: x => x.Name).ToList();

                var articles = kpis.Select(selector: x => x.Name).Distinct();

                var data = new Data {
                    Datasets = new List <Dataset>()
                };
                foreach (var article in articles)
                {
                    // add zero to start
                    var articleKpis = new List <LineScatterData> {
                        new LineScatterData {
                            X = "0", Y = "0"
                        }
                    };
                    articleKpis.AddRange(collection: kpis.Where(predicate: x => x.Name == article).OrderBy(keySelector: x => x.Count)
                                         .Select(selector: x => new LineScatterData {
                        X = x.Count.ToString(), Y = x.ValueMin.ToString()
                    }).ToList());

                    var lds = new LineScatterDataset()
                    {
                        // min Stock
                        Data        = articleKpis,
                        BorderWidth = 1,
                        Label       = article,
                        ShowLine    = true,
                        //SteppedLine = true,
                        LineTension = 0
                        , Hidden    = (article.Equals(value: "Dump-Truck") || article.Equals(value: "Race-Truck")) ? false : true
                        , YAxisID   = "first-y-axis"
                    };
                    data.Datasets.Add(item: lds);
                }
                chart.Data = data;
                return(chart);
            });

            // create JS to Render Chart.
            ViewData[index : "chart"] = await generateChartTask;
            ViewData[index : "Type"]  = paramsList[index : 1];
            return(View(viewName: $"StockEvolution"));
        }
コード例 #6
0
        public IActionResult Scatter()
        {
            Chart chart = new Chart();

            chart.Type = Enums.ChartType.Line;

            Data data = new Data();

            var dataset1 = new LineScatterDataset()
            {
                Label = "Scatter Dataset", Data = new List <LineScatterData>(), BackgroundColor = "rgba(75, 192, 192, 0.4)"
            };
            var dataset2 = new LineScatterDataset()
            {
                Label = "Dataset 2", Data = new List <LineScatterData>(), BackgroundColor = "rgba(192, 75, 192, 0.4)"
            };

            dataset1.Data.Add(new LineScatterData()
            {
                x = "-10", y = "0"
            });
            dataset1.Data.Add(new LineScatterData()
            {
                x = "0", y = "10"
            });
            dataset1.Data.Add(new LineScatterData()
            {
                x = "10", y = "5"
            });

            dataset2.Data.Add(new LineScatterData()
            {
                x = "-5", y = "8"
            });
            dataset2.Data.Add(new LineScatterData()
            {
                x = "0", y = "12"
            });
            dataset2.Data.Add(new LineScatterData()
            {
                x = "10", y = "2"
            });

            data.Datasets = new List <Dataset>();
            data.Datasets.Add(dataset1);
            data.Datasets.Add(dataset2);

            chart.Data = data;

            Options options = new Options()
            {
                Scales = new Scales()
            };

            Scales scales = new Scales()
            {
                XAxes = new List <Scale>()
                {
                    new CartesianScale()
                    {
                        Type     = "linear",
                        Position = "bottom",
                        Ticks    = new CartesianLinearTick()
                        {
                            BeginAtZero = true
                        }
                    }
                }
            };

            options.Scales = scales;

            chart.Options = options;

            ViewData["chart"] = chart;

            return(View());
        }
コード例 #7
0
        private static Chart GenerateLineScatterChart(List <Project> listOfProjects)
        {
            Chart chart = new Chart();

            chart.Type = Enums.ChartType.Line;

            Data data = new Data();

            LineScatterDataset dataset = new LineScatterDataset()
            {
                Label = "Scatter Dataset",
                Data  = new List <LineScatterData>()
            };

            LineScatterData scatterData1 = new LineScatterData();
            LineScatterData scatterData2 = new LineScatterData();
            LineScatterData scatterData3 = new LineScatterData();

            scatterData1.X = "-10";
            scatterData1.Y = "0";
            dataset.Data.Add(scatterData1);

            scatterData2.X = "0";
            scatterData2.Y = "10";
            dataset.Data.Add(scatterData2);

            scatterData3.X = "10";
            scatterData3.Y = "5";
            dataset.Data.Add(scatterData3);

            data.Datasets = new List <Dataset>();
            data.Datasets.Add(dataset);

            chart.Data = data;

            Options options = new Options()
            {
                Scales = new Scales()
            };

            Scales scales = new Scales()
            {
                XAxes = new List <Scale>()
                {
                    new CartesianScale()
                    {
                        Type     = "linear",
                        Position = "bottom",
                        Ticks    = new CartesianLinearTick()
                        {
                            BeginAtZero = true
                        }
                    }
                }
            };

            options.Scales = scales;

            chart.Options = options;

            return(chart);
        }