From ee6c38b45925006d0371554088af91c6a3561528 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Thu, 23 May 2024 15:11:59 +0200 Subject: [PATCH] feat: add profile option alias 'never_hide' for 'remove_filter' The option 'never_hide' will also be the counterpart to 'hide'. --- README.md | 5 +++-- src/profile.rs | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) 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), + } + } }