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"
|
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}"
|
||||||
|
menu_category:
|
||||||
|
name: Beispielformulare
|
||||||
|
position: 1.0
|
||||||
|
column: 0
|
||||||
```
|
```
|
||||||
|
|
||||||
Hierzu wird die Anwendung angewiesen im Formular "ExampleForm" den Formularverweis im Formularfeld "ref_first_mtb":
|
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.
|
Die Angaben für `referenced_data_form`, `anzeige_auswahl` und `anzeige` sind optional.
|
||||||
Wird keine Angabe gemacht, wird der bestehende Wert beibehalten.
|
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
|
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.
|
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)]
|
#[derive(Deserialize)]
|
||||||
pub struct Form {
|
pub struct Form {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
#[serde(default)]
|
||||||
pub form_references: Vec<FormReference>,
|
pub form_references: Vec<FormReference>,
|
||||||
|
pub menu_category: Option<MenuCategory>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
@ -55,6 +57,13 @@ pub struct FormReference {
|
|||||||
pub anzeige_auswahl: Option<String>,
|
pub anzeige_auswahl: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
pub struct MenuCategory {
|
||||||
|
pub name: String,
|
||||||
|
pub position: String,
|
||||||
|
pub column: String,
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::profile::Profile;
|
use crate::profile::Profile;
|
||||||
@ -62,6 +71,32 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn should_deserialize_profile() {
|
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:
|
let content = "forms:
|
||||||
- name: 'DNPM Therapieplan'
|
- name: 'DNPM Therapieplan'
|
||||||
form_references:
|
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]
|
#[test]
|
||||||
fn should_deserialize_profile_with_no_changes() {
|
fn should_deserialize_profile_with_no_changes() {
|
||||||
let content = "forms:
|
let content = "forms:
|
||||||
@ -123,6 +187,7 @@ mod tests {
|
|||||||
fn should_not_deserialize_bad_profile() {
|
fn should_not_deserialize_bad_profile() {
|
||||||
let content = "forms:
|
let content = "forms:
|
||||||
- name: 'DNPM Therapieplan'
|
- name: 'DNPM Therapieplan'
|
||||||
|
- form_references: Unknown
|
||||||
# incomplete profile ...
|
# incomplete profile ...
|
||||||
";
|
";
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user