public string LineChart(int count, List <string> label, List <object> data) { if (count != label.Count() & count != data.Count()) { throw new System.InvalidOperationException("The List and labels and data .count Not match !! "); } else { List <string> Color = new List <string>(); List <object> datasets = new List <object>(); for (int i = 0; i < count; i++) { var chartdata = new LineChartModel() { fill = false, spanGaps = false, label = label[i], borderColor = GetRandomColor(), data = data[i] }; datasets.Add(chartdata); } return(JsonConvert.SerializeObject(datasets)); } }
public async Task <LineChartModel> GetActivityLineChartData(int days = 15) { var filterDate = DateTime.UtcNow.AddDays(-days + 1); LineChartModel lineChart = new LineChartModel(); var labels = new List <string>(); var values = new List <int>(); var groups = await _ctx.Issues .Where(i => (i.ProjectId == ProjectId) && (i.StatusId != 6) && (i.CreationDate >= filterDate)) .GroupBy(i => i.CreationDate.Date) .Select(g => new { g.Key, Count = g.Count() }) .ToListAsync(); //Populate the Labels with the date striings in the past {{days}} days for (int i = 0; i < days; i++) { var date = filterDate.AddDays(i).ToShortDateString(); labels.Add(date); } int lastNonZeroDay = -1; //Add zeroes on the days that no issue was submitted foreach (var group in groups) { var nonZeroDay = labels.IndexOf(group.Key.ToShortDateString()); for (int j = lastNonZeroDay + 1; j < nonZeroDay; j++) { values.Add(0); } values.Add(group.Count); lastNonZeroDay = nonZeroDay; } for (int z = lastNonZeroDay + 1; z < days; z++) { values.Add(0); } lineChart.Labels = labels; lineChart.Values = values; return(lineChart); }
// Line Chart Ajax public async Task <ActionResult> GetLineChart(LineChartModel model) { try { db = new ChartsDatabaseManager(); var response = new LineChartDataModel(); var details = new ChartDetails(); response.Result = await db.GetLineChartMeters(details, model.From, model.To, model.period, model.Ids); response.Details = details; return(Json(response, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(ex, JsonRequestBehavior.AllowGet)); } }
public JsonChartData GetJsonChartData(PieChartModel typesPieData, PieChartModel statusPieData, LineChartModel activityLineData) { JsonChartData json = new JsonChartData(); json.typePieValues = JsonSerializer.Serialize(typesPieData.Values); json.typePieLabels = JsonSerializer.Serialize(typesPieData.Labels); json.typePieColors = JsonSerializer.Serialize(typesPieData.Colors); json.statusPieValues = JsonSerializer.Serialize(statusPieData.Values); json.statusPieLabels = JsonSerializer.Serialize(statusPieData.Labels); json.statusPieColors = JsonSerializer.Serialize(statusPieData.Colors); json.activityLineValues = JsonSerializer.Serialize(activityLineData.Values); json.activityLineLabels = JsonSerializer.Serialize(activityLineData.Labels); return(json); }
private async Task <List <LineChartModel> > GetChartData(List <CovidData> covidData) { var chartData = new List <LineChartModel>(); foreach (CovidData record in covidData) { LineChartModel dataPoint = new LineChartModel(); dataPoint.xValue = record.Date; switch (CovidDataType) { case CovidDataTypeEnum.NewCases: dataPoint.yValue = record.NewCountConfirmed; break; case CovidDataTypeEnum.CasesMovingAverage: dataPoint.yValue = (double)record.CriticalDaysMovingAverageCases; break; case CovidDataTypeEnum.NewDeaths: dataPoint.yValue = record.NewCountDeaths; break; case CovidDataTypeEnum.DeathsMovingAverage: dataPoint.yValue = (double)record.CriticalDaysMovingAverageDeaths; break; case CovidDataTypeEnum.CasesMovingAveragePerOneThousandPopulation: dataPoint.yValue = (double)record.CriticalDaysMovingCasesPerOneHundredThousand; break; case CovidDataTypeEnum.DeathsMovingAveragePerOneThousandPopulation: dataPoint.yValue = (double)record.CriticalDaysMovingDeathsPerOneHundredThousand; break; case CovidDataTypeEnum.ICUCovidPatients: dataPoint.yValue = (double)record.ICUCovidPatientCount; dataPoint.yValue2 = (double)record.ICUAvailableBedsCount; break; default: dataPoint.yValue = record.NewCountConfirmed; break; } chartData.Add(dataPoint); } var yValue1MaxValue = chartData.OrderByDescending(x => x.yValue).FirstOrDefault()?.yValue ?? 0; var yValue2MaxValue = chartData.OrderByDescending(x => x.yValue2).FirstOrDefault()?.yValue2 ?? 0; var yValue1MinValue = chartData.OrderBy(x => x.yValue).FirstOrDefault()?.yValue ?? 0; var yValue2MinValue = chartData.OrderBy(x => x.yValue2).FirstOrDefault()?.yValue2 ?? 0; MaxChartNumber = yValue1MaxValue > yValue2MaxValue ? yValue1MaxValue : yValue2MaxValue; var bufferMaxChartNumber = MaxChartNumber * 0.10; MaxChartNumber = MaxChartNumber + bufferMaxChartNumber; var dataMinValue = yValue1MinValue < yValue2MinValue ? yValue1MinValue : yValue2MinValue; if (dataMinValue > 0) { MinChartNumber = 0; } else { MinChartNumber = dataMinValue; } ChartInterval = Math.Round(MaxChartNumber / 10); StateHasChanged(); return(chartData); }