示例#1
0
        protected virtual GeckoLineChart BuildLinechartData(LineChartArgs args,
                                                            IEnumerable <LineChartData> sourceData,
                                                            List <DateTime> xAxis,
                                                            GeckoValues yAxis)
        {
            var data = new GeckoLineChart();

            for (var i = 0; i < sourceData.Count(); i++)
            {
                if (i != 0 && (i % args.Sample != 0))
                {
                    continue;
                }

                // start at the newest and work backwards
                var j   = sourceData.Count() - i - 1;
                var lci = sourceData.ElementAt(j);

                xAxis.Add(lci.When);
                yAxis.Add(lci.Value);
                data.Item.Add(Scale(lci.Value,
                                    args.ScaleUp,
                                    args.ScaleDown,
                                    args.DecimalPlaces).ToString());
            }

            // finally reverse the data order oldest->newest
            data.Item.Reverse();
            return(data);
        }
示例#2
0
        public GeckoLineChart GetGeckoboardLineChartForCheckRate(LineChartArgs args)
        {
            GeckoLineChart data = null;

            try
            {
                var yAxis = new GeckoValues();
                var xAxis = new List <DateTime>();

                CalculateLinechartSample(args);

                DateTime oldestDate;
                DateTime newestDate;
                CalculateLinechartDateRange(args, out oldestDate, out newestDate);

                // get the actual data from the provider and a "zero set" - a set
                // of zero values for the entire date range
                var dbData   = myDataProvider.GetLineChartDataForCheckRate(args);
                var zeroData = GenerateLinechartZeroSet(args, oldestDate, newestDate);
                // merge the two data sets, using the actual data value where
                // available, otherwise use a zero value
                var mergedData = MergeLinechartData(dbData, zeroData);
                data = BuildLinechartData(args, mergedData, xAxis, yAxis);
                CalculateLinechartSettings(args, data, yAxis, xAxis);
            }
            catch (Exception ex)
            {
                Logger.Error(Logger.Event.During("GetGeckoboardLineChartForCheckRate")
                             .Encountered(ex));
                throw;
            }

            return(data);
        }
示例#3
0
        protected void CalculateLinechartSettings(LineChartArgs args,
                                                  GeckoLineChart data,
                                                  GeckoValues yAxis,
                                                  List <DateTime> xAxis)
        {
            var minY = args.ScaleY
                           ? Scale(yAxis.Min(), args.ScaleUp, args.ScaleDown, args.ScaleYDecimalPlaces)
                           : Scale(yAxis.Min(), 1, 1, args.ScaleYDecimalPlaces);
            var midY = args.ScaleY
                           ? Scale(yAxis.Mid(), args.ScaleUp, args.ScaleDown, args.ScaleYDecimalPlaces)
                           : Scale(yAxis.Mid(), 1, 1, args.ScaleYDecimalPlaces);
            var maxY = args.ScaleY
                           ? Scale(yAxis.Max(), args.ScaleUp, args.ScaleDown, args.ScaleYDecimalPlaces)
                           : Scale(yAxis.Max(), 1, 1, args.ScaleYDecimalPlaces);

            var colourKey = string.Format("linechart.{0}.{1}", args.Site, args.Check);

            data.Settings.Colour = myColourPicker.Next(colourKey).ToString();
            data.Settings.Y.Add(minY.ToString());
            data.Settings.Y.Add(midY.ToString());
            data.Settings.Y.Add(maxY.ToString());

            var minDate = xAxis.Min();
            var maxDate = xAxis.Max();

            if (maxDate.Subtract(minDate).TotalDays < 1)
            {
                data.Settings.X.Add(minDate.ToShortTimeString());
                data.Settings.X.Add(minDate.AddMinutes(
                                        maxDate.Subtract(minDate).TotalMinutes / 2).ToShortTimeString());
                data.Settings.X.Add(maxDate.ToShortTimeString());
            }
            else
            {
                var midMins = maxDate.Subtract(minDate).TotalMinutes / 2;
                var midDate = maxDate.Subtract(TimeSpan.FromMinutes(midMins));


                data.Settings.X.Add(minDate.ToString(Linechart.X_Axis_DateFormat));
                data.Settings.X.Add(midDate.ToString(Linechart.X_Axis_DateFormat));
                data.Settings.X.Add(maxDate.ToString(Linechart.X_Axis_DateFormat));
            }
        }