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

Commit a6ba013

Browse files
Merge pull request SORMAS-Foundation#2953 from hzi-braunschweig/2877-filter-buttons
SORMAS-Foundation#2877 remove redundant Apply Date Filters buttons
2 parents 73ee640 + 850208d commit a6ba013

8 files changed

Lines changed: 185 additions & 223 deletions

File tree

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseFilterForm.java

Lines changed: 40 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -576,10 +576,7 @@ protected void applyDependenciesOnNewValue(CaseCriteria criteria) {
576576

577577
private HorizontalLayout buildWeekAndDateFilter() {
578578

579-
Button applyButton = ButtonHelper.createButton(Captions.actionApplyDateFilter, null);
580-
581579
EpiWeekAndDateFilterComponent<NewCaseDateType> weekAndDateFilter = new EpiWeekAndDateFilterComponent<>(
582-
applyButton,
583580
false,
584581
false,
585582
I18nProperties.getString(Strings.infoCaseDate),
@@ -592,56 +589,56 @@ private HorizontalLayout buildWeekAndDateFilter() {
592589
weekAndDateFilter.getDateFromFilter().setInputPrompt(I18nProperties.getString(Strings.promptCasesDateFrom));
593590
weekAndDateFilter.getDateToFilter().setInputPrompt(I18nProperties.getString(Strings.promptDateTo));
594591

595-
applyButton.addClickListener(e -> {
596-
DateFilterOption dateFilterOption = (DateFilterOption) weekAndDateFilter.getDateFilterOptionFilter().getValue();
597-
Date fromDate, toDate;
598-
if (dateFilterOption == DateFilterOption.DATE) {
599-
fromDate = DateHelper.getStartOfDay(weekAndDateFilter.getDateFromFilter().getValue());
600-
toDate = DateHelper.getEndOfDay(weekAndDateFilter.getDateToFilter().getValue());
601-
} else {
602-
fromDate = DateHelper.getEpiWeekStart((EpiWeek) weekAndDateFilter.getWeekFromFilter().getValue());
603-
toDate = DateHelper.getEpiWeekEnd((EpiWeek) weekAndDateFilter.getWeekToFilter().getValue());
604-
}
605-
if ((fromDate != null && toDate != null) || (fromDate == null && toDate == null)) {
606-
applyButton.removeStyleName(ValoTheme.BUTTON_PRIMARY);
607-
CaseCriteria criteria = getValue();
608-
NewCaseDateType newCaseDateType = (NewCaseDateType) weekAndDateFilter.getDateTypeSelector().getValue();
609-
610-
criteria.newCaseDateBetween(fromDate, toDate, newCaseDateType != null ? newCaseDateType : NewCaseDateType.MOST_RELEVANT);
611-
criteria.dateFilterOption(dateFilterOption);
612-
613-
((Button) getContent().getComponent(APPLY_BUTTON_ID)).click();
614-
} else {
615-
if (dateFilterOption == DateFilterOption.DATE) {
616-
Notification notification = new Notification(
617-
I18nProperties.getString(Strings.headingMissingDateFilter),
618-
I18nProperties.getString(Strings.messageMissingDateFilter),
619-
Notification.Type.WARNING_MESSAGE,
620-
false);
621-
notification.setDelayMsec(-1);
622-
notification.show(Page.getCurrent());
623-
} else {
624-
Notification notification = new Notification(
625-
I18nProperties.getString(Strings.headingMissingEpiWeekFilter),
626-
I18nProperties.getString(Strings.messageMissingEpiWeekFilter),
627-
Notification.Type.WARNING_MESSAGE,
628-
false);
629-
notification.setDelayMsec(-1);
630-
notification.show(Page.getCurrent());
631-
}
632-
}
633-
});
592+
addApplyHandler(e -> onApplyClick(weekAndDateFilter));
634593

635594
HorizontalLayout dateFilterRowLayout = new HorizontalLayout();
636595
dateFilterRowLayout.setSpacing(true);
637596
dateFilterRowLayout.setSizeUndefined();
638597

639598
dateFilterRowLayout.addComponent(weekAndDateFilter);
640-
dateFilterRowLayout.addComponent(applyButton);
641599

642600
return dateFilterRowLayout;
643601
}
644602

603+
private void onApplyClick(EpiWeekAndDateFilterComponent<NewCaseDateType> weekAndDateFilter) {
604+
DateFilterOption dateFilterOption = (DateFilterOption) weekAndDateFilter.getDateFilterOptionFilter().getValue();
605+
Date fromDate, toDate;
606+
if (dateFilterOption == DateFilterOption.DATE) {
607+
Date dateFrom = weekAndDateFilter.getDateFromFilter().getValue();
608+
fromDate = dateFrom != null ? DateHelper.getStartOfDay(dateFrom) : null;
609+
Date dateTo = weekAndDateFilter.getDateToFilter().getValue();
610+
toDate = dateFrom != null ? DateHelper.getEndOfDay(dateTo) : null;
611+
} else {
612+
fromDate = DateHelper.getEpiWeekStart((EpiWeek) weekAndDateFilter.getWeekFromFilter().getValue());
613+
toDate = DateHelper.getEpiWeekEnd((EpiWeek) weekAndDateFilter.getWeekToFilter().getValue());
614+
}
615+
if ((fromDate != null && toDate != null) || (fromDate == null && toDate == null)) {
616+
CaseCriteria criteria = getValue();
617+
NewCaseDateType newCaseDateType = (NewCaseDateType) weekAndDateFilter.getDateTypeSelector().getValue();
618+
619+
criteria.newCaseDateBetween(fromDate, toDate, newCaseDateType != null ? newCaseDateType : NewCaseDateType.MOST_RELEVANT);
620+
criteria.dateFilterOption(dateFilterOption);
621+
} else {
622+
if (dateFilterOption == DateFilterOption.DATE) {
623+
Notification notification = new Notification(
624+
I18nProperties.getString(Strings.headingMissingDateFilter),
625+
I18nProperties.getString(Strings.messageMissingDateFilter),
626+
Notification.Type.WARNING_MESSAGE,
627+
false);
628+
notification.setDelayMsec(-1);
629+
notification.show(Page.getCurrent());
630+
} else {
631+
Notification notification = new Notification(
632+
I18nProperties.getString(Strings.headingMissingEpiWeekFilter),
633+
I18nProperties.getString(Strings.messageMissingEpiWeekFilter),
634+
Notification.Type.WARNING_MESSAGE,
635+
false);
636+
notification.setDelayMsec(-1);
637+
notification.show(Page.getCurrent());
638+
}
639+
}
640+
}
641+
645642
public void disableSearchAndReportingUser() {
646643
getField(CaseCriteria.NAME_UUID_EPID_NUMBER_LIKE).setEnabled(false);
647644
getField(CaseCriteria.REPORTING_USER_LIKE).setEnabled(false);

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/eventLink/EventSelectionField.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Date;
2424
import java.util.function.Consumer;
2525

26+
import com.vaadin.event.ShortcutAction;
2627
import com.vaadin.server.Page;
2728
import com.vaadin.ui.Button;
2829
import com.vaadin.ui.Component;
@@ -117,9 +118,7 @@ public void initializeGrid() {
117118
private void addCreateEventRadioGroup() {
118119
rbCreateEvent = new RadioButtonGroup<>();
119120
rbCreateEvent.setItems(CREATE_EVENT);
120-
rbCreateEvent.setItemCaptionGenerator((item) -> {
121-
return I18nProperties.getCaption(Captions.eventNewEvent);
122-
});
121+
rbCreateEvent.setItemCaptionGenerator((item) -> I18nProperties.getCaption(Captions.eventNewEvent));
123122
rbCreateEvent.addValueChangeListener(e -> {
124123
if (e.getValue() != null) {
125124
rbSelectEvent.setValue(null);
@@ -199,9 +198,7 @@ public HorizontalLayout createFilterBar() {
199198

200199
searchField.setCaption(I18nProperties.getString(Strings.promptEventsSearchField));
201200

202-
searchField.addValueChangeListener(e -> {
203-
updateGrid(e.getValue());
204-
});
201+
searchField.addValueChangeListener(e -> updateGrid(e.getValue()));
205202

206203
filterLayout.addComponent(searchField);
207204

@@ -220,7 +217,7 @@ public HorizontalLayout buildWeekAndDateFilter() {
220217
Button applyButton = ButtonHelper.createButton(Captions.actionApplyDateFilter, null);
221218

222219
EpiWeekAndDateFilterComponent<DateFilterOption> weekAndDateFilter =
223-
new EpiWeekAndDateFilterComponent<>(applyButton, false, false, null, null);
220+
new EpiWeekAndDateFilterComponent<>(false, false, null, null);
224221

225222
weekAndDateFilter.getWeekFromFilter().setInputPrompt(I18nProperties.getString(Strings.promptEventEpiWeekFrom));
226223
weekAndDateFilter.getWeekToFilter().setInputPrompt(I18nProperties.getString(Strings.promptEventEpiWeekTo));

sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactsFilterForm.java

Lines changed: 46 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -362,10 +362,8 @@ protected Stream<Field> streamFieldsForEmptyCheck(CustomLayout layout) {
362362
}
363363

364364
private HorizontalLayout buildWeekAndDateFilter() {
365-
Button applyButton = ButtonHelper.createButton(Captions.actionApplyDateFilter, null);
366365

367366
EpiWeekAndDateFilterComponent<ContactDateType> weekAndDateFilter = new EpiWeekAndDateFilterComponent<>(
368-
applyButton,
369367
false,
370368
false,
371369
null,
@@ -378,62 +376,62 @@ private HorizontalLayout buildWeekAndDateFilter() {
378376
weekAndDateFilter.getDateFromFilter().setInputPrompt(I18nProperties.getString(Strings.promptContactDateFrom));
379377
weekAndDateFilter.getDateToFilter().setInputPrompt(I18nProperties.getString(Strings.promptContactDateTo));
380378

381-
applyButton.addClickListener(e -> {
382-
ContactCriteria criteria = getValue();
383-
384-
DateFilterOption dateFilterOption = (DateFilterOption) weekAndDateFilter.getDateFilterOptionFilter().getValue();
385-
Date fromDate, toDate;
386-
if (dateFilterOption == DateFilterOption.DATE) {
387-
fromDate = DateHelper.getStartOfDay(weekAndDateFilter.getDateFromFilter().getValue());
388-
toDate = DateHelper.getEndOfDay(weekAndDateFilter.getDateToFilter().getValue());
389-
} else {
390-
fromDate = DateHelper.getEpiWeekStart((EpiWeek) weekAndDateFilter.getWeekFromFilter().getValue());
391-
toDate = DateHelper.getEpiWeekEnd((EpiWeek) weekAndDateFilter.getWeekToFilter().getValue());
392-
}
393-
if ((fromDate != null && toDate != null) || (fromDate == null && toDate == null)) {
394-
applyButton.removeStyleName(ValoTheme.BUTTON_PRIMARY);
395-
ContactDateType contactDateType = (ContactDateType) weekAndDateFilter.getDateTypeSelector().getValue();
396-
if (contactDateType == ContactDateType.LAST_CONTACT_DATE) {
397-
criteria.lastContactDateBetween(fromDate, toDate);
398-
criteria.reportDateBetween(null, null);
399-
} else {
400-
criteria.reportDateBetween(fromDate, toDate);
401-
criteria.lastContactDateBetween(null, null);
402-
}
403-
criteria.dateFilterOption(dateFilterOption);
404-
405-
((Button) getContent().getComponent(APPLY_BUTTON_ID)).click();
406-
} else {
407-
if (dateFilterOption == DateFilterOption.DATE) {
408-
Notification notification = new Notification(
409-
I18nProperties.getString(Strings.headingMissingDateFilter),
410-
I18nProperties.getString(Strings.messageMissingDateFilter),
411-
Notification.Type.WARNING_MESSAGE,
412-
false);
413-
notification.setDelayMsec(-1);
414-
notification.show(Page.getCurrent());
415-
} else {
416-
Notification notification = new Notification(
417-
I18nProperties.getString(Strings.headingMissingEpiWeekFilter),
418-
I18nProperties.getString(Strings.messageMissingEpiWeekFilter),
419-
Notification.Type.WARNING_MESSAGE,
420-
false);
421-
notification.setDelayMsec(-1);
422-
notification.show(Page.getCurrent());
423-
}
424-
}
425-
});
379+
addApplyHandler(e -> onApplyClick(weekAndDateFilter));
426380

427381
HorizontalLayout dateFilterRowLayout = new HorizontalLayout();
428382
dateFilterRowLayout.setSpacing(true);
429383
dateFilterRowLayout.setSizeUndefined();
430384

431385
dateFilterRowLayout.addComponent(weekAndDateFilter);
432-
dateFilterRowLayout.addComponent(applyButton);
433386

434387
return dateFilterRowLayout;
435388
}
436389

390+
private void onApplyClick(EpiWeekAndDateFilterComponent<ContactDateType> weekAndDateFilter) {
391+
ContactCriteria criteria = getValue();
392+
393+
DateFilterOption dateFilterOption = (DateFilterOption) weekAndDateFilter.getDateFilterOptionFilter().getValue();
394+
Date fromDate, toDate;
395+
if (dateFilterOption == DateFilterOption.DATE) {
396+
Date dateFrom = weekAndDateFilter.getDateFromFilter().getValue();
397+
fromDate = dateFrom != null ? DateHelper.getStartOfDay(dateFrom) : null;
398+
Date dateTo = weekAndDateFilter.getDateToFilter().getValue();
399+
toDate = dateFrom != null ? DateHelper.getEndOfDay(dateTo) : null;
400+
} else {
401+
fromDate = DateHelper.getEpiWeekStart((EpiWeek) weekAndDateFilter.getWeekFromFilter().getValue());
402+
toDate = DateHelper.getEpiWeekEnd((EpiWeek) weekAndDateFilter.getWeekToFilter().getValue());
403+
}
404+
if ((fromDate != null && toDate != null) || (fromDate == null && toDate == null)) {
405+
ContactDateType contactDateType = (ContactDateType) weekAndDateFilter.getDateTypeSelector().getValue();
406+
if (contactDateType == ContactDateType.LAST_CONTACT_DATE) {
407+
criteria.lastContactDateBetween(fromDate, toDate);
408+
criteria.reportDateBetween(null, null);
409+
} else {
410+
criteria.reportDateBetween(fromDate, toDate);
411+
criteria.lastContactDateBetween(null, null);
412+
}
413+
criteria.dateFilterOption(dateFilterOption);
414+
} else {
415+
if (dateFilterOption == DateFilterOption.DATE) {
416+
Notification notification = new Notification(
417+
I18nProperties.getString(Strings.headingMissingDateFilter),
418+
I18nProperties.getString(Strings.messageMissingDateFilter),
419+
Notification.Type.WARNING_MESSAGE,
420+
false);
421+
notification.setDelayMsec(-1);
422+
notification.show(Page.getCurrent());
423+
} else {
424+
Notification notification = new Notification(
425+
I18nProperties.getString(Strings.headingMissingEpiWeekFilter),
426+
I18nProperties.getString(Strings.messageMissingEpiWeekFilter),
427+
Notification.Type.WARNING_MESSAGE,
428+
false);
429+
notification.setDelayMsec(-1);
430+
notification.show(Page.getCurrent());
431+
}
432+
}
433+
}
434+
437435
public void setSearchFieldEnabled(boolean enabled) {
438436
this.getField(ContactCriteria.NAME_UUID_CASE_LIKE).setEnabled(enabled);
439437
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,11 +305,10 @@ private HorizontalLayout createCustomDateFilterLayout() {
305305
// 'Apply custom filter' button
306306
Button applyButton =
307307
ButtonHelper.createButton(Captions.dashboardApplyCustomFilter, null, CssStyles.FORCE_CAPTION, CssStyles.BUTTON_FILTER_LIGHT);
308-
applyButton.setEnabled(false);
309308

310309
// Date & Epi Week filter
311310
EpiWeekAndDateFilterComponent<NewCaseDateType> weekAndDateFilter =
312-
new EpiWeekAndDateFilterComponent<>(applyButton, true, true, I18nProperties.getString(Strings.infoCaseDate), null);
311+
new EpiWeekAndDateFilterComponent<>(true, true, I18nProperties.getString(Strings.infoCaseDate), null);
313312
customDateFilterLayout.addComponents(weekAndDateFilter, applyButton);
314313

315314
// Apply button listener

sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventsFilterForm.java

Lines changed: 41 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
import java.util.stream.Stream;
88

99
import com.vaadin.server.Page;
10-
import com.vaadin.ui.Button;
1110
import com.vaadin.ui.CustomLayout;
1211
import com.vaadin.ui.HorizontalLayout;
1312
import com.vaadin.ui.Notification;
14-
import com.vaadin.ui.themes.ValoTheme;
1513
import com.vaadin.v7.data.Property;
1614
import com.vaadin.v7.ui.ComboBox;
1715
import com.vaadin.v7.ui.Field;
@@ -109,66 +107,64 @@ public void addMoreFilters(CustomLayout moreFiltersContainer) {
109107

110108
private HorizontalLayout buildWeekAndDateFilter() {
111109

112-
Button applyButton = ButtonHelper.createButton(Captions.actionApplyDateFilter, null);
113-
114110
EpiWeekAndDateFilterComponent<DateFilterOption> weekAndDateFilter =
115-
new EpiWeekAndDateFilterComponent<>(applyButton, false, false, null, null);
111+
new EpiWeekAndDateFilterComponent<>(false, false, null, this);
116112

117113
weekAndDateFilter.getWeekFromFilter().setInputPrompt(I18nProperties.getString(Strings.promptEventEpiWeekFrom));
118114
weekAndDateFilter.getWeekToFilter().setInputPrompt(I18nProperties.getString(Strings.promptEventEpiWeekTo));
119115
weekAndDateFilter.getDateFromFilter().setInputPrompt(I18nProperties.getString(Strings.promptEventDateFrom));
120116
weekAndDateFilter.getDateToFilter().setInputPrompt(I18nProperties.getString(Strings.promptEventDateTo));
121117

122-
applyButton.addClickListener(e -> {
123-
EventCriteria criteria = getValue();
124-
125-
DateFilterOption dateFilterOption = (DateFilterOption) weekAndDateFilter.getDateFilterOptionFilter().getValue();
126-
Date fromDate, toDate;
127-
if (dateFilterOption == DateFilterOption.DATE) {
128-
fromDate = DateHelper.getStartOfDay(weekAndDateFilter.getDateFromFilter().getValue());
129-
toDate = DateHelper.getEndOfDay(weekAndDateFilter.getDateToFilter().getValue());
130-
} else {
131-
fromDate = DateHelper.getEpiWeekStart((EpiWeek) weekAndDateFilter.getWeekFromFilter().getValue());
132-
toDate = DateHelper.getEpiWeekEnd((EpiWeek) weekAndDateFilter.getWeekToFilter().getValue());
133-
}
134-
weekAndDateFilter.setVisible(false);
135-
136-
if ((fromDate != null && toDate != null) || (fromDate == null && toDate == null)) {
137-
applyButton.removeStyleName(ValoTheme.BUTTON_PRIMARY);
138-
criteria.eventDateBetween(fromDate, toDate, dateFilterOption);
139-
140-
fireValueChange(true);
141-
} else {
142-
if (dateFilterOption == DateFilterOption.DATE) {
143-
Notification notification = new Notification(
144-
I18nProperties.getString(Strings.headingMissingDateFilter),
145-
I18nProperties.getString(Strings.messageMissingDateFilter),
146-
Notification.Type.WARNING_MESSAGE,
147-
false);
148-
notification.setDelayMsec(-1);
149-
notification.show(Page.getCurrent());
150-
} else {
151-
Notification notification = new Notification(
152-
I18nProperties.getString(Strings.headingMissingEpiWeekFilter),
153-
I18nProperties.getString(Strings.messageMissingEpiWeekFilter),
154-
Notification.Type.WARNING_MESSAGE,
155-
false);
156-
notification.setDelayMsec(-1);
157-
notification.show(Page.getCurrent());
158-
}
159-
}
160-
});
118+
addApplyHandler(e -> onApplyClick(weekAndDateFilter));
161119

162120
HorizontalLayout dateFilterRowLayout = new HorizontalLayout();
163121
dateFilterRowLayout.setSpacing(true);
164122
dateFilterRowLayout.setSizeUndefined();
165123

166124
dateFilterRowLayout.addComponent(weekAndDateFilter);
167-
dateFilterRowLayout.addComponent(applyButton);
168125

169126
return dateFilterRowLayout;
170127
}
171128

129+
private void onApplyClick(EpiWeekAndDateFilterComponent<DateFilterOption> weekAndDateFilter) {
130+
EventCriteria criteria = getValue();
131+
132+
DateFilterOption dateFilterOption = (DateFilterOption) weekAndDateFilter.getDateFilterOptionFilter().getValue();
133+
Date fromDate, toDate;
134+
if (dateFilterOption == DateFilterOption.DATE) {
135+
Date dateFrom = weekAndDateFilter.getDateFromFilter().getValue();
136+
fromDate = dateFrom != null ? DateHelper.getStartOfDay(dateFrom) : null;
137+
Date dateTo = weekAndDateFilter.getDateToFilter().getValue();
138+
toDate = dateFrom != null ? DateHelper.getEndOfDay(dateTo) : null;
139+
} else {
140+
fromDate = DateHelper.getEpiWeekStart((EpiWeek) weekAndDateFilter.getWeekFromFilter().getValue());
141+
toDate = DateHelper.getEpiWeekEnd((EpiWeek) weekAndDateFilter.getWeekToFilter().getValue());
142+
}
143+
weekAndDateFilter.setVisible(false);
144+
145+
if ((fromDate != null && toDate != null) || (fromDate == null && toDate == null)) {
146+
criteria.eventDateBetween(fromDate, toDate, dateFilterOption);
147+
} else {
148+
if (dateFilterOption == DateFilterOption.DATE) {
149+
Notification notification = new Notification(
150+
I18nProperties.getString(Strings.headingMissingDateFilter),
151+
I18nProperties.getString(Strings.messageMissingDateFilter),
152+
Notification.Type.WARNING_MESSAGE,
153+
false);
154+
notification.setDelayMsec(-1);
155+
notification.show(Page.getCurrent());
156+
} else {
157+
Notification notification = new Notification(
158+
I18nProperties.getString(Strings.headingMissingEpiWeekFilter),
159+
I18nProperties.getString(Strings.messageMissingEpiWeekFilter),
160+
Notification.Type.WARNING_MESSAGE,
161+
false);
162+
notification.setDelayMsec(-1);
163+
notification.show(Page.getCurrent());
164+
}
165+
}
166+
}
167+
172168
@SuppressWarnings("rawtypes")
173169
@Override
174170
protected Stream<Field> streamFieldsForEmptyCheck(CustomLayout layout) {

0 commit comments

Comments
 (0)