mirror of
https://github.com/pcvolkmer/osc-variant.git
synced 2025-04-19 19:56:50 +00:00
Add menu category changes
This commit is contained in:
parent
c3895c8eaf
commit
f9b9c6d312
@ -47,6 +47,10 @@ forms:
|
||||
referenced_data_form: "Formularverweis.Variante"
|
||||
anzeige_auswahl: "Referenziertes Formular vom: {Datum}"
|
||||
anzeige: "Datum im referenzierten Formular: {Datum}"
|
||||
menu_category:
|
||||
name: Beispielformulare
|
||||
position: 1.0
|
||||
column: 0
|
||||
```
|
||||
|
||||
Hierzu wird die Anwendung angewiesen im Formular "ExampleForm" den Formularverweis im Formularfeld "ref_first_mtb":
|
||||
@ -60,6 +64,9 @@ und dabei die vorhandenen Angaben für den Formularverweis zu ersetzen.
|
||||
Die Angaben für `referenced_data_form`, `anzeige_auswahl` und `anzeige` sind optional.
|
||||
Wird keine Angabe gemacht, wird der bestehende Wert beibehalten.
|
||||
|
||||
Zudem kann die Menükategorie angepasst werden.
|
||||
Hierbei sind alle Felder `name`, `position` und `column` verpflichtend, wenn eine Angabe zu einer Änderung der Menükategorie gemacht wird.
|
||||
|
||||
Es können beliebig viele Formulare mit beliebig vielen Änderungen zu Formularverweisen in einer Profildatei
|
||||
hinterlegt werden, jedoch ist mindestens eine Angabe zu einem Formularfeld erforderlich.
|
||||
|
||||
|
@ -172,6 +172,14 @@ impl DataForm {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if let Some(menu_category) = &profile_form.menu_category {
|
||||
self.menu_category = Some(MenuCategory {
|
||||
name: menu_category.name.clone(),
|
||||
position: menu_category.position.clone(),
|
||||
column: menu_category.column.clone(),
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
@ -181,6 +181,14 @@ impl Unterformular {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if let Some(menu_category) = &profile_form.menu_category {
|
||||
self.menu_category = Some(MenuCategory {
|
||||
name: menu_category.name.clone(),
|
||||
position: menu_category.position.clone(),
|
||||
column: menu_category.column.clone(),
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
@ -44,7 +44,9 @@ impl FromStr for Profile {
|
||||
#[derive(Deserialize)]
|
||||
pub struct Form {
|
||||
pub name: String,
|
||||
#[serde(default)]
|
||||
pub form_references: Vec<FormReference>,
|
||||
pub menu_category: Option<MenuCategory>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
@ -55,6 +57,13 @@ pub struct FormReference {
|
||||
pub anzeige_auswahl: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct MenuCategory {
|
||||
pub name: String,
|
||||
pub position: String,
|
||||
pub column: String,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::profile::Profile;
|
||||
@ -62,6 +71,32 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn should_deserialize_profile() {
|
||||
let content = "forms:
|
||||
- name: 'DNPM Therapieplan'
|
||||
menu_category:
|
||||
name: DNPM
|
||||
position: 3.0
|
||||
column: 1
|
||||
form_references:
|
||||
- name: ref_first_mtb
|
||||
referenced_data_form: 'OS.Tumorkonferenz.VarianteUKW'
|
||||
anzeige: 'Datum: {Datum}'
|
||||
anzeige_auswahl: 'TK vom {Datum}'
|
||||
";
|
||||
|
||||
match Profile::from_str(content) {
|
||||
Ok(profile) => {
|
||||
assert_eq!(profile.forms.len(), 1);
|
||||
assert_eq!(profile.forms[0].name, "DNPM Therapieplan");
|
||||
assert!(profile.forms[0].menu_category.is_some());
|
||||
assert_eq!(profile.forms[0].form_references.len(), 1);
|
||||
}
|
||||
Err(e) => panic!("Cannot deserialize profile: {}", e),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_deserialize_form_reference() {
|
||||
let content = "forms:
|
||||
- name: 'DNPM Therapieplan'
|
||||
form_references:
|
||||
@ -94,6 +129,35 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_deserialize_menu_category() {
|
||||
let content = "forms:
|
||||
- name: 'DNPM Therapieplan'
|
||||
menu_category:
|
||||
name: DNPM
|
||||
position: 3.0
|
||||
column: 1
|
||||
";
|
||||
|
||||
match Profile::from_str(content) {
|
||||
Ok(profile) => {
|
||||
assert_eq!(profile.forms.len(), 1);
|
||||
assert_eq!(profile.forms[0].name, "DNPM Therapieplan");
|
||||
assert!(profile.forms[0].menu_category.is_some());
|
||||
assert!(profile.forms[0]
|
||||
.menu_category
|
||||
.as_ref()
|
||||
.is_some_and(|menu_category| {
|
||||
assert_eq!(menu_category.name, "DNPM");
|
||||
assert_eq!(menu_category.position, "3.0");
|
||||
assert_eq!(menu_category.column, "1");
|
||||
true
|
||||
}));
|
||||
}
|
||||
Err(e) => panic!("Cannot deserialize profile: {}", e),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_deserialize_profile_with_no_changes() {
|
||||
let content = "forms:
|
||||
@ -123,6 +187,7 @@ mod tests {
|
||||
fn should_not_deserialize_bad_profile() {
|
||||
let content = "forms:
|
||||
- name: 'DNPM Therapieplan'
|
||||
- form_references: Unknown
|
||||
# incomplete profile ...
|
||||
";
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user