private IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForAllStints(IEnumerable <IGrouping <int, LapTelemetryDto> > lapsStintGrouping)
        {
            var    lapsInStints = lapsStintGrouping as IGrouping <int, LapTelemetryDto>[] ?? lapsStintGrouping.ToArray();
            string title        = BuildTitleForAllStints(lapsInStints);
            IColorPaletteProvider colorPaletteProvider = new BasicColorPaletteProvider();
            AxisDefinition        xAxis       = new AxisDefinition(_dataExtractor.XMajorTickSize, _dataExtractor.XMajorTickSize / 4, _dataExtractor.XUnit, "Rear Roll Angle");
            AxisDefinition        yAxis       = new AxisDefinition(_dataExtractor.YMajorTickSize, _dataExtractor.YMajorTickSize / 4, _dataExtractor.YUnit, "Front Roll Angle");
            ScatterPlot           scatterPlot = new ScatterPlot(title, xAxis, yAxis);

            _lateralAccFilter.MinimumG = 0;
            _lateralAccFilter.MaximumG = double.MaxValue;
            foreach (IGrouping <int, LapTelemetryDto> lapsInStint in lapsInStints)
            {
                string            seriesTitle = BuildSeriesTitle(lapsInStint);
                ScatterPlotSeries newSeries   = _dataExtractor.ExtractSeries(lapsInStint, _filters, seriesTitle, colorPaletteProvider.GetNext().ToOxyColor());
                scatterPlot.AddScatterPlotSeries(newSeries);
            }

            scatterPlot.AddAnnotation(new LineAnnotation()
            {
                Slope = 1, Intercept = 0, Color = OxyColors.Red, StrokeThickness = 1, LineStyle = LineStyle.Solid
            });
            ScatterPlotChartViewModel viewModel = new ScatterPlotChartViewModel(_dataPointSelectionSynchronization)
            {
                Title = title
            };

            viewModel.FromModel(scatterPlot);
            return(new[] { viewModel });
        }
        private IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForAllStints(List <IGrouping <int, LapTelemetryDto> > lapsStintGrouping)
        {
            _dataExtractor.ThrottlePositionFilter.Minimum = double.MinValue;
            _dataExtractor.ThrottlePositionFilter.Maximum = double.MaxValue;
            IColorPaletteProvider colorPaletteProvider = new BasicColorPaletteProvider();
            string title = BuildTitleForAllStints(lapsStintGrouping);

            List <ScatterPlotSeries> leftFrontWheelSeries  = new List <ScatterPlotSeries>();
            List <ScatterPlotSeries> rightFrontWheelSeries = new List <ScatterPlotSeries>();
            List <ScatterPlotSeries> leftRearWheelSeries   = new List <ScatterPlotSeries>();
            List <ScatterPlotSeries> rightRearWheelSeries  = new List <ScatterPlotSeries>();

            foreach (IGrouping <int, LapTelemetryDto> lapsGrouped in lapsStintGrouping)
            {
                OxyColor color       = colorPaletteProvider.GetNext().ToOxyColor();
                string   seriesTitle = $"Laps: {string.Join(", ", lapsGrouped.Select(x => x.LapSummary.CustomDisplayName))} - Stint: {lapsGrouped.Key}";
                leftFrontWheelSeries.Add(_dataExtractor.ExtractFrontLeft(lapsGrouped, "FL :" + seriesTitle, color));
                rightFrontWheelSeries.Add(_dataExtractor.ExtractFrontRight(lapsGrouped, "FR :" + seriesTitle, color));
                leftRearWheelSeries.Add(_dataExtractor.ExtractRearLeft(lapsGrouped, "RL :" + seriesTitle, color));
                rightRearWheelSeries.Add(_dataExtractor.ExtractRearRight(lapsGrouped, "RR :" + seriesTitle, color));
            }

            WheelsChartViewModel mainViewModel = new WheelsChartViewModel()
            {
                Title = title,
                FrontLeftChartViewModel  = CreateScatterPlotChartViewModel("Front Left", leftFrontWheelSeries.ToArray()),
                FrontRightChartViewModel = CreateScatterPlotChartViewModel("Front Right", rightFrontWheelSeries.ToArray()),
                RearLeftChartViewModel   = CreateScatterPlotChartViewModel("Rear Left", leftRearWheelSeries.ToArray()),
                RearRightChartViewModel  = CreateScatterPlotChartViewModel("Rear Right", rightRearWheelSeries.ToArray())
            };

            return(new[] { mainViewModel });
        }
Esempio n. 3
0
        private IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForAllStints(ICollection <IGrouping <int, LapTelemetryDto> > lapsStintGrouping)
        {
            string            title       = BuildTitleForAllStints(lapsStintGrouping);
            AxisDefinition    xAxis       = new AxisDefinition(_y1AxisDataExtractor.XMajorTickSize, _y1AxisDataExtractor.XMajorTickSize / 4, _y1AxisDataExtractor.XUnit);
            AxisDefinition    y1Axis      = new AxisDefinition(_y1AxisDataExtractor.YMajorTickSize, _y1AxisDataExtractor.YMajorTickSize / 4, _y1AxisDataExtractor.YUnit);
            AxisDefinition    y2Axis      = new AxisDefinition(_y2AxisDataExtractor.YMajorTickSize, _y2AxisDataExtractor.YMajorTickSize / 4, _y2AxisDataExtractor.YUnit);
            ScatterPlot2YAxis scatterPlot = new ScatterPlot2YAxis(title, xAxis, y1Axis, y2Axis);

            IColorPaletteProvider colorPaletteProvider = new BasicColorPaletteProvider();

            foreach (IGrouping <int, LapTelemetryDto> lapsInStintGroup in lapsStintGrouping)
            {
                string series1Title = $"Laps: {string.Join(", ", lapsInStintGroup.Select(x => x.LapSummary.CustomDisplayName))} - Stint: {lapsInStintGroup.Key}";
                scatterPlot.AddScatterPlotSeries(_y1AxisDataExtractor.ExtractSeries(lapsInStintGroup, _filters, Y1Title + "-" + series1Title, colorPaletteProvider.GetNext().ToOxyColor()));
                scatterPlot.AddScatterPlotY2Series(_y2AxisDataExtractor.ExtractSeries(lapsInStintGroup, _filters, Y2Title + "-" + series1Title, colorPaletteProvider.GetNext().ToOxyColor()));
            }
            OnNewScatterPlot(scatterPlot);
            ScatterPlot2YAxisChartViewModel viewModel = new ScatterPlot2YAxisChartViewModel()
            {
                Title = ChartName
            };

            viewModel.FromModel(scatterPlot);
            return(new[] { viewModel });
        }
Esempio n. 4
0
        private IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForAllStints(IEnumerable <IGrouping <int, LapTelemetryDto> > lapsStintGrouping)
        {
            IColorPaletteProvider            colorPaletteProvider = new BasicColorPaletteProvider();
            List <IAggregatedChartViewModel> charts = new List <IAggregatedChartViewModel>();
            IEnumerable <IGrouping <int, LapTelemetryDto> > lapsInStints = lapsStintGrouping as IGrouping <int, LapTelemetryDto>[] ?? lapsStintGrouping.ToArray();

            string title = BuildTitleForAllStints(lapsInStints);
            double maxG  = 0;

            AxisDefinition xAxis       = new AxisDefinition(_dataExtractor.XMajorTickSize, _dataExtractor.XMajorTickSize / 4, _dataExtractor.XUnit, "Lat Acc");
            AxisDefinition yAxis       = new AxisDefinition(_dataExtractor.YMajorTickSize, _dataExtractor.YMajorTickSize / 4, _dataExtractor.YUnit, "Long Acc");
            ScatterPlot    scatterPlot = new ScatterPlot(title, xAxis, yAxis);

            foreach (IGrouping <int, LapTelemetryDto> lapsInStint in lapsInStints)
            {
                string            seriesTitle = $"Laps: {string.Join(", ", lapsInStint.Select(x => x.LapSummary.CustomDisplayName))} - Stint: {lapsInStint.Key}";
                ScatterPlotSeries newSeries   = _dataExtractor.ExtractSeries(lapsInStint, Enumerable.Empty <ITelemetryFilter>().ToList(), seriesTitle, colorPaletteProvider.GetNext().ToOxyColor());
                scatterPlot.AddScatterPlotSeries(newSeries);
                maxG = Math.Max(maxG, newSeries.DataPoints.Max(x => Math.Abs(x.Y)));
            }

            SetAxisRanges(maxG, xAxis, yAxis);
            ScatterPlotChartViewModel viewModel = new ScatterPlotChartViewModel(_dataPointSelectionSynchronization)
            {
                Title = "Lateral / Longitudinal G"
            };

            viewModel.FromModel(scatterPlot);
            charts.Add(viewModel);
            return(charts);
        }
        private ScatterPlot CreateScatterPlotAllGear(IGrouping <int, LapTelemetryDto>[] lapsInStints, int maxGear)
        {
            IColorPaletteProvider colorPaletteProvider = new BasicColorPaletteProvider();
            AxisDefinition        xAxis       = new AxisDefinition(_dataExtractor.XMajorTickSize, _dataExtractor.XMajorTickSize / 5, _dataExtractor.XUnit);
            AxisDefinition        yAxis       = new AxisDefinition(_dataExtractor.YMajorTickSize, _dataExtractor.YMajorTickSize / 4, _dataExtractor.YUnit);
            ScatterPlot           scatterPlot = new ScatterPlot("All Gears", xAxis, yAxis);

            foreach (IGrouping <int, LapTelemetryDto> stint in lapsInStints)
            {
                string seriesTitle = $"Laps: {string.Join(", ", stint.Select(x => x.LapSummary.CustomDisplayName))} - Stint: {stint.Key}";
                scatterPlot.AddScatterPlotSeries(_dataExtractor.ExtractSeriesForAllGears(stint, seriesTitle, colorPaletteProvider.GetNext().ToOxyColor()));
            }

            return(scatterPlot);
        }
Esempio n. 6
0
        private IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForAllStints(IEnumerable <IGrouping <int, LapTelemetryDto> > lapsStintGrouping)
        {
            IColorPaletteProvider colorPaletteProvider = new BasicColorPaletteProvider();
            var    lapsInStints = lapsStintGrouping as IGrouping <int, LapTelemetryDto>[] ?? lapsStintGrouping.ToArray();
            string title        = BuildTitleForAllStints(lapsInStints);

            List <ScatterPlotSeries> allWheelsSeries       = new List <ScatterPlotSeries>();
            List <ScatterPlotSeries> leftFrontWheelSeries  = new List <ScatterPlotSeries>();
            List <ScatterPlotSeries> rightFrontWheelSeries = new List <ScatterPlotSeries>();
            List <ScatterPlotSeries> leftRearWheelSeries   = new List <ScatterPlotSeries>();
            List <ScatterPlotSeries> rightRearWheelSeries  = new List <ScatterPlotSeries>();

            foreach (IGrouping <int, LapTelemetryDto> lapsGrouped in lapsInStints)
            {
                OxyColor color       = colorPaletteProvider.GetNext().ToOxyColor();
                string   seriesTitle = $"Laps: {string.Join(", ", lapsGrouped.Select(x => x.LapSummary.CustomDisplayName))} - Stint: {lapsGrouped.Key}";
                allWheelsSeries.Add(_dataExtractor.ExtractMultiPointSeries(lapsGrouped, new ITelemetryFilter[0], "All" + seriesTitle, color));
                leftFrontWheelSeries.Add(_dataExtractor.ExtractFrontLeft(lapsGrouped, "FL :" + seriesTitle, color));
                rightFrontWheelSeries.Add(_dataExtractor.ExtractFrontRight(lapsGrouped, "FR :" + seriesTitle, color));
                leftRearWheelSeries.Add(_dataExtractor.ExtractRearLeft(lapsGrouped, "RL :" + seriesTitle, color));
                rightRearWheelSeries.Add(_dataExtractor.ExtractRearRight(lapsGrouped, "RR :" + seriesTitle, color));
            }

            SplitAggregatedChartViewModel mainViewModel = new SplitAggregatedChartViewModel()
            {
                Title           = title,
                TopViewModel    = CreateScatterPlotChartViewModel("All Wheels", allWheelsSeries.ToArray()),
                BottomViewModel = new WheelsChartViewModel()
                {
                    FrontLeftChartViewModel  = CreateScatterPlotChartViewModel("Front Left", leftFrontWheelSeries.ToArray()),
                    FrontRightChartViewModel = CreateScatterPlotChartViewModel("Front Right", rightFrontWheelSeries.ToArray()),
                    RearLeftChartViewModel   = CreateScatterPlotChartViewModel("Rear Left", leftRearWheelSeries.ToArray()),
                    RearRightChartViewModel  = CreateScatterPlotChartViewModel("Rear Right", rightRearWheelSeries.ToArray())
                }
            };

            return(new[] { mainViewModel });
        }
        private IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForAllStints(ICollection <IGrouping <int, LapTelemetryDto> > lapsStintGrouping)
        {
            string         title       = BuildTitleForAllStints(lapsStintGrouping);
            AxisDefinition xAxis       = new AxisDefinition(_dataExtractor.XMajorTickSize, _dataExtractor.XMajorTickSize / 4, _dataExtractor.XUnit);
            AxisDefinition yAxis       = new AxisDefinition(_dataExtractor.YMajorTickSize, _dataExtractor.YMajorTickSize / 4, _dataExtractor.YUnit);
            ScatterPlot    scatterPlot = new ScatterPlot(title, xAxis, yAxis);

            IColorPaletteProvider colorPaletteProvider = new BasicColorPaletteProvider();

            foreach (IGrouping <int, LapTelemetryDto> lapsInStintGroup in lapsStintGrouping)
            {
                string seriesTitle = $"Laps: {string.Join(", ", lapsInStintGroup.Select(x => x.LapSummary.CustomDisplayName))} - Stint: {lapsInStintGroup.Key}";
                scatterPlot.AddScatterPlotSeries(_dataExtractor.ExtractSeries(lapsInStintGroup, Enumerable.Empty <ITelemetryFilter>().ToList(), seriesTitle, colorPaletteProvider.GetNext().ToOxyColor()));
            }

            ScatterPlotChartViewModel viewModel = new ScatterPlotChartViewModel(_dataPointSelectionSynchronization)
            {
                Title = ChartName
            };

            viewModel.FromModel(scatterPlot);
            return(new[] { viewModel });
        }