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
AnalyticsViewModel.cs
1using CommunityToolkit.Mvvm.ComponentModel;
2using CommunityToolkit.Mvvm.Input;
5
7{
11 public partial class AnalyticsViewModel : ObservableObject, INavigationAware
12 {
16 public IEnumerable<IAnalyticsWidget> AvailableAnalyticsWidgets { get; }
17
22 public IEnumerable<IAnalyticsWidget> NormalSizedAnalyticsWidgets => AvailableAnalyticsWidgets.Where(c => !c.IsMaximized);
23
27 public IAnalyticsWidget MaximizedAnalyticsWidget => AvailableAnalyticsWidgets.Where(c => c.IsMaximized).FirstOrDefault();
28
33
38 public AnalyticsViewModel(IEnumerable<IAnalyticsWidget> availableAnalyticsWidgets)
39 {
40 AvailableAnalyticsWidgets = availableAnalyticsWidgets;
42 {
43 widget.IsMaximized = false;
44 widget.PropertyChanged += (sender, e) =>
45 {
46 if (e.PropertyName == nameof(IAnalyticsWidget.IsMaximized))
47 {
48 OnPropertyChanged(nameof(NormalSizedAnalyticsWidgets));
49 OnPropertyChanged(nameof(IsMaximizedAnalyticsWidgetAvailable));
50 OnPropertyChanged(nameof(MaximizedAnalyticsWidget));
51 }
52 };
53 }
54 }
55
56 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
57
58 [ICommand]
59 public void RestoreLayout()
60 {
61 foreach (IAnalyticsWidget analyticsWidget in AvailableAnalyticsWidgets)
62 {
63 analyticsWidget.IsMaximized = false;
64 }
65 }
66
67 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
68
70 public void OnNavigatedFrom()
71 {
72 }
73
75 public void OnNavigatedTo(object parameter)
76 {
77 foreach (IAnalyticsWidget analyticsWidget in AvailableAnalyticsWidgets)
78 {
79 analyticsWidget.Refresh();
80 }
81 }
82 }
83}
IAnalyticsWidget MaximizedAnalyticsWidget
Return the first IAnalyticsWidget with the IAnalyticsWidget.IsMaximized flag set.
AnalyticsViewModel(IEnumerable< IAnalyticsWidget > availableAnalyticsWidgets)
Constructor of the analytics view model.
IEnumerable< IAnalyticsWidget > NormalSizedAnalyticsWidgets
List of normal sized (not maximized) IAnalyticsWidget objects.
void OnNavigatedFrom()
OnNavigatedFrom method to handle navigation away from this object.
bool IsMaximizedAnalyticsWidgetAvailable
True, when the MaximizedAnalyticsUserControl isn't null
void OnNavigatedTo(object parameter)
OnNavigatedTo method to handle navigation to this object.
IEnumerable< IAnalyticsWidget > AvailableAnalyticsWidgets
List of available IAnalyticsWidget objects.
Interface for objects that need to handle navigation events.
Interface used for any user control that displays analytics data.
bool IsMaximized
True if the analytics user control is displayed maximized (only one at a time should have this flag s...
void Refresh()
Refresh the data displayed in the user control.