protected void createAndAddChartArea(Chart chart, RaceResultViewProvider results) { if (chart.ChartAreas.Count() == 0) { ChartArea area = new ChartArea(); chart.ChartAreas.Add(area); area.BorderColor = Color.FromArgb(0x3f, 0x43, 0x4b); area.BorderDashStyle = ChartDashStyle.Solid; area.BorderWidth = 1; //area.AlignmentOrientation = AreaAlignmentOrientations.Horizontal; //area.Position.X = 5; //area.Position.Y = 5; //area.Position.Width = 80; //area.Position.Height = 90; //ChartArea areaBB = new ChartArea(); //chart.ChartAreas.Add(areaBB); //areaBB.BorderColor = Color.FromArgb(0x3f, 0x43, 0x4b); //areaBB.BorderDashStyle = ChartDashStyle.Solid; //areaBB.BorderWidth = 1; //areaBB.AlignmentOrientation = AreaAlignmentOrientations.Horizontal; //areaBB.AlignmentStyle = AreaAlignmentStyles.AxesView; //areaBB.Position.X = 85; //areaBB.Position.Y = 5; //areaBB.Position.Width = 20; //areaBB.Position.Height = 90; //areaBB.AxisY.LabelStyle.Enabled = false; chart.Customize += Chart_Customize; } configureAxisX(chart.ChartAreas[0].AxisX, results); configureAxisY(chart.ChartAreas[0].AxisY, results); //configureAxisY(chart.ChartAreas[1].AxisY, results); }
public ViewFactory() { _prototypes = new Dictionary <string, ViewProvider>(); _prototypes["Startlist_1stRun_StartnumberAscending"] = new FirstRunStartListViewProvider(); _prototypes["Startlist_1stRun_Points_0"] = new DSVFirstRunStartListViewProvider(0); _prototypes["Startlist_1stRun_Points_15"] = new DSVFirstRunStartListViewProvider(15); _prototypes["Startlist_1stRun_Points_30"] = new DSVFirstRunStartListViewProvider(30); _prototypes["Startlist_2nd_StartnumberAscending"] = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Ascending); //_prototypes["Startlist_2nd_StartnumberAscending"] = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Ascending); _prototypes["Startlist_2nd_StartnumberDescending"] = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Descending); //_prototypes["Startlist_2nd_StartnumberDescending"] = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Descending); _prototypes["Startlist_2nd_PreviousRun_0_OnlyWithResults"] = new BasedOnResultsFirstRunStartListViewProvider(0, false); _prototypes["Startlist_2nd_PreviousRun_0_AlsoWithoutResults"] = new BasedOnResultsFirstRunStartListViewProvider(0, true); _prototypes["Startlist_2nd_PreviousRun_15_OnlyWithResults"] = new BasedOnResultsFirstRunStartListViewProvider(15, false); _prototypes["Startlist_2nd_PreviousRun_15_AlsoWithoutResults"] = new BasedOnResultsFirstRunStartListViewProvider(15, true); _prototypes["Startlist_2nd_PreviousRun_30_OnlyWithResults"] = new BasedOnResultsFirstRunStartListViewProvider(30, false); _prototypes["Startlist_2nd_PreviousRun_30_AlsoWithoutResults"] = new BasedOnResultsFirstRunStartListViewProvider(30, true); _prototypes["Startlist_2nd_PreviousRun_all_OnlyWithResults"] = new BasedOnResultsFirstRunStartListViewProvider(int.MaxValue, false); _prototypes["Startlist_2nd_PreviousRun_all_AlsoWithoutResults"] = new BasedOnResultsFirstRunStartListViewProvider(int.MaxValue, true); _prototypes["RaceResult_BestOfTwo"] = new RaceResultViewProvider(RaceResultViewProvider.TimeCombination.BestRun); _prototypes["RaceResult_Sum"] = new RaceResultViewProvider(RaceResultViewProvider.TimeCombination.Sum); _prototypes["RaceResult_SumBest2"] = new RaceResultViewProvider(RaceResultViewProvider.TimeCombination.SumBest2); _prototypes["RaceResult_SumDSVPointsSchool"] = new DSVSchoolRaceResultViewProvider(); _prototypes["RaceRunResult"] = new RaceRunResultViewProvider(); }
public void configureAxisX(Axis axis, RaceResultViewProvider results) { axis.Minimum = 0.5; // Double.NaN; axis.CustomLabels.Clear(); var lr = results.GetView() as System.Windows.Data.ListCollectionView; if (lr.Groups != null) { int x1 = 1; int x2Last = 1; int x2 = 1; string name2 = null, name2Last = null; foreach (var group in lr.Groups) { if (group is System.Windows.Data.CollectionViewGroup cvGroup) { var lblGroup = axis.CustomLabels.Add(x1 - 0.5, x1 + 0.5, workaroundGermanUmlaut(cvGroup.GetName())); lblGroup.GridTicks = GridTickTypes.None; // Second Level if possible if (cvGroup.Name is ParticipantClass @class) { name2 = @class.Group.Name; if (name2Last == null) // init set to same name { name2Last = name2; } if (!string.Equals(name2, name2Last)) { var lblName2 = axis.CustomLabels.Add(x2Last - 0.5, (x2 - 1) + 0.5, workaroundGermanUmlaut(name2Last), 1, LabelMarkStyle.LineSideMark); name2Last = name2; x2Last = x2; } } } x1++; x2++; } // Final 2nd group if (name2 != null && name2Last != null) { var lblName2 = axis.CustomLabels.Add(x2Last - 0.5, (x2 - 1) + 0.5, workaroundGermanUmlaut(name2Last), 1, LabelMarkStyle.LineSideMark); } axis.Maximum = x2 - 0.5; } // Enable X axis labels automatic fitting axis.IsLabelAutoFit = true; axis.LabelAutoFitStyle = LabelAutoFitStyles.DecreaseFont | LabelAutoFitStyles.IncreaseFont | LabelAutoFitStyles.WordWrap; axis.MajorGrid.Enabled = false; axis.MinorGrid.Enabled = false; }
public void SetupChart(Chart chart, RaceResultViewProvider results) { createAndAddChartArea(chart, results); // Setup Data Series chart.Series.Clear(); createDataSerieses(results, chart); //chart.SaveImage("", ChartImageFormat.) }
public DSVRaceCalculation(Race race, RaceResultViewProvider vpSource, char sex) { _race = race; _vpSource = vpSource; _sex = sex; _valueF = race.RaceConfiguration.ValueF; _valueA = race.RaceConfiguration.ValueA; _minPenalty = race.RaceConfiguration.MinimumPenalty; _valueCutOff = race.RaceConfiguration.ValueCutOff; _penalty = _penaltyA = _penaltyB = _penaltyC = 0.0; _appliedPenalty = 0.0; _bestTime = null; }
public void RenderToWmf(Stream wmfStream, RaceResultViewProvider results) { SetupChart(_chart, results); //_chart.SaveImage(path, ChartImageFormat.Png); MemoryStream emfStream = new MemoryStream(); _chart.SaveImage(emfStream, ChartImageFormat.Emf); emfStream.Seek(0, SeekOrigin.Begin); ConvertToWMF(emfStream, wmfStream); //_chart.SaveImage(wmfStream, System.Drawing.Imaging.ImageFormat.Wmf); //wmfStream.Seek(0, SeekOrigin.Begin); //_chart.SaveImage(@"c:\trash\test.wmf", System.Drawing.Imaging.ImageFormat.Wmf); }
public void ConfigureRace(Race race) { for (int i = 0; i < race.GetMaxRun(); i++) { RaceRun rr = race.GetRun(i); StartListViewProvider slVP = GetStartlistViewProvider(rr); rr.SetStartListProvider(slVP); RaceRunResultViewProvider rrVP = GetRaceRunResultViewProvider(rr); rr.SetResultViewProvider(rrVP); } RaceResultViewProvider raceVP = GetRaceResultViewProvider(race); race.SetResultViewProvider(raceVP); }
string getResultList(Race race, string grouping) { string output = ""; Application.Current.Dispatcher.Invoke(() => { ViewConfigurator viewConfigurator = new ViewConfigurator(race); RaceResultViewProvider vp = viewConfigurator.GetRaceResultViewProvider(race); if (grouping != null) { vp.ChangeGrouping(grouping); } output = JsonConversion.ConvertRaceResults(vp.GetView(), (uint)race.GetMaxRun()); }); return(output); }
public RaceResultViewProvider GetRaceResultViewProvider(Race race, string context = null) { ViewFactory factory = Singleton <ViewFactory> .Instance; RaceResultViewProvider rVP; rVP = factory.Create <RaceResultViewProvider>(_config.RaceResultView); if (rVP == null) { rVP = new RaceResultViewProvider(RaceResultViewProvider.TimeCombination.BestRun); } rVP.SetDefaultGrouping(_config.DefaultGrouping); rVP.Init(race, _dataModel); return(rVP); }
private void initialize() { RaceResultViewProvider vp = _thisRace.GetResultViewProvider(); UiUtilities.FillGrouping(cmbTotalResultGrouping, vp.ActiveGrouping); cmbTotalResult.Items.Clear(); cmbTotalResult.Items.Add(new CBItem { Text = "Teilnehmer", Value = new CBObjectTotalResults { Type = "participants" } }); FillCmbTotalsResultsWithRaceSpecifics(cmbTotalResult); cmbTotalResult.Items.Add(new CBItem { Text = "Rennergebnis", Value = new CBObjectTotalResults { Type = "raceresults" } }); cmbTotalResult.SelectedIndex = cmbTotalResult.Items.Count - 1; }
protected void createDataSerieses(RaceResultViewProvider results, Chart chart) { // Populate series data with random data var lr = results.GetView() as System.Windows.Data.ListCollectionView; if (lr.Groups != null) { int x = 1; foreach (var group in lr.Groups) { if (group is System.Windows.Data.CollectionViewGroup cvGroup) { System.Windows.Forms.DataVisualization.Charting.Series ds = new Series(cvGroup.GetName()); if (cvGroup.Items.Count > 0) { formatDataSeries(ds); fillDataSeries(ds, cvGroup.Items, x); } x++; ds.ChartArea = chart.ChartAreas[0].Name; chart.Series.Add(ds); ds.Enabled = true; //Series dsBB = new Series("BoxPlot" + cvGroup.GetName()); //dsBB.ChartType = SeriesChartType.BoxPlot; //dsBB["BoxPlotSeries"] = ds.Name; //dsBB["BoxPlotWhiskerPercentile"] = "5"; //dsBB["BoxPlotPercentile"] = "30"; //dsBB["BoxPlotShowAverage"] = "true"; //dsBB["BoxPlotShowMedian"] = "true"; //dsBB["BoxPlotShowUnusualValues"] = "true"; ////dsBB["MaxPixelPointWidth"] = "15"; //chart.Series.Add(dsBB); } } } }
public void RenderToImage(Stream imgStream, RaceResultViewProvider results) { SetupChart(_chart, results); _chart.SaveImage(imgStream, ChartImageFormat.Png); }
public void configureAxisY(Axis axis, RaceResultViewProvider results) { double timeMax = double.NaN; double timeMin = double.NaN; foreach (var v in results.GetView()) { if (v is RaceResultItem result) { if (result.TotalTime != null) { double timeValue = ((TimeSpan)result.TotalTime).TotalMilliseconds / 1000.0; if (double.IsNaN(timeMax) || timeMax < timeValue) { timeMax = timeValue; } if (double.IsNaN(timeMin) || timeMin > timeValue) { timeMin = timeValue; } } } } if (double.IsNaN(timeMin)) { timeMin = 0; } if (double.IsNaN(timeMax)) { timeMax = 0; } double yInt, yMinInt; yInt = yMinInt = 0; getNiceRoundNumbers(ref timeMin, ref timeMax, ref yInt, ref yMinInt); axis.Minimum = timeMin; axis.Maximum = timeMax; axis.Interval = yInt; axis.MinorTickMark.Interval = yMinInt; axis.MinorTickMark.TickMarkStyle = TickMarkStyle.OutsideArea; axis.MinorTickMark.Enabled = true; axis.MinorTickMark.Size = axis.MajorTickMark.Size / 2; axis.IsMarginVisible = false; axis.IsStartedFromZero = false; axis.Title = "Zeit [s]"; axis.TitleFont = new System.Drawing.Font("Helvetica", 10); axis.LabelAutoFitStyle = LabelAutoFitStyles.None; //axis.LabelStyle.Format = "#.##"; //axis.RoundAxisValues(); //axis.IntervalType = DateTimeIntervalType.= IntervalAutoMode. axis.MajorGrid.LineDashStyle = ChartDashStyle.Solid; axis.MajorGrid.LineColor = System.Drawing.Color.Gray; axis.MajorGrid.Interval = yInt; axis.MinorGrid.Enabled = true; axis.MinorGrid.LineDashStyle = ChartDashStyle.Dot; axis.MinorGrid.LineColor = System.Drawing.Color.LightGray; axis.MinorGrid.Interval = yMinInt; // Enable scale breaks axis.ScaleBreakStyle.Enabled = false; //axis.ScaleBreakStyle.BreakLineStyle = BreakLineStyle.Wave; //axis.ScaleBreakStyle.Spacing = 2; //axis.ScaleBreakStyle.LineWidth = 2; //axis.ScaleBreakStyle.LineColor = System.Drawing.Color.Red; //axis.ScaleBreakStyle.CollapsibleSpaceThreshold = 10; //// If all data points are significantly far from zero, the Chart will calculate the scale minimum value //axis.ScaleBreakStyle.StartFromZero = StartFromZero.Yes; }
public void Display(RaceResultViewProvider results) { ResultCharts helper = new ResultCharts(); helper.SetupChart(msChart.GetChart(), results); }