@@ -87,6 +87,8 @@ public class DashboardFilterLayout extends HorizontalLayout {
8787 private Button resetButton ;
8888 private Button applyButton ;
8989
90+ private DateFilterType currentDateFilterType ;
91+
9092 private HorizontalLayout customDateFilterLayout ;
9193
9294 private Runnable dateFilterChangeCallback ;
@@ -209,6 +211,7 @@ private void createDateFilters() {
209211 CssStyles .style (btnPeriodBefore , CssStyles .BUTTON_FILTER_DARK );
210212 CssStyles .removeStyles (btnPeriodBefore , CssStyles .BUTTON_FILTER_LIGHT );
211213 activeComparisonButton = btnPeriodBefore ;
214+ currentDateFilterType = DateFilterType .THIS_WEEK ;
212215 setDateFilter (DateHelper .getStartOfWeek (new Date ()), new Date ());
213216 updateComparisonButtons (DateFilterType .THIS_WEEK , DateHelper .getStartOfWeek (new Date ()), new Date (), false );
214217 btnCurrentPeriod .setCaption (btnThisWeek .getCaption ());
@@ -227,6 +230,7 @@ private HorizontalLayout createDateFilterButtonsLayout() {
227230 String .format (I18nProperties .getCaption (Captions .dashboardToday ), DateFormatHelper .formatDate (new Date ())),
228231 dateFilterButtons );
229232 btnToday .addClickListener (e -> {
233+ currentDateFilterType = DateFilterType .TODAY ;
230234 Date now = new Date ();
231235 Date from = DateHelper .getStartOfDay (now );
232236 Date to = now ;
@@ -241,6 +245,7 @@ private HorizontalLayout createDateFilterButtonsLayout() {
241245 .format (I18nProperties .getCaption (Captions .dashboardYesterday ), DateFormatHelper .formatDate (DateHelper .subtractDays (new Date (), 1 ))),
242246 dateFilterButtons );
243247 btnYesterday .addClickListener (e -> {
248+ currentDateFilterType = DateFilterType .YESTERDAY ;
244249 Date now = new Date ();
245250 Date from = DateHelper .getStartOfDay (DateHelper .subtractDays (now , 1 ));
246251 Date to = DateHelper .getEndOfDay (DateHelper .subtractDays (now , 1 ));
@@ -256,6 +261,7 @@ private HorizontalLayout createDateFilterButtonsLayout() {
256261 DateHelper .getEpiWeek (new Date ()).toString (new Date (), I18nProperties .getUserLanguage ())),
257262 dateFilterButtons );
258263 btnThisWeek .addClickListener (e -> {
264+ currentDateFilterType = DateFilterType .THIS_WEEK ;
259265 Date now = new Date ();
260266 Date from = DateHelper .getStartOfWeek (now );
261267 Date to = now ;
@@ -271,6 +277,7 @@ private HorizontalLayout createDateFilterButtonsLayout() {
271277 DateHelper .getPreviousEpiWeek (new Date ()).toString (I18nProperties .getUserLanguage ())),
272278 dateFilterButtons );
273279 btnLastWeek .addClickListener (e -> {
280+ currentDateFilterType = DateFilterType .LAST_WEEK ;
274281 Date now = new Date ();
275282 Date from = DateHelper .getStartOfWeek (DateHelper .subtractWeeks (now , 1 ));
276283 Date to = DateHelper .getEndOfWeek (DateHelper .subtractWeeks (now , 1 ));
@@ -286,6 +293,7 @@ private HorizontalLayout createDateFilterButtonsLayout() {
286293 DateFormatHelper .buildPeriodString (DateHelper .getStartOfYear (new Date ()), new Date ())),
287294 dateFilterButtons );
288295 btnThisYear .addClickListener (e -> {
296+ currentDateFilterType = DateFilterType .THIS_YEAR ;
289297 Date now = new Date ();
290298 Date from = DateHelper .getStartOfYear (now );
291299 Date to = now ;
@@ -508,22 +516,23 @@ private void setDateFilter(Date from, Date to) {
508516
509517 private void updateComparisonDates () {
510518 if (activeComparisonButton == btnPeriodBefore ) {
519+ int activePeriodLength = currentDateFilterType == DateFilterType .THIS_WEEK
520+ ? 7
521+ : DateHelper .getDaysBetween (dashboardDataProvider .getFromDate (), dashboardDataProvider .getToDate ());
522+ dashboardDataProvider .setPreviousFromDate (DateHelper .subtractDays (dashboardDataProvider .getFromDate (), activePeriodLength ));
523+ dashboardDataProvider .setPreviousToDate (DateHelper .subtractDays (dashboardDataProvider .getToDate (), activePeriodLength ));
524+ } else if (currentDateFilterType == DateFilterType .THIS_WEEK || currentDateFilterType == DateFilterType .LAST_WEEK ) {
525+ Date previousEpiWeekStart =
526+ DateHelper .getEpiWeekStart (DateHelper .getEpiWeekYearBefore (DateHelper .getEpiWeek (dashboardDataProvider .getFromDate ())));
527+ dashboardDataProvider .setPreviousFromDate (previousEpiWeekStart );
511528 int activePeriodLength = DateHelper .getDaysBetween (dashboardDataProvider .getFromDate (), dashboardDataProvider .getToDate ());
512- setDateComparisonFilter (
513- DateHelper .subtractDays (dashboardDataProvider .getFromDate (), activePeriodLength ),
514- DateHelper .subtractDays (dashboardDataProvider .getToDate (), activePeriodLength ));
529+ dashboardDataProvider .setPreviousToDate (DateHelper .addDays (previousEpiWeekStart , activePeriodLength - 1 ));
515530 } else {
516- setDateComparisonFilter (
517- DateHelper .subtractYears (dashboardDataProvider .getFromDate (), 1 ),
518- DateHelper .subtractYears (dashboardDataProvider .getToDate (), 1 ));
531+ dashboardDataProvider .setPreviousFromDate (DateHelper .subtractYears (dashboardDataProvider .getFromDate (), 1 ));
532+ dashboardDataProvider .setPreviousToDate (DateHelper .subtractYears (dashboardDataProvider .getToDate (), 1 ));
519533 }
520534 }
521535
522- private void setDateComparisonFilter (Date from , Date to ) {
523- dashboardDataProvider .setPreviousFromDate (from );
524- dashboardDataProvider .setPreviousToDate (to );
525- }
526-
527536 public void setInfoLabelText (String text ) {
528537 infoLabel .setDescription (text );
529538 }
0 commit comments