diff --git a/README.md b/README.md index 466277f..cf3ee69 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,9 @@ forms: referenced_data_form: "Formularverweis.Variante" anzeige_auswahl: "Referenziertes Formular vom: {Datum}" anzeige: "Datum im referenzierten Formular: {Datum}" + scripts_code: | + // Beispielcode + console.log(getFieldValue('ref_first_mtb')); menu_category: name: Beispielformulare position: 1.0 @@ -64,12 +67,15 @@ Hierzu wird die Anwendung angewiesen im Formular "ExampleForm" den Formularverwe * den Verweis auf das Formular "Formularverweis.Variante" zu setzen * die Anzeige im Auswahlmenü auf "Referenziertes Formular vom: {Datum}" zu setzen * die Anzeige unterhalb des Auswahlmenüs auf "Datum im referenzierten Formular: {Datum}" zu setzen +* den Code zur Ausführung "nach Aktualisierung" für das Formularfeld auf die angegebene, mehrzeilige Zeichenkette anzupassen und dabei die vorhandenen Angaben für den Formularverweis zu ersetzen. -Die Angaben für `referenced_data_form`, `anzeige_auswahl` und `anzeige` sind optional. +Die Angaben für `referenced_data_form`, `anzeige_auswahl`, `anzeige` und `scripts_code` sind optional. Wird keine Angabe gemacht, wird der bestehende Wert beibehalten. +**Achtung!** Diese Anwendung überprüft keine Scripts und verwendet angegebene Scripts als "valid" im resultierenden OSC-File. + Zudem kann die Menükategorie angepasst werden. Die Angabe einer `menu_category` ist fakultativ. Wird sie angeben, sind die Felder `name`, `position` und `column` verpflichtend. diff --git a/examples/dnpm-umg.yml b/examples/dnpm-umg.yml index c4043ce..db94b02 100644 --- a/examples/dnpm-umg.yml +++ b/examples/dnpm-umg.yml @@ -9,6 +9,10 @@ forms: - name: referstemtb referenced_data_form: 'UMG.MolTB_neu' anzeige_auswahl: 'MTB vom {DatumErstevorstellung}' + scripts_code: | + // Angepass an UMG: Verwende 'DatumErstevorstellung' + var datum = getFieldValue('referstemtb').DatumErstevorstellung; + setFieldValue('datum', datum); - name: reftkhumangenber referenced_data_form: 'UMG.MolTB_neu' anzeige_auswahl: 'MTB vom {DatumErstevorstellung}' diff --git a/src/model/data_form.rs b/src/model/data_form.rs index 541b5b4..c7ef07a 100644 --- a/src/model/data_form.rs +++ b/src/model/data_form.rs @@ -173,6 +173,12 @@ impl DataForm { { entry.anzeige_auswahl = Some(profile_anzeige_auswahl.clone()) } + if let Some(scripts_code) = &form_reference.escaped_scripts_code() { + entry.scripts = Some(Script { + code: scripts_code.clone(), + valid: true, + }) + } } }); diff --git a/src/model/unterformular.rs b/src/model/unterformular.rs index 3315629..2995b44 100644 --- a/src/model/unterformular.rs +++ b/src/model/unterformular.rs @@ -185,6 +185,12 @@ impl Unterformular { { entry.anzeige_auswahl = Some(profile_anzeige_auswahl.clone()) } + if let Some(scripts_code) = &form_reference.escaped_scripts_code() { + entry.scripts = Some(Script { + code: scripts_code.clone(), + valid: true, + }) + } } }); diff --git a/src/profile.rs b/src/profile.rs index 9e76df5..d5db16f 100644 --- a/src/profile.rs +++ b/src/profile.rs @@ -25,6 +25,10 @@ use serde::Deserialize; use std::str::FromStr; +fn escape_script(script: &str) -> String { + script.replace('\n', " ") +} + #[derive(Deserialize)] pub struct Profile { pub forms: Vec