mirror of
https://github.com/pcvolkmer/osc-variant.git
synced 2025-04-19 19:56:50 +00:00
Add support for script replacing
This commit is contained in:
parent
c9046a3e02
commit
92acd7655a
@ -53,6 +53,9 @@ forms:
|
|||||||
referenced_data_form: "Formularverweis.Variante"
|
referenced_data_form: "Formularverweis.Variante"
|
||||||
anzeige_auswahl: "Referenziertes Formular vom: {Datum}"
|
anzeige_auswahl: "Referenziertes Formular vom: {Datum}"
|
||||||
anzeige: "Datum im referenzierten Formular: {Datum}"
|
anzeige: "Datum im referenzierten Formular: {Datum}"
|
||||||
|
scripts_code: |
|
||||||
|
// Beispielcode
|
||||||
|
console.log(getFieldValue('ref_first_mtb'));
|
||||||
menu_category:
|
menu_category:
|
||||||
name: Beispielformulare
|
name: Beispielformulare
|
||||||
position: 1.0
|
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
|
* den Verweis auf das Formular "Formularverweis.Variante" zu setzen
|
||||||
* die Anzeige im Auswahlmenü auf "Referenziertes Formular vom: {Datum}" 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
|
* 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.
|
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.
|
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.
|
Zudem kann die Menükategorie angepasst werden.
|
||||||
Die Angabe einer `menu_category` ist fakultativ.
|
Die Angabe einer `menu_category` ist fakultativ.
|
||||||
Wird sie angeben, sind die Felder `name`, `position` und `column` verpflichtend.
|
Wird sie angeben, sind die Felder `name`, `position` und `column` verpflichtend.
|
||||||
|
@ -9,6 +9,10 @@ forms:
|
|||||||
- name: referstemtb
|
- name: referstemtb
|
||||||
referenced_data_form: 'UMG.MolTB_neu'
|
referenced_data_form: 'UMG.MolTB_neu'
|
||||||
anzeige_auswahl: 'MTB vom {DatumErstevorstellung}'
|
anzeige_auswahl: 'MTB vom {DatumErstevorstellung}'
|
||||||
|
scripts_code: |
|
||||||
|
// Angepass an UMG: Verwende 'DatumErstevorstellung'
|
||||||
|
var datum = getFieldValue('referstemtb').DatumErstevorstellung;
|
||||||
|
setFieldValue('datum', datum);
|
||||||
- name: reftkhumangenber
|
- name: reftkhumangenber
|
||||||
referenced_data_form: 'UMG.MolTB_neu'
|
referenced_data_form: 'UMG.MolTB_neu'
|
||||||
anzeige_auswahl: 'MTB vom {DatumErstevorstellung}'
|
anzeige_auswahl: 'MTB vom {DatumErstevorstellung}'
|
||||||
|
@ -173,6 +173,12 @@ impl DataForm {
|
|||||||
{
|
{
|
||||||
entry.anzeige_auswahl = Some(profile_anzeige_auswahl.clone())
|
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,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -185,6 +185,12 @@ impl Unterformular {
|
|||||||
{
|
{
|
||||||
entry.anzeige_auswahl = Some(profile_anzeige_auswahl.clone())
|
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,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -25,6 +25,10 @@
|
|||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
fn escape_script(script: &str) -> String {
|
||||||
|
script.replace('\n', " ")
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
pub struct Profile {
|
pub struct Profile {
|
||||||
pub forms: Vec<Form>,
|
pub forms: Vec<Form>,
|
||||||
@ -55,6 +59,13 @@ pub struct FormReference {
|
|||||||
pub referenced_data_form: Option<String>,
|
pub referenced_data_form: Option<String>,
|
||||||
pub anzeige: Option<String>,
|
pub anzeige: Option<String>,
|
||||||
pub anzeige_auswahl: Option<String>,
|
pub anzeige_auswahl: Option<String>,
|
||||||
|
scripts_code: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FormReference {
|
||||||
|
pub fn escaped_scripts_code(&self) -> Option<String> {
|
||||||
|
self.scripts_code.as_ref().map(|code| escape_script(code))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
@ -104,6 +115,9 @@ mod tests {
|
|||||||
referenced_data_form: 'OS.Tumorkonferenz.VarianteUKW'
|
referenced_data_form: 'OS.Tumorkonferenz.VarianteUKW'
|
||||||
anzeige: 'Datum: {Datum}'
|
anzeige: 'Datum: {Datum}'
|
||||||
anzeige_auswahl: 'TK vom {Datum}'
|
anzeige_auswahl: 'TK vom {Datum}'
|
||||||
|
scripts_code: |-
|
||||||
|
// Example code
|
||||||
|
console.log(42);
|
||||||
";
|
";
|
||||||
|
|
||||||
match Profile::from_str(content) {
|
match Profile::from_str(content) {
|
||||||
@ -124,6 +138,10 @@ mod tests {
|
|||||||
profile.forms[0].form_references[0].anzeige_auswahl,
|
profile.forms[0].form_references[0].anzeige_auswahl,
|
||||||
Some("TK vom {Datum}".to_string())
|
Some("TK vom {Datum}".to_string())
|
||||||
);
|
);
|
||||||
|
assert_eq!(
|
||||||
|
profile.forms[0].form_references[0].escaped_scripts_code(),
|
||||||
|
Some("// Example code console.log(42);".to_string())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Err(e) => panic!("Cannot deserialize profile: {}", e),
|
Err(e) => panic!("Cannot deserialize profile: {}", e),
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user