Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 19f3ab6

Browse files
SORMAS-Foundation#3354 - Fixed wrong previous epi week calculation
1 parent 451b45e commit 19f3ab6

1 file changed

Lines changed: 20 additions & 11 deletions

File tree

sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/DashboardFilterLayout.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)