Beispiel #1
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 });
        }
Beispiel #2
0
        protected IReadOnlyCollection <IAggregatedChartViewModel> CreateChartForEachStint(IEnumerable <IGrouping <int, LapTelemetryDto> > lapsStintGrouping, AggregatedChartSettingsDto aggregatedChartSettings)
        {
            List <IAggregatedChartViewModel> charts = new List <IAggregatedChartViewModel>();

            foreach (IGrouping <int, LapTelemetryDto> lapsInStintGroup in lapsStintGrouping)
            {
                string title = BuildSeriesTitle(lapsInStintGroup, aggregatedChartSettings);

                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);

                scatterPlot.AddScatterPlotSeries(_y1AxisDataExtractor.ExtractSeries(lapsInStintGroup, _filters, Y1Title + "-" + title, OxyColors.Green));
                scatterPlot.AddScatterPlotY2Series(_y2AxisDataExtractor.ExtractSeries(lapsInStintGroup, _filters, Y2Title + "-" + title, OxyColors.Red));
                OnNewScatterPlot(scatterPlot);
                ScatterPlot2YAxisChartViewModel viewModel = new ScatterPlot2YAxisChartViewModel()
                {
                    Title = ChartName
                };
                viewModel.FromModel(scatterPlot);
                charts.Add(viewModel);
            }

            return(charts);
        }
        protected override void OnNewScatterPlot(ScatterPlot2YAxis scatterPlot)
        {
            double maximumPower  = scatterPlot.ScatterPlotSeries.SelectMany(x => x.DataPoints).Max(x => x.Y);
            double maximumTorque = scatterPlot.ScatterPlotY2Series.SelectMany(x => x.DataPoints).Max(x => x.Y);
            double maximumRpm    = scatterPlot.ScatterPlotY2Series.SelectMany(x => x.DataPoints).Max(x => x.X) * 1.1;
            double maximum       = Math.Max(maximumTorque, maximumPower) * 1.1;

            scatterPlot.YAxis.SetCustomRange(0, maximum);
            scatterPlot.YAxis.Title = Y1Title;
            scatterPlot.Y2Axis.SetCustomRange(0, maximum);
            scatterPlot.Y2Axis.Title = Y2Title;
            scatterPlot.XAxis.SetCustomRange(0, maximumRpm);

            base.OnNewScatterPlot(scatterPlot);
        }
Beispiel #4
0
 protected virtual void OnNewScatterPlot(ScatterPlot2YAxis scatterPlot)
 {
 }