diff --git a/README.md b/README.md index 25f8c33..fdd81cd 100644 --- a/README.md +++ b/README.md @@ -237,14 +237,15 @@ Wird keine Angabe gemacht, wird der bestehende Wert beibehalten. Zudem wird im Formular "ExampleForm" das Formularfeld "formularfeld" ausgeblendet, indem der Filter auf "false" gesetzt wird. Dadurch wird das Formularfeld nie angezeigt. -Ein zuvor bestehender Filter wird ersetzt. +Ein zuvor bestehender Filter wird ersetzt und das Formularfeld wird nie angezeigt. Weiterhin wird die Eigenschaft "Speichern" des Formularfelds auf "Immer speichern" gesetzt um sicherzustellen, dass zuvor enthaltene Daten weiterhin gespeichert bleiben und werden, auch wenn das Formularfeld nicht sichtbar ist. +Um das Gegenteil zu erreichen und das Formularfeld *immer* anzuzeigen, kann `never_hide: true` verwendet werden. Der Standardwert des Feldes `otherformfield` ist nun auf `T` gesetzt. Zum Löschen eines Standardwerts ist `""` anzugeben. Das Formularfeld wird dabei nun immer angezeigt, auch wenn zuvor ein (Anzeige)-Filter gesetzt war. -Dieser wird mir `remove_filter: true` entfernt. +Dieser wird mir `remove_filter: true` oder `never_hide: true` entfernt. **Achtung!** Diese Anwendung überprüft keine Scripts und verwendet angegebene Scripts als "valid" im resultierenden OSC-File. diff --git a/src/profile.rs b/src/profile.rs index 230cdca..b780dc1 100644 --- a/src/profile.rs +++ b/src/profile.rs @@ -79,7 +79,7 @@ pub struct FormReference { pub referenced_data_form: Option, pub anzeige: Option, pub anzeige_auswahl: Option, - #[serde(default)] + #[serde(alias = "never_hide", default)] pub remove_filter: bool, scripts_code: Option, } @@ -96,7 +96,7 @@ pub struct FormField { #[serde(default)] pub hide: bool, pub default_value: Option, - #[serde(default)] + #[serde(alias = "never_hide", default)] pub remove_filter: bool, scripts_code: Option, } @@ -317,4 +317,49 @@ mod tests { Err(e) => panic!("Cannot deserialize profile: {}", e), } } + + #[test] + fn should_use_never_hide_as_alias_for_remove_filter_in_form_references() { + let content = "forms: + - name: 'DNPM Therapieplan' + form_references: + - name: formularref_to_mod + never_hide: true + "; + + match Profile::from_str(content) { + Ok(profile) => { + assert_eq!(profile.forms.len(), 1); + assert_eq!(profile.forms[0].name, "DNPM Therapieplan"); + assert_eq!(profile.forms[0].form_references.len(), 1); + assert_eq!( + profile.forms[0].form_references[0].name, + "formularref_to_mod" + ); + assert!(profile.forms[0].form_references[0].remove_filter); + } + Err(e) => panic!("Cannot deserialize profile: {}", e), + } + } + + #[test] + fn should_use_never_hide_as_alias_for_remove_filter_in_form_fields() { + let content = "forms: + - name: 'DNPM Therapieplan' + form_fields: + - name: formularfeld_to_mod + never_hide: true + "; + + match Profile::from_str(content) { + Ok(profile) => { + assert_eq!(profile.forms.len(), 1); + assert_eq!(profile.forms[0].name, "DNPM Therapieplan"); + assert_eq!(profile.forms[0].form_fields.len(), 1); + assert_eq!(profile.forms[0].form_fields[0].name, "formularfeld_to_mod"); + assert!(profile.forms[0].form_fields[0].remove_filter); + } + Err(e) => panic!("Cannot deserialize profile: {}", e), + } + } }