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));
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        // 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));
            }
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }