internal static void RecalculateTrendMinMaxLines(List <GraphSeries> graphData) { var maxSeries = graphData.First(d => d.SeriesName == MaxSeriesName).Yvalue; var minSeries = graphData.First(d => d.SeriesName == MinSeriesName).Yvalue; var kpiSeries = graphData.First(d => d.SeriesName == KpiSeriesName).Yvalue; if (kpiSeries.Count == 0) { return; } var maxValue = kpiSeries.Max(); var minValue = kpiSeries.Min(); for (var i = 0; i < maxSeries.Count; i++) { maxSeries[i] = maxValue; minSeries[i] = minValue; } var trendLine = TrendLineCalculator.CalculateLinearRegression(kpiSeries.ToArray()); var trend = trendLine.GetTrendLineYPoints(); graphData.First(d => d.SeriesName == TrendSeriesName).Yvalue = trend; }
private static List <GraphSeries> GraphKpiData(IQueryable <KpiGraphDataHolder> kpiGraphingData) { var dateTimes = new List <object>(); var kpi = new List <double>(); var max = new List <double>(); var trend = new List <double>(); var min = new List <double>(); if (kpiGraphingData.Any()) { foreach (var ft in kpiGraphingData) { if (ft.Kpi.HasValue) { kpi.Add((double)ft.Kpi); } else { kpi.Add(0); } if (kpi.Count > 1 && kpi[kpi.Count - 2] == 0) { kpi[kpi.Count - 2] = kpi[kpi.Count - 1]; } dateTimes.Add(ft.ReportDate); } var maxValue = kpi.Max(); var minValue = kpi.Min(); foreach (var t in kpi) { max.Add(maxValue); min.Add(minValue); } var trendLine = TrendLineCalculator.CalculateLinearRegression(kpi.ToArray()); trend = trendLine.GetTrendLineYPoints(); } var seriesInformation = new List <GraphSeries>() { new GraphSeries(MaxSeriesName) { GraphColour = Color.MediumSeaGreen, Xvalue = dateTimes, Yvalue = max }, new GraphSeries(TrendSeriesName) { GraphColour = Color.DeepSkyBlue, Xvalue = dateTimes, Yvalue = trend }, new GraphSeries(MinSeriesName) { GraphColour = Color.Red, Xvalue = dateTimes, Yvalue = min }, new GraphSeries(KpiSeriesName) { GraphColour = Color.Blue, Xvalue = dateTimes, Yvalue = kpi } }; return(seriesInformation); }