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

Commit ae1d9a8

Browse files
SORMAS-Foundation#3237: Only show facility categories that allow a permanent residence when selecting home in locations
1 parent c9e8f60 commit ae1d9a8

2 files changed

Lines changed: 44 additions & 4 deletions

File tree

sormas-app/app/src/main/java/de/symeda/sormas/app/component/dialog/LocationDialog.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import androidx.fragment.app.FragmentActivity;
3131

3232
import de.symeda.sormas.api.CountryHelper;
33+
import de.symeda.sormas.api.facility.FacilityType;
3334
import de.symeda.sormas.api.facility.FacilityTypeGroup;
3435
import de.symeda.sormas.api.location.AreaType;
3536
import de.symeda.sormas.api.location.LocationDto;
@@ -38,6 +39,7 @@
3839
import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers;
3940
import de.symeda.sormas.app.R;
4041
import de.symeda.sormas.app.backend.config.ConfigProvider;
42+
import de.symeda.sormas.app.backend.facility.Facility;
4143
import de.symeda.sormas.app.backend.location.Location;
4244
import de.symeda.sormas.app.component.Item;
4345
import de.symeda.sormas.app.component.controls.ControlButtonType;
@@ -226,6 +228,23 @@ public void configureAsPersonAddressDialog(boolean showDeleteButton) {
226228
contentBinding.locationAddressType.initializeSpinner(DataUtils.getEnumItems(PersonAddressType.class));
227229
}
228230
contentBinding.locationAddressType.setValidationCallback(() -> contentBinding.locationAddressType.getValue() != null);
231+
232+
contentBinding.locationAddressType.addValueChangedListener(e -> {
233+
FacilityTypeGroup oldGroup = (FacilityTypeGroup) contentBinding.facilityTypeGroup.getValue();
234+
FacilityType oldType = (FacilityType) contentBinding.locationFacilityType.getValue();
235+
Facility oldFacility = (Facility) contentBinding.locationFacility.getValue();
236+
String oldDetails = contentBinding.locationFacilityDetails.getValue();
237+
contentBinding.facilityTypeGroup.setSpinnerData(null);
238+
if (PersonAddressType.HOME.equals(contentBinding.locationAddressType.getValue())) {
239+
contentBinding.facilityTypeGroup.setSpinnerData(DataUtils.toItems(FacilityTypeGroup.getAccomodationGroups()));
240+
} else {
241+
contentBinding.facilityTypeGroup.setSpinnerData(DataUtils.getEnumItems(FacilityTypeGroup.class));
242+
}
243+
contentBinding.facilityTypeGroup.setValue(oldGroup);
244+
contentBinding.locationFacilityType.setValue(oldType);
245+
contentBinding.locationFacility.setValue(oldFacility);
246+
contentBinding.locationFacilityDetails.setValue(oldDetails);
247+
});
229248
}
230249

231250
}

sormas-ui/src/main/java/de/symeda/sormas/ui/location/LocationEditForm.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ public class LocationEditForm extends AbstractEditForm<LocationDto> {
9292

9393
private MapPopupView leafletMapPopup;
9494
private ComboBox addressType;
95+
private ComboBox facilityTypeGroup;
96+
private ComboBox facilityType;
97+
private ComboBox facility;
98+
private TextField facilityDetails;
9599

96100
public LocationEditForm(FieldVisibilityCheckers fieldVisibilityCheckers, UiFieldAccessCheckers fieldAccessCheckers) {
97101
super(LocationDto.class, LocationDto.I18N_PREFIX, true, fieldVisibilityCheckers, fieldAccessCheckers);
@@ -135,18 +139,35 @@ protected void addFields() {
135139
Arrays.asList(LocationDto.ADDRESS_TYPE_DETAILS),
136140
Arrays.asList(PersonAddressType.OTHER_ADDRESS));
137141

138-
ComboBox facilityTypeGroup = new ComboBox();
142+
facilityTypeGroup = new ComboBox();
139143
facilityTypeGroup.setId("typeGroup");
140144
facilityTypeGroup.setCaption(I18nProperties.getCaption(Captions.Facility_typeGroup));
141145
facilityTypeGroup.setWidth(100, Unit.PERCENTAGE);
142146
facilityTypeGroup.addItems(FacilityTypeGroup.values());
143147
getContent().addComponent(facilityTypeGroup, FACILITY_TYPE_GROUP_LOC);
144-
ComboBox facilityType = addField(LocationDto.FACILITY_TYPE);
145-
ComboBox facility = addInfrastructureField(LocationDto.FACILITY);
148+
facilityType = addField(LocationDto.FACILITY_TYPE);
149+
facility = addInfrastructureField(LocationDto.FACILITY);
146150
facility.setImmediate(true);
147-
TextField facilityDetails = addField(LocationDto.FACILITY_DETAILS, TextField.class);
151+
facilityDetails = addField(LocationDto.FACILITY_DETAILS, TextField.class);
148152
facilityDetails.setVisible(false);
149153

154+
addressType.addValueChangeListener(e -> {
155+
FacilityTypeGroup oldGroup = (FacilityTypeGroup) facilityTypeGroup.getValue();
156+
FacilityType oldType = (FacilityType) facilityType.getValue();
157+
FacilityReferenceDto oldFacility = (FacilityReferenceDto) facility.getValue();
158+
String oldDetails = facilityDetails.getValue();
159+
facilityTypeGroup.removeAllItems();
160+
if (PersonAddressType.HOME.equals(addressType.getValue())) {
161+
facilityTypeGroup.addItems(FacilityTypeGroup.getAccomodationGroups());
162+
} else {
163+
facilityTypeGroup.addItems(FacilityTypeGroup.values());
164+
}
165+
facilityTypeGroup.setValue(oldGroup);
166+
facilityType.setValue(oldType);
167+
facility.setValue(oldFacility);
168+
facilityDetails.setValue(oldDetails);
169+
});
170+
150171
addField(LocationDto.STREET, TextField.class);
151172
addField(LocationDto.HOUSE_NUMBER, TextField.class);
152173
addField(LocationDto.ADDITIONAL_INFORMATION, TextField.class);

0 commit comments

Comments
 (0)