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); }
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); }
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); }
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")); }
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()); }
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); }