Skip to content

Commit 201aaf9

Browse files
authored
Merge pull request #13508 from SORMAS-Foundation/bugfix-#13489-filter-problem-within-the-adverse-event-list
fixed issue with filter criteria updates from directory and maps
2 parents b399414 + 8ee3ac1 commit 201aaf9

7 files changed

Lines changed: 56 additions & 34 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/adverseeventsfollowingimmunization/AefiCriteria.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class AefiCriteria extends BaseCriteria implements Serializable {
7171
private Date toDate;
7272
private EntityRelevanceStatus relevanceStatus;
7373

74+
private Boolean gisMapCriteria = false;
7475
private Boolean showSeriousAefiForMap = false;
7576
private Boolean showNonSeriousAefiForMap = false;
7677

@@ -230,6 +231,11 @@ public AefiCriteria aefiType(AefiType aefiType) {
230231
return this;
231232
}
232233

234+
public AefiCriteria gisMapCriteria(Boolean gisMapCriteria) {
235+
this.gisMapCriteria = gisMapCriteria;
236+
return this;
237+
}
238+
233239
public AefiCriteria showSeriousAefiForMap(Boolean showSeriousAefi) {
234240
this.showSeriousAefiForMap = showSeriousAefi;
235241
return this;
@@ -240,6 +246,10 @@ public AefiCriteria showNonSeriousAefiForMap(Boolean showNonSeriousAefi) {
240246
return this;
241247
}
242248

249+
public Boolean isGisMapCriteria() {
250+
return gisMapCriteria;
251+
}
252+
243253
public Boolean isShowSeriousAefiForMap() {
244254
return showSeriousAefiForMap;
245255
}

sormas-api/src/main/java/de/symeda/sormas/api/dashboard/AefiDashboardCriteria.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class AefiDashboardCriteria extends BaseDashboardCriteria<AefiDashboardCr
2323
private AefiDashboardFilterDateType aefiDashboardFilterDateType;
2424
private AefiType aefiType;
2525

26+
private boolean gisMapCriteria;
2627
private boolean showSeriousAefiForMap;
2728
private boolean showNonSeriousAefiForMap;
2829

@@ -38,6 +39,10 @@ public AefiType getAefiType() {
3839
return aefiType;
3940
}
4041

42+
public boolean isGisMapCriteria() {
43+
return gisMapCriteria;
44+
}
45+
4146
public boolean isShowSeriousAefiForMap() {
4247
return showSeriousAefiForMap;
4348
}
@@ -56,6 +61,11 @@ public AefiDashboardCriteria aefiType(AefiType aefiType) {
5661
return self;
5762
}
5863

64+
public AefiDashboardCriteria gisMapCriteria(boolean gisMapCriteria) {
65+
this.gisMapCriteria = gisMapCriteria;
66+
return self;
67+
}
68+
5969
public AefiDashboardCriteria showSeriousAefiForMap(boolean showSeriousAefi) {
6070
this.showSeriousAefiForMap = showSeriousAefi;
6171
return self;

sormas-api/src/main/resources/enum.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2649,7 +2649,7 @@ RadiographyCompatibility.NOT_COMPATIBLE_WITH_TB = Not compatible with TB regardl
26492649

26502650
# ClinicalPresentationStatus
26512651
ClinicalPresentationStatus.ASYMPTOMATIC=Asymtomatic
2652-
ClinicalPresentationStatus.COMPATIBLE=Signs and symptoms compatible with %s regardless of the anatomical site
2652+
ClinicalPresentationStatus.COMPATIBLE=Signs and symptoms compatible regardless of the anatomical site
26532653
ClinicalPresentationStatus.UNKNOWN=Unknown
26542654

26552655
# InfectionSite

sormas-backend/src/main/java/de/symeda/sormas/backend/adverseeventsfollowingimmunization/AefiService.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -561,14 +561,16 @@ public Predicate buildCriteriaFilter(AefiCriteria criteria, AefiQueryContext aef
561561
filter = CriteriaBuilderHelper.and(cb, filter, cb.notEqual(from.get(Aefi.SERIOUS), YesNoUnknown.YES));
562562
}
563563
} else {
564-
if (criteria.isShowSeriousAefiForMap() && !criteria.isShowNonSeriousAefiForMap()) {
565-
filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(from.get(Aefi.SERIOUS), YesNoUnknown.YES));
566-
} else if (criteria.isShowNonSeriousAefiForMap() && !criteria.isShowSeriousAefiForMap()) {
567-
filter = CriteriaBuilderHelper.and(cb, filter, cb.notEqual(from.get(Aefi.SERIOUS), YesNoUnknown.YES));
568-
} else if (criteria.isShowSeriousAefiForMap() && criteria.isShowNonSeriousAefiForMap()) {
569-
filter = CriteriaBuilderHelper.and(cb, filter, cb.isNotNull(from.get(Aefi.SERIOUS)));
570-
} else if (!criteria.isShowSeriousAefiForMap() && !criteria.isShowNonSeriousAefiForMap()) {
571-
filter = CriteriaBuilderHelper.and(cb, filter, cb.isNull(from.get(Aefi.SERIOUS)));
564+
if (criteria.isGisMapCriteria()) {
565+
if (criteria.isShowSeriousAefiForMap() && !criteria.isShowNonSeriousAefiForMap()) {
566+
filter = CriteriaBuilderHelper.and(cb, filter, cb.equal(from.get(Aefi.SERIOUS), YesNoUnknown.YES));
567+
} else if (criteria.isShowNonSeriousAefiForMap() && !criteria.isShowSeriousAefiForMap()) {
568+
filter = CriteriaBuilderHelper.and(cb, filter, cb.notEqual(from.get(Aefi.SERIOUS), YesNoUnknown.YES));
569+
} else if (criteria.isShowSeriousAefiForMap() && criteria.isShowNonSeriousAefiForMap()) {
570+
filter = CriteriaBuilderHelper.and(cb, filter, cb.isNotNull(from.get(Aefi.SERIOUS)));
571+
} else if (!criteria.isShowSeriousAefiForMap() && !criteria.isShowNonSeriousAefiForMap()) {
572+
filter = CriteriaBuilderHelper.and(cb, filter, cb.isNull(from.get(Aefi.SERIOUS)));
573+
}
572574
}
573575
}
574576
if (criteria.getOutcome() != null) {

sormas-backend/src/main/java/de/symeda/sormas/backend/dashboard/adverseeventsfollowingimmunization/AefiDashboardService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ private <T extends AbstractDomainObject> Predicate createAefiFilter(AefiQueryCon
608608
.region(criteria.getRegion())
609609
.district(criteria.getDistrict())
610610
.aefiType(criteria.getAefiType())
611+
.gisMapCriteria(criteria.isGisMapCriteria())
611612
.showSeriousAefiForMap(criteria.isShowSeriousAefiForMap())
612613
.showNonSeriousAefiForMap(criteria.isShowNonSeriousAefiForMap()),
613614
queryContext));

sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/adverseeventsfollowingimmunization/components/AefiDashboardMapComponent.java

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141

4242
public class AefiDashboardMapComponent extends BaseDashboardMapComponent<AefiDashboardCriteria, AefiDashboardDataProvider> {
4343

44+
private CheckBox showSeriousAefiCheckBox;
45+
private CheckBox showNonSeriousAefiCheckBox;
46+
4447
public AefiDashboardMapComponent(AefiDashboardDataProvider dashboardDataProvider) {
4548
super(Strings.headingAefiDashboardMap, dashboardDataProvider, Strings.infoHeadingAefiDashboardMap);
4649
}
@@ -61,7 +64,22 @@ protected void loadMapData(Date fromDate, Date toDate) {
6164
map.removeGroup(markerGroup);
6265

6366
AefiDashboardCriteria criteria = dashboardDataProvider.buildDashboardCriteriaWithDates();
64-
List<MapAefiDto> aefiMapData = FacadeProvider.getAefiDashboardFacade().getAefiForMap(criteria);
67+
List<MapAefiDto> seriousAefiMapData = new ArrayList<>();
68+
List<MapAefiDto> nonSeriousAefiMapData = new ArrayList<>();
69+
70+
if (showSeriousAefiCheckBox.getValue()) {
71+
criteria = criteria.aefiType(AefiType.SERIOUS);
72+
seriousAefiMapData = FacadeProvider.getAefiDashboardFacade().getAefiForMap(criteria);
73+
}
74+
75+
if (showNonSeriousAefiCheckBox.getValue()) {
76+
criteria = criteria.aefiType(AefiType.NON_SERIOUS);
77+
nonSeriousAefiMapData = FacadeProvider.getAefiDashboardFacade().getAefiForMap(criteria);
78+
}
79+
80+
List<MapAefiDto> aefiMapData = new ArrayList<>();
81+
aefiMapData.addAll(seriousAefiMapData);
82+
aefiMapData.addAll(nonSeriousAefiMapData);
6583

6684
//temporary fix: remove data without coordinates
6785
//ideally do this in the backend code
@@ -98,33 +116,21 @@ protected void loadMapData(Date fromDate, Date toDate) {
98116
@Override
99117
protected void addLayerOptions(VerticalLayout layersLayout) {
100118

101-
CheckBox showSeriousAefiCheckBox = new CheckBox();
119+
showSeriousAefiCheckBox = new CheckBox();
102120
showSeriousAefiCheckBox.setId(Captions.aefiDashboardShowSeriousAefi);
103121
showSeriousAefiCheckBox.setCaption(I18nProperties.getCaption(Captions.aefiDashboardShowSeriousAefi));
104-
showSeriousAefiCheckBox.setValue(shouldShowSeriousAefi());
122+
showSeriousAefiCheckBox.setValue(true);
105123
showSeriousAefiCheckBox.addValueChangeListener(e -> {
106-
if ((boolean) e.getProperty().getValue()) {
107-
dashboardDataProvider.buildDashboardCriteriaWithDates().aefiType(AefiType.SERIOUS);
108-
} else {
109-
dashboardDataProvider.buildDashboardCriteriaWithDates().aefiType(null);
110-
}
111-
112124
refreshMap(true);
113125
});
114126

115127
layersLayout.addComponent(showSeriousAefiCheckBox);
116128

117-
CheckBox showNonSeriousAefiCheckBox = new CheckBox();
129+
showNonSeriousAefiCheckBox = new CheckBox();
118130
showNonSeriousAefiCheckBox.setId(Captions.aefiDashboardShowNonSeriousAefi);
119131
showNonSeriousAefiCheckBox.setCaption(I18nProperties.getCaption(Captions.aefiDashboardShowNonSeriousAefi));
120-
showNonSeriousAefiCheckBox.setValue(shouldShowNonSeriousAefi());
132+
showNonSeriousAefiCheckBox.setValue(true);
121133
showNonSeriousAefiCheckBox.addValueChangeListener(e -> {
122-
if ((boolean) e.getProperty().getValue()) {
123-
dashboardDataProvider.buildDashboardCriteriaWithDates().aefiType(AefiType.NON_SERIOUS);
124-
} else {
125-
dashboardDataProvider.buildDashboardCriteriaWithDates().aefiType(null);
126-
}
127-
128134
refreshMap(true);
129135
});
130136

@@ -151,14 +157,6 @@ protected List<Component> getLegendComponents() {
151157
return Collections.singletonList(samplesLegendLayout);
152158
}
153159

154-
private boolean shouldShowSeriousAefi() {
155-
return dashboardDataProvider.buildDashboardCriteriaWithDates().getAefiType() == AefiType.SERIOUS;
156-
}
157-
158-
private boolean shouldShowNonSeriousAefi() {
159-
return dashboardDataProvider.buildDashboardCriteriaWithDates().getAefiType() == AefiType.NON_SERIOUS;
160-
}
161-
162160
@Override
163161
protected void onMarkerClicked(String groupId, int markerIndex) {
164162

sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/gis/GisDashboardMapComponent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1299,6 +1299,7 @@ private void clearAefiMarkers() {
12991299

13001300
private void showAefiMarkers() {
13011301
AefiDashboardCriteria criteria = dashboardDataProvider.buildAefiDashboardCriteria()
1302+
.gisMapCriteria(true)
13021303
.showSeriousAefiForMap(showSeriousAefiCheckBox.getValue())
13031304
.showNonSeriousAefiForMap(showNonSeriousAefiCheckBox.getValue());
13041305
List<MapAefiDto> aefiMapData = FacadeProvider.getAefiDashboardFacade().getAefiForMap(criteria);

0 commit comments

Comments
 (0)