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);
        }
Exemple #2
0
        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()
            });
        }
Exemple #5
0
        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()
            });
        }
Exemple #7
0
        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();
        }
Exemple #8
0
        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);
        }