Skip to content

Commit b0839fd

Browse files
committed
#13442, #13486 - Fixed dirty state handling in Health Conditions form
The bug was caused by `HealthConditionsForm` not properly checking if the form was dirty. This has been fixed by ensuring that the form checks its dirty state before triggering events. - `HealthConditionsForm` now correctly checks if the form is dirty before triggering save or discard changes events. - `CommitDiscardWrapperComponent` added `HealthConditionsForm` to the list of components that can be checked for dirty state.
1 parent b399414 commit b0839fd

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

sormas-ui/src/main/java/de/symeda/sormas/ui/clinicalcourse/HealthConditionsForm.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,11 @@ protected String createHtmlLayout() {
245245

246246
@Override
247247
protected <F extends Field> F addFieldToLayout(CustomLayout layout, String propertyId, F field) {
248-
field.addValueChangeListener(e -> fireValueChange(false));
248+
field.addValueChangeListener(e -> {
249+
if (this.isModified()) {
250+
fireValueChange(false);
251+
}
252+
});
249253

250254
return super.addFieldToLayout(layout, propertyId, field);
251255
}

sormas-ui/src/main/java/de/symeda/sormas/ui/utils/CommitDiscardWrapperComponent.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import de.symeda.sormas.api.person.PersonDto;
7474
import de.symeda.sormas.api.user.UserRight;
7575
import de.symeda.sormas.ui.UiUtil;
76+
import de.symeda.sormas.ui.clinicalcourse.HealthConditionsForm;
7677
import de.symeda.sormas.ui.events.EventDataForm;
7778
import de.symeda.sormas.ui.location.AccessibleTextField;
7879
import de.symeda.sormas.ui.location.LocationEditForm;
@@ -300,6 +301,11 @@ protected void addDirtyHandler(FieldGroup[] fieldGroups) {
300301
.anyMatch(Buffered::isModified)) {
301302
dirty = true;
302303
}
304+
} else if (source instanceof HealthConditionsForm) {
305+
final HealthConditionsForm healthConditionsForm = (HealthConditionsForm) source;
306+
if (healthConditionsForm.isModified()) {
307+
dirty = true;
308+
}
303309
} else if (source instanceof AccessibleTextField) {
304310
final AccessibleTextField accessibleTextField = (AccessibleTextField) source;
305311
if (accessibleTextField.isModified()) {

0 commit comments

Comments
 (0)