public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var jObj = JObject.Load(reader); var type = jObj.Value <string>("Type") ?? jObj.Value <string>("type"); var dataset = default(IMixableDataset); switch (type) { case "bar": { dataset = new BarChartDataset(); break; } case "line": { dataset = new LineChartDataset(); break; } } serializer.Populate(jObj.CreateReader(), dataset); return(dataset); }
public ActionResult Lifespan() { var data = _fileRepository.LoadFile <LifeExpectancyModel>("LifeExpectancy.csv"); var filteredData = data.OrderByDescending(x => x.GetYearsArray().Average()) .Take(5).ToList(); var chart = new ChartData <LineChartDataset>(); chart.Labels.Add("2010"); chart.Labels.Add("2011"); chart.Labels.Add("2012"); chart.Labels.Add("2013"); foreach (LifeExpectancyModel element in filteredData) { var dataset = new LineChartDataset(); dataset.Label = element.Country; dataset.Data.Add(element.Year2010); dataset.Data.Add(element.Year2011); dataset.Data.Add(element.Year2012); dataset.Data.Add(element.Year2013); chart.Datasets.Add(dataset); } var model = new LifespanViewModel(); ChartHelpers.BreatheColors(chart); model.ChartData = SerializationHelpers.ToJson(chart); return(View(model)); }
public void DesiredUseCase() { LineChartConfig config = new LineChartConfig(); // Must use reference types to take advantage of type variance in C# LineChartDataset <string> intDataset = new LineChartDataset <string>(); // Using the non-interface method to add the range, you can still mutate the object intDataset.AddRange(new[] { "1", "2", "3", "4", "5" }); // Your original code works fine when reference types are used config.ChartData.Datasets.Add(intDataset); }
public async Task <DiedAndSurvivorsCumulativeDetails> GetDiedAndSurvivorsCumulativeAsync(LineChart <double> chart) { var data = await _dataService.GetDiedAndSurvivorsCumulativeAsync(); var groupedOverleden = GroupByDays(data.Overleden, _groupByDays); var groupedVerlaten = GroupByDays(data.Verlaten, _groupByDays); var groupedNogOpVerpleegafdeling = GroupByDays(data.NogOpVerpleegafdeling, _groupByDays); await chart.Clear(); var overleden = new LineChartDataset <double> { Fill = false, BorderColor = new List <string> { AppColors.ChartLightGray }, Data = groupedOverleden.Select(d => d.Value).ToList() }; var verlaten = new LineChartDataset <double> { Fill = false, BorderColor = new List <string> { AppColors.Green }, Data = groupedVerlaten.Select(d => d.Value).ToList() }; var verpleegafdeling = new LineChartDataset <double> { Fill = false, BorderColor = new List <string> { AppColors.ChartBlue }, Data = groupedNogOpVerpleegafdeling.Select(d => d.Value).ToList() }; await _blazoriseInteropServices.AddLabelsDatasetsAndUpdate(chart.ElementId, GetLabelsWithYear(groupedOverleden.Select(g => g.Date)), overleden, verlaten, verpleegafdeling ); return(new DiedAndSurvivorsCumulativeDetails { Dates = $"{DateUtils.ToLongDate(data.Overleden.First().Date)} t/m {DateUtils.ToLongDate(data.Overleden.Last().Date)}", CountTodayOverleden = data.Overleden.Last().Value.ToString(), CountTodayNogOpVerpleegafdeling = data.NogOpVerpleegafdeling.Last().Value.ToString(), CountTodayVerlaten = data.Verlaten.Last().Value.ToString() }); }
protected async Task HandleRedraw() { await CargaDatos(); LineChartDataset <double> datosEnGrafica = GetLineChartTemperatureDataset(); await lineChartTemperature.Clear(); await lineChartTemperature.AddLabelsDatasetsAndUpdate(Labels, datosEnGrafica); datosEnGrafica = GetLineChartHumityDataset(); await lineChartHumity.Clear(); await lineChartHumity.AddLabelsDatasetsAndUpdate(Labels, datosEnGrafica); }
public async Task <DateRangeWithTodayValueDetails> GetTestedGGDDailyTotalAsync(LineChart <double?> chart) { var allData = await _dataService.GetTestedGGDDailyTotalAsync(); var groupedGeschat = GroupByDays(allData, tp => tp.Value, _groupByDays); await chart.Clear(); var set = new LineChartDataset <double?> { Fill = false, BorderColor = new List <string> { AppColors.ChartDarkBlue }, Data = groupedGeschat.Select(d => (double?)d.Value).ToList() }; double lastValue = allData.Last().Value; var points = Enumerable.Range(0, groupedGeschat.Count - 1).Select(x => (double?)null).ToList(); points.Add(lastValue); var pointColors = Enumerable.Range(0, groupedGeschat.Count - 1).Select(x => (string)null).ToList(); pointColors.Add(AppColors.ChartRed); var lastPoint = new LineChartDataset <double?> { Fill = false, PointBackgroundColor = pointColors, PointBorderColor = pointColors, Data = points }; await _blazoriseInteropServices.AddLabelsDatasetsAndUpdate(chart.ElementId, GetLabelsWithYear(groupedGeschat.Select(g => g.Date)), set, lastPoint ); return(new DateRangeWithTodayValueDetails { Dates = $"{DateUtils.ToLongDate(allData.First().Date)} t/m {DateUtils.ToLongDate(allData.Last().Date)}", CountToday = lastValue.ToString(), CountTotal = allData.Sum(x => x.Value).ToString() }); }
async Task RefreshUI(SourceHistory history) { var labels = history.HistoryData .Select(d => d.TimeStampUtc.LocalDateTime.ToString("d.M.")) .Reverse() .ToArray(); var dataSupplies = history.HistoryData .Select(d => { // Item 0 = supplies in kg (label "supplies") string value = d.DataItems[0].Value.ToString(); double.TryParse(value, out double supplies); return(supplies); }) .Reverse() .ToList(); var currentSupplies = $"Vorrat: {dataSupplies.Last():0.0}kg"; var dataSetPelletSupplies = new LineChartDataset <double> { Label = currentSupplies, Data = dataSupplies, BackgroundColor = new List <string> { ChartColor.FromRgba(226, 228, 242, 0.8f) }, BorderColor = new List <string> { ChartColor.FromRgba(95, 104, 188, 0.5f) }, Fill = true, PointRadius = 2, BorderDash = new List <int> { } }; await lineChart.Clear(); await lineChart.AddLabel(labels); await lineChart.AddDataSet(dataSetPelletSupplies); await lineChart.Update(); }
public async Task RefreshChartData() { IEnumerable <DashboardChartData> newDatas = await GenerateChartDatas.Invoke(); await Chart.Clear(); await Chart.AddLabels(newDatas.Select(x => x.Label).ToArray()); List <string> colors = new List <string>(); for (int i = 0; i < newDatas.Count(); i++) { string lineColor = PointColorGenerator?.Invoke(i); if (!string.IsNullOrWhiteSpace(lineColor)) { colors.Add(lineColor); } else { colors.Add(DEFAULT_POINT_COLOR); } } LineChartDataset <DashboardChartDatasetYValue> newChartDataset = new LineChartDataset <DashboardChartDatasetYValue>() { Data = newDatas.Select(x => new DashboardChartDatasetYValue() { Y = x.Value, DataId = x.DataId }).ToList(), Fill = true, BackgroundColor = DEFAULT_FILL_COLOR, PointBackgroundColor = colors, PointBorderColor = colors, PointRadius = 3.5f }; CurrentDataset = newChartDataset; await Chart.AddDataSet(newChartDataset); await Chart.Update(); }
async Task RefreshUI(SourceHistory history) { var labels = history.HistoryData .Select(d => d.TimeStampUtc.LocalDateTime.ToString("HH:mm")) .Reverse() .ToArray(); var dataHousePower = history.HistoryData .Select(d => { string value = d.DataItems[1].Value.ToString(); double.TryParse(value, out double power); return(power); }) .Reverse() .ToList(); var dataSolarPower = history.HistoryData .Select(d => { string value = d.DataItems[2].Value.ToString(); double.TryParse(value, out double power); return(power); }) .Reverse() .ToList(); var productionEnergy = $"PV ({dataSolarPower.Last():0.#}kW)"; var consumptionEnergy = $"Verbrauch ({dataHousePower.Last():0.#}kW)"; var dataSetHousePower = new LineChartDataset <double> { Label = consumptionEnergy, Data = dataHousePower, BackgroundColor = new List <string> { ChartColor.FromRgba(249, 134, 134, 0.5f) }, BorderColor = new List <string> { ChartColor.FromRgba(249, 134, 134, 1f) }, Fill = true, PointRadius = 2, BorderDash = new List <int> { } }; var dataSetSolarPower = new LineChartDataset <double> { Label = productionEnergy, Data = dataSolarPower, Fill = true, BackgroundColor = new List <string> { ChartColor.FromRgba(226, 228, 242, 0.8f) }, BorderColor = new List <string> { ChartColor.FromRgba(95, 104, 188, 0.5f) }, PointRadius = 2, BorderDash = new List <int> { } }; await lineChart.Clear(); await lineChart.AddLabel(labels); await lineChart.AddDataSet(dataSetHousePower); await lineChart.AddDataSet(dataSetSolarPower); await lineChart.Update(); }
private async Task <LineChartConfig> BuildChartConfig(HttpResponseMessage responseMessage) { var contentString = await responseMessage.Content.ReadAsStringAsync(); var chartData = Json.Deserialize <ChartData>(contentString); var buildChartConfig = new LineChartConfig { CanvasId = "myFirstLineChart", Options = new LineChartOptions { Text = "Item Prices", Display = true, Responsive = true, Title = new OptionsTitle { Display = true, Text = "Item Prices" }, Legend = new Legend { Position = LegendPosition.TOP.ToString(), Labels = new Labels { UsePointStyle = true, } }, Hover = new LineChartOptionsHover() { Intersect = true, Mode = Mode.nearest }, Tooltips = new Tooltips { Mode = Mode.nearest, Intersect = true }, }, Data = new LineChartData { Labels = chartData.Labels, Datasets = new List <LineChartDataset>() } }; foreach (var dataSet in chartData.DataSets) { var chartDataSet = new LineChartDataset { Label = dataSet.Label, BackgroundColor = GetRandomColor(), BorderColor = GetRandomColor(), BorderWidth = 2, PointRadius = 3, PointBorderWidth = 1, Data = new List <object>() }; foreach (var datum in dataSet.Data) { chartDataSet.Data.Add(datum); } buildChartConfig.Data.Datasets.Add(chartDataSet); } return(buildChartConfig); }