Exemplo n.º 1
0
        // Implemented for IGraphRenderer
        public void Render(Canvas canvas, DateIndexLookup dil, SensorDataLogResults results)
        {
            var sensor  = results.sensor;
            var serial  = sensor.device.serialNumber;
            var indices = dil.count;
            var series  = results.AsLineSeries(dil);

            model.Subtitle = serial.ToString() + "(" + sensor.type.GetTypeString() + ")";

            xAxis.Minimum        = 0;
            xAxis.Maximum        = indices - 1;
            xAxis.MajorStep      = (xAxis.Maximum - xAxis.Minimum) / Math.Min(10, indices);
            xAxis.LabelFormatter = (arg) => {
                var date = dil.GetDateTimeFromIndex((int)arg);
                return(date.ToLongTimeString());
            };

            yAxis.Minimum   = results.minimum.amount;
            yAxis.Maximum   = results.maximum.amount;
            yAxis.MajorStep = (yAxis.Maximum - yAxis.Minimum) / 5;
            if (yAxis.MajorStep == 0)
            {
                yAxis.MajorStep = 1;
            }
            yAxis.LabelFormatter = (arg) => {
                var su = sensor.unit.standardUnit;
                return(SensorUtils.ToFormattedString(su.OfScalar(arg).ConvertTo(sensor.unit)));
            };
            yAxis.Title = sensor.unit.ToString();

            model.Series.Clear();
            foreach (var s in series)
            {
                var colors = sensor.GetColorForSensor(context);
                s.Color = OxyColor.FromUInt32((uint)colors.Item1.ToArgb());
                model.Series.Add(s);
            }

            model.InvalidatePlot(true);

            var widthSpec  = View.MeasureSpec.MakeMeasureSpec(800, MeasureSpecMode.Exactly);
            var heightSpec = View.MeasureSpec.MakeMeasureSpec(400, MeasureSpecMode.Exactly);

            plot.Measure(widthSpec, heightSpec);
            plot.Layout(0, 0, plot.MeasuredWidth, plot.MeasuredHeight);
            plot.Draw(canvas);

            if (plot.Model.GetLastPlotException() != null)
            {
                throw plot.Model.GetLastPlotException();
            }
        }
Exemplo n.º 2
0
        // Implemented for IGraphRenderer
        public void Render(Canvas canvas, DateIndexLookup dil, SensorDataLogResults results)
        {
            var sensor  = results.sensor;
            var serial  = sensor.device.serialNumber;
            var indices = dil.count;
            var series  = results.AsLineSeries(dil);

            model.Title    = serial.ToString();
            model.Subtitle = "(" + sensor.type.GetTypeString() + ")";

            xAxis.Minimum   = 0;
            xAxis.Maximum   = indices - 1;
            xAxis.MajorStep = (xAxis.Maximum - xAxis.Minimum) / Math.Min(10, indices);

            yAxis.Minimum   = results.minimum.amount;
            yAxis.Maximum   = results.maximum.amount;
            yAxis.MajorStep = (yAxis.Maximum - yAxis.Minimum) / 5;
            if (yAxis.MajorStep == 0)
            {
                yAxis.MajorStep = 1;
            }

            model.Series.Clear();
            foreach (var s in series)
            {
                var c = sensor.GetColorForSensor(context);
                s.Color = OxyColor.FromUInt32((uint)c.Item1.ToArgb());
                model.Series.Add(s);
            }

            model.InvalidatePlot(true);

            var widthSpec  = View.MeasureSpec.MakeMeasureSpec(800, MeasureSpecMode.Exactly);
            var heightSpec = View.MeasureSpec.MakeMeasureSpec(400, MeasureSpecMode.Exactly);

            plot.Measure(widthSpec, heightSpec);
            plot.Layout(0, 0, plot.MeasuredWidth, plot.MeasuredHeight);
            plot.Draw(canvas);

            if (plot.Model.GetLastPlotException() != null)
            {
                throw plot.Model.GetLastPlotException();
            }
        }