示例#1
0
        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;
        }
示例#2
0
        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);
        }