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

Commit edae964

Browse files
author
barnabartha
committed
SORMAS-Foundation#2753 - filter region filter by area
1 parent cd1039c commit edae964

4 files changed

Lines changed: 21 additions & 6 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/region/RegionFacade.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
@Remote
3030
public interface RegionFacade {
3131

32+
List<RegionReferenceDto> getAllActiveByArea(String areaUuid);
33+
3234
List<RegionReferenceDto> getAllActiveAsReference();
3335

3436
List<RegionDto> getAllAfter(Date date);

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/data/CampaignFormDataFacadeEjb.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ public List<CampaignDiagramDataDto> getDiagramData(
325325
+ " LEFT JOIN " + Region.TABLE_NAME + " ON " + CampaignFormData.REGION + "_id = " + Region.TABLE_NAME + "." + Region.ID
326326
+ " LEFT JOIN " + Area.TABLE_NAME + " ON " + Region.AREA + "_id = " + Area.TABLE_NAME + "." + Area.ID
327327
+ " LEFT JOIN " + District.TABLE_NAME + " ON " + CampaignFormData.DISTRICT + "_id = " + District.TABLE_NAME + "." + District.ID
328+
+ " LEFT JOIN " + Community.TABLE_NAME + " ON " + CampaignFormData.COMMUNITY + "_id = " + Community.TABLE_NAME + "." + Community.ID
328329
+ " LEFT JOIN " + Campaign.TABLE_NAME + " ON " + CampaignFormData.CAMPAIGN + "_id = " + Campaign.TABLE_NAME + "." + Campaign.ID
329330
+ ", json_array_elements(" + CampaignFormData.FORM_VALUES + ") as jsonData"
330331
+ ", json_array_elements(" + CampaignFormMeta.CAMPAIGN_FORM_ELEMENTS + ") as jsonMeta"

sormas-backend/src/main/java/de/symeda/sormas/backend/region/RegionFacadeEjb.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import de.symeda.sormas.api.region.RegionReferenceDto;
4949
import de.symeda.sormas.api.utils.SortProperty;
5050
import de.symeda.sormas.api.utils.ValidationRuntimeException;
51+
import de.symeda.sormas.backend.common.InfrastructureAdo;
5152
import de.symeda.sormas.backend.facility.Facility;
5253
import de.symeda.sormas.backend.infrastructure.PointOfEntry;
5354
import de.symeda.sormas.backend.infrastructure.PopulationDataFacadeEjb.PopulationDataFacadeEjbLocal;
@@ -74,6 +75,17 @@ public class RegionFacadeEjb implements RegionFacade {
7475
@EJB
7576
private AreaService areaService;
7677

78+
@Override
79+
public List<RegionReferenceDto> getAllActiveByArea(String areaUuid) {
80+
CriteriaBuilder cb = em.getCriteriaBuilder();
81+
CriteriaQuery<Region> cq = cb.createQuery(Region.class);
82+
Root<Region> root = cq.from(Region.class);
83+
cq.where(cb.and(cb.isFalse(root.get(InfrastructureAdo.ARCHIVED)), cb.equal(root.get(Region.AREA).get(Area.UUID), areaUuid)));
84+
cq.orderBy(cb.asc(root.get(Region.NAME)));
85+
86+
return em.createQuery(cq).getResultList().stream().map(f -> toReferenceDto(f)).collect(Collectors.toList());
87+
}
88+
7789
@Override
7890
public List<RegionReferenceDto> getAllActiveAsReference() {
7991
return regionService.getAllActive(Region.NAME, true).stream().map(f -> toReferenceDto(f)).collect(Collectors.toList());

sormas-ui/src/main/java/de/symeda/sormas/ui/dashboard/campaigns/CampaignDashboardFilterLayout.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ private void createJurisdictionFilters() {
8383
if (UserProvider.getCurrent().getUser().getRegion() == null) {
8484
regionFilter.setWidth(200, Unit.PIXELS);
8585
regionFilter.setInputPrompt(I18nProperties.getString(Strings.promptRegion));
86-
regionFilter.addItems(FacadeProvider.getRegionFacade().getAllActiveAsReference());
8786
regionFilter.addValueChangeListener(e -> {
8887
final Object value = regionFilter.getValue();
8988
dashboardDataProvider.setRegion((RegionReferenceDto) value);
@@ -95,11 +94,9 @@ private void createJurisdictionFilters() {
9594
}
9695

9796
// District filter
98-
if (UserProvider.getCurrent().getUser().getRegion() != null && UserProvider.getCurrent().getUser().getDistrict() == null) {
97+
if (UserProvider.getCurrent().getUser().getDistrict() == null) {
9998
districtFilter.setWidth(200, Unit.PIXELS);
10099
districtFilter.setInputPrompt(I18nProperties.getString(Strings.promptDistrict));
101-
districtFilter
102-
.addItems(FacadeProvider.getDistrictFacade().getAllActiveByRegion(UserProvider.getCurrent().getUser().getRegion().getUuid()));
103100
districtFilter.addValueChangeListener(e -> {
104101
dashboardDataProvider.setDistrict((DistrictReferenceDto) districtFilter.getValue());
105102
dashboardView.refreshDashboard();
@@ -112,6 +109,8 @@ private void createJurisdictionFilters() {
112109
private void setFilterVisibilitiesBasedOnRegion(Object value) {
113110
if (value != null) {
114111
districtFilter.setVisible(true);
112+
districtFilter.removeAllItems();
113+
districtFilter.addItems(FacadeProvider.getDistrictFacade().getAllActiveByRegion(((RegionReferenceDto) value).getUuid()));
115114
} else {
116115
districtFilter.setVisible(false);
117116
districtFilter.clear();
@@ -120,12 +119,13 @@ private void setFilterVisibilitiesBasedOnRegion(Object value) {
120119

121120
private void setFilterVisibilitiesBasedOnArea(Object value) {
122121
if (value != null) {
122+
regionFilter.removeAllItems();
123+
regionFilter.addItems(FacadeProvider.getRegionFacade().getAllActiveByArea(((AreaReferenceDto) value).getUuid()));
123124
regionFilter.setVisible(true);
124-
districtFilter.setVisible(true);
125125
} else {
126126
regionFilter.setVisible(false);
127-
districtFilter.setVisible(false);
128127
regionFilter.clear();
128+
districtFilter.setVisible(false);
129129
districtFilter.clear();
130130
}
131131
}

0 commit comments

Comments
 (0)