Vereinsmeisterschaften  22aa7800eae54b428d40e835886cefe1fdefdfdf
This is a software that can be used to manage the internal competition of the swimming club Illertissen called "Vereinsmeisterschaften".
Loading...
Searching...
No Matches
AnalyticsWidgetStartsPerStyle.xaml.cs
2using System.Windows.Media;
3using LiveChartsCore;
4using LiveChartsCore.Measure;
5using LiveChartsCore.SkiaSharpView;
6using LiveChartsCore.SkiaSharpView.Painting;
7using LiveChartsCore.Themes;
8using SkiaSharp;
12
14{
18 public partial class AnalyticsWidgetStartsPerStyle : AnalyticsWidgetBase
19 {
21
22 public AnalyticsWidgetStartsPerStyle(AnalyticsModuleStartsPerStyle analyticsModule) : base(analyticsModule)
23 {
24 InitializeComponent();
25 }
26
30 private static ResourceDictionary swimmingStyleResourceDict = new ResourceDictionary
31 {
32 Source = new Uri("pack://application:,,,/Vereinsmeisterschaften;component/Styles/SwimmingStyleResources.xaml")
33 };
34
35 public override Geometry IconGeometry => (Geometry)swimmingStyleResourceDict["Geometry_Breaststroke"];
36
37 public override void Refresh()
38 {
39 OnPropertyChanged(nameof(StartsPerStyleSeries));
40 base.Refresh();
41 }
42
43 public ISeries[] StartsPerStyleSeries
44 {
45 get
46 {
47 if (_analyticsModule == null) return null;
48
49 Dictionary<SwimmingStyles, double> percentageStartsPerStyle = _analyticsModule.PercentageStartsPerStyle;
50 Dictionary<SwimmingStyles, int> numberStartsPerStyle = _analyticsModule.NumberStartsPerStyle;
51
52 List<ISeries> seriesList = new List<ISeries>();
53 foreach (SwimmingStyles style in percentageStartsPerStyle.Keys)
54 {
55 var series = new PieSeries<double>
56 {
57 Values = new[] { percentageStartsPerStyle[style] },
58 Name = $"{EnumCoreLocalizedStringHelper.Convert(style)} ({numberStartsPerStyle[style]})",
59 DataLabelsPaint = new SolidColorPaint(SKColors.Black),
60 DataLabelsSize = 14,
61 DataLabelsPosition = PolarLabelsPosition.Middle,
62 DataLabelsFormatter = point => point.Coordinate.PrimaryValue == 0 ? "" : point.Coordinate.PrimaryValue.ToString("N1") + "%",
63 Pushout = 3,
64 HoverPushout = 10,
65 Fill = new SolidColorPaint(ColorPalletes.MaterialDesign500[(int)style % ColorPalletes.MaterialDesign500.Length].AsSKColor())
66 };
67 seriesList.Add(series);
68 }
69
70 return seriesList.ToArray();
71 }
72 }
73 }
74}
Analytics module to calculate the number of starts per style.
Dictionary< SwimmingStyles, int > NumberStartsPerStyle
Number of valid starts per style.
Dictionary< SwimmingStyles, double > PercentageStartsPerStyle
Percentage of valid starts per style.
IAnalyticsModule AnalyticsModule
Analytics module used by this user control.
AnalyticsWidgetBase(IAnalyticsModule analyticsModule)
Constructor of the AnalyticsWidgetBase
static ResourceDictionary swimmingStyleResourceDict
Static reference to a resource dictionary containing swimming style resources.
SwimmingStyles
Available swimming styles.