Skip to content

Commit c86b6ed

Browse files
committed
Added implementation of histogram chart supporting both value and bar display modes using ViewModel Properties
1 parent e3dbf5e commit c86b6ed

File tree

2 files changed

+295
-208
lines changed

2 files changed

+295
-208
lines changed

eBirdDataVisualizer/ViewModels/DataGridViewModel.cs

+130-15
Original file line numberDiff line numberDiff line change
@@ -49,84 +49,144 @@ public class DataGridViewModel : ObservableRecipient, INavigationAware
4949
public bool IsJanuaryVisible
5050
{
5151
get => isJanuaryVisible;
52-
set => SetProperty(ref isJanuaryVisible, value);
52+
set
53+
{
54+
SetProperty(ref isJanuaryVisible, value);
55+
OnPropertyChanged(nameof(IsJanuaryVisibleValues));
56+
OnPropertyChanged(nameof(IsJanuaryVisibleBars));
57+
}
5358
}
5459

5560
private bool isFebruaryVisible = true;
5661
public bool IsFebruaryVisible
5762
{
5863
get => isFebruaryVisible;
59-
set => SetProperty(ref isFebruaryVisible, value);
64+
set
65+
{
66+
SetProperty(ref isFebruaryVisible, value);
67+
OnPropertyChanged(nameof(IsFebruaryVisibleValues));
68+
OnPropertyChanged(nameof(IsFebruaryVisibleBars));
69+
}
6070
}
6171

6272
private bool isMarchVisible = true;
6373
public bool IsMarchVisible
6474
{
6575
get => isMarchVisible;
66-
set => SetProperty(ref isMarchVisible, value);
76+
set
77+
{
78+
SetProperty(ref isMarchVisible, value);
79+
OnPropertyChanged(nameof(IsMarchVisibleValues));
80+
OnPropertyChanged(nameof(IsMarchVisibleBars));
81+
}
6782
}
6883

6984
private bool isAprilVisible = true;
7085
public bool IsAprilVisible
7186
{
7287
get => isAprilVisible;
73-
set => SetProperty(ref isAprilVisible, value);
88+
set
89+
{
90+
SetProperty(ref isAprilVisible, value);
91+
OnPropertyChanged(nameof(IsAprilVisibleValues));
92+
OnPropertyChanged(nameof(IsAprilVisibleBars));
93+
}
7494
}
7595

7696
private bool isMayVisible = true;
7797
public bool IsMayVisible
7898
{
7999
get => isMayVisible;
80-
set => SetProperty(ref isMayVisible, value);
100+
set
101+
{
102+
SetProperty(ref isMayVisible, value);
103+
OnPropertyChanged(nameof(IsMayVisibleValues));
104+
OnPropertyChanged(nameof(IsMayVisibleBars));
105+
}
81106
}
82107

83108
private bool isJuneVisible = true;
84109
public bool IsJuneVisible
85110
{
86111
get => isJuneVisible;
87-
set => SetProperty(ref isJuneVisible, value);
112+
set
113+
{
114+
SetProperty(ref isJuneVisible, value);
115+
OnPropertyChanged(nameof(IsJuneVisibleValues));
116+
OnPropertyChanged(nameof(IsJuneVisibleBars));
117+
}
88118
}
89119

90120
private bool isJulyVisible = true;
91121
public bool IsJulyVisible
92122
{
93123
get => isJulyVisible;
94-
set => SetProperty(ref isJulyVisible, value);
124+
set
125+
{
126+
SetProperty(ref isJulyVisible, value);
127+
OnPropertyChanged(nameof(IsJulyVisibleValues));
128+
OnPropertyChanged(nameof(IsJulyVisibleBars));
129+
}
95130
}
96131

97132
private bool isAugustVisible = true;
98133
public bool IsAugustVisible
99134
{
100135
get => isAugustVisible;
101-
set => SetProperty(ref isAugustVisible, value);
136+
set
137+
{
138+
SetProperty(ref isAugustVisible, value);
139+
OnPropertyChanged(nameof(IsAugustVisibleValues));
140+
OnPropertyChanged(nameof(IsAugustVisibleBars));
141+
}
102142
}
103143

104144
private bool isSeptemberVisible = true;
105145
public bool IsSeptemberVisible
106146
{
107147
get => isSeptemberVisible;
108-
set => SetProperty(ref isSeptemberVisible, value);
148+
set
149+
{
150+
SetProperty(ref isSeptemberVisible, value);
151+
OnPropertyChanged(nameof(IsSeptemberVisibleValues));
152+
OnPropertyChanged(nameof(IsSeptemberVisibleBars));
153+
}
109154
}
110155

111156
private bool isOctoberVisible = true;
112157
public bool IsOctoberVisible
113158
{
114159
get => isOctoberVisible;
115-
set => SetProperty(ref isOctoberVisible, value);
160+
set
161+
{
162+
SetProperty(ref isOctoberVisible, value);
163+
OnPropertyChanged(nameof(IsOctoberVisibleValues));
164+
OnPropertyChanged(nameof(IsOctoberVisibleBars));
165+
}
116166
}
117167

118168
private bool isNovemberVisible = true;
119169
public bool IsNovemberVisible
120170
{
121171
get => isNovemberVisible;
122-
set => SetProperty(ref isNovemberVisible, value);
172+
set
173+
{
174+
SetProperty(ref isNovemberVisible, value);
175+
OnPropertyChanged(nameof(IsNovemberVisibleValues));
176+
OnPropertyChanged(nameof(IsNovemberVisibleBars));
177+
}
123178
}
124179

125180
private bool isDecemberVisible = true;
126181
public bool IsDecemberVisible
127182
{
128183
get => isDecemberVisible;
129-
set => SetProperty(ref isDecemberVisible, value);
184+
set
185+
{
186+
SetProperty(ref isDecemberVisible, value);
187+
OnPropertyChanged(nameof(IsDecemberVisibleValues));
188+
OnPropertyChanged(nameof(IsDecemberVisibleBars));
189+
}
130190
}
131191

132192
private bool? areAllMonthsVisible = true;
@@ -136,13 +196,68 @@ public bool? AreAllMonthsVisible
136196
set => SetProperty(ref areAllMonthsVisible, value);
137197
}
138198

139-
private HistogramViewType isDataGridBarChartMode = HistogramViewType.Values;
199+
private HistogramViewType dataGridBarChartMode = HistogramViewType.Values;
140200
public HistogramViewType DataGridBarChartMode
141201
{
142-
get => isDataGridBarChartMode;
143-
set => SetProperty(ref isDataGridBarChartMode, value);
202+
get => dataGridBarChartMode;
203+
set
204+
{
205+
SetProperty(ref dataGridBarChartMode, value);
206+
207+
OnPropertyChanged(nameof(IsJanuaryVisibleValues));
208+
OnPropertyChanged(nameof(IsFebruaryVisibleValues));
209+
OnPropertyChanged(nameof(IsMarchVisibleValues));
210+
OnPropertyChanged(nameof(IsAprilVisibleValues));
211+
OnPropertyChanged(nameof(IsMayVisibleValues));
212+
OnPropertyChanged(nameof(IsJuneVisibleValues));
213+
OnPropertyChanged(nameof(IsJulyVisibleValues));
214+
OnPropertyChanged(nameof(IsAugustVisibleValues));
215+
OnPropertyChanged(nameof(IsSeptemberVisibleValues));
216+
OnPropertyChanged(nameof(IsOctoberVisibleValues));
217+
OnPropertyChanged(nameof(IsNovemberVisibleValues));
218+
OnPropertyChanged(nameof(IsDecemberVisibleValues));
219+
220+
OnPropertyChanged(nameof(IsJanuaryVisibleBars));
221+
OnPropertyChanged(nameof(IsFebruaryVisibleBars));
222+
OnPropertyChanged(nameof(IsMarchVisibleBars));
223+
OnPropertyChanged(nameof(IsAprilVisibleBars));
224+
OnPropertyChanged(nameof(IsMayVisibleBars));
225+
OnPropertyChanged(nameof(IsJuneVisibleBars));
226+
OnPropertyChanged(nameof(IsJulyVisibleBars));
227+
OnPropertyChanged(nameof(IsAugustVisibleBars));
228+
OnPropertyChanged(nameof(IsSeptemberVisibleBars));
229+
OnPropertyChanged(nameof(IsOctoberVisibleBars));
230+
OnPropertyChanged(nameof(IsNovemberVisibleBars));
231+
OnPropertyChanged(nameof(IsDecemberVisibleBars));
232+
}
144233
}
145234

235+
public bool IsJanuaryVisibleValues => IsJanuaryVisible && (DataGridBarChartMode == HistogramViewType.Values);
236+
public bool IsFebruaryVisibleValues => IsFebruaryVisible && (DataGridBarChartMode == HistogramViewType.Values);
237+
public bool IsMarchVisibleValues => IsMarchVisible && (DataGridBarChartMode == HistogramViewType.Values);
238+
public bool IsAprilVisibleValues => IsAprilVisible && (DataGridBarChartMode == HistogramViewType.Values);
239+
public bool IsMayVisibleValues => IsMayVisible && (DataGridBarChartMode == HistogramViewType.Values);
240+
public bool IsJuneVisibleValues => IsJuneVisible && (DataGridBarChartMode == HistogramViewType.Values);
241+
public bool IsJulyVisibleValues => IsJulyVisible && (DataGridBarChartMode == HistogramViewType.Values);
242+
public bool IsAugustVisibleValues => IsAugustVisible && (DataGridBarChartMode == HistogramViewType.Values);
243+
public bool IsSeptemberVisibleValues => IsSeptemberVisible && (DataGridBarChartMode == HistogramViewType.Values);
244+
public bool IsOctoberVisibleValues => IsOctoberVisible && (DataGridBarChartMode == HistogramViewType.Values);
245+
public bool IsNovemberVisibleValues => IsNovemberVisible && (DataGridBarChartMode == HistogramViewType.Values);
246+
public bool IsDecemberVisibleValues => IsDecemberVisible && (DataGridBarChartMode == HistogramViewType.Values);
247+
248+
public bool IsJanuaryVisibleBars => IsJanuaryVisible && (DataGridBarChartMode == HistogramViewType.Bars);
249+
public bool IsFebruaryVisibleBars => IsFebruaryVisible && (DataGridBarChartMode == HistogramViewType.Bars);
250+
public bool IsMarchVisibleBars => IsMarchVisible && (DataGridBarChartMode == HistogramViewType.Bars);
251+
public bool IsAprilVisibleBars => IsAprilVisible && (DataGridBarChartMode == HistogramViewType.Bars);
252+
public bool IsMayVisibleBars => IsMayVisible && (DataGridBarChartMode == HistogramViewType.Bars);
253+
public bool IsJuneVisibleBars => IsJuneVisible && (DataGridBarChartMode == HistogramViewType.Bars);
254+
public bool IsJulyVisibleBars => IsJulyVisible && (DataGridBarChartMode == HistogramViewType.Bars);
255+
public bool IsAugustVisibleBars => IsAugustVisible && (DataGridBarChartMode == HistogramViewType.Bars);
256+
public bool IsSeptemberVisibleBars => IsSeptemberVisible && (DataGridBarChartMode == HistogramViewType.Bars);
257+
public bool IsOctoberVisibleBars => IsOctoberVisible && (DataGridBarChartMode == HistogramViewType.Bars);
258+
public bool IsNovemberVisibleBars => IsNovemberVisible && (DataGridBarChartMode == HistogramViewType.Bars);
259+
public bool IsDecemberVisibleBars => IsDecemberVisible && (DataGridBarChartMode == HistogramViewType.Bars);
260+
146261
private string dataGridModeLabel = "Grid";
147262
public string DataGridModeLabel
148263
{

0 commit comments

Comments
 (0)