1
0
mirror of https://github.com/pcvolkmer/osc-variant.git synced 2025-04-20 20:26:50 +00:00

Extract method to apply form field profile part

This commit is contained in:
Paul-Christian Volkmer 2023-09-01 12:31:48 +02:00
parent 1e7a95bb09
commit 3ec51099c7
3 changed files with 24 additions and 15 deletions

View File

@ -30,8 +30,9 @@ use serde::{Deserialize, Serialize};
use crate::model::onkostar_editor::OnkostarEditor; use crate::model::onkostar_editor::OnkostarEditor;
use crate::model::requirements::{Requirement, Requires}; use crate::model::requirements::{Requirement, Requires};
use crate::model::{ use crate::model::{
apply_profile_to_form_entry, Ansichten, Comparable, Entries, Filter, FolderContent, FormEntry, apply_profile_to_form_entry, apply_profile_to_form_field, Ansichten, Comparable, Entries,
FormEntryContainer, Listable, MenuCategory, PlausibilityRules, RefEntries, Script, Sortable, Filter, FolderContent, FormEntry, FormEntryContainer, Listable, MenuCategory,
PlausibilityRules, RefEntries, Script, Sortable,
}; };
use crate::model::{Haeufigkeiten, Ordner}; use crate::model::{Haeufigkeiten, Ordner};
use crate::profile::Profile; use crate::profile::Profile;
@ -170,11 +171,10 @@ impl FormEntryContainer for DataForm {
}); });
// Hide form field using filter set to "false" if requested // Hide form field using filter set to "false" if requested
profile_form.form_fields.iter().for_each(|form_field| { profile_form
if entry.name == form_field.name && form_field.hide { .form_fields
entry.hide() .iter()
} .for_each(|form_field| apply_profile_to_form_field(entry, form_field));
});
if let Some(menu_category) = &profile_form.menu_category { if let Some(menu_category) = &profile_form.menu_category {
self.menu_category = Some(MenuCategory { self.menu_category = Some(MenuCategory {

View File

@ -28,7 +28,7 @@ use std::hash::{Hash, Hasher};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::profile::{FormReference, Profile}; use crate::profile::{FormField, FormReference, Profile};
pub mod data_catalogue; pub mod data_catalogue;
pub mod data_form; pub mod data_form;
@ -232,6 +232,15 @@ where
} }
} }
fn apply_profile_to_form_field<E>(entry: &mut E, form_field: &FormField)
where
E: FormEntry,
{
if entry.get_name() == form_field.name && form_field.hide {
entry.hide()
}
}
pub trait FormEntryContainer { pub trait FormEntryContainer {
fn apply_profile(&mut self, profile: &Profile); fn apply_profile(&mut self, profile: &Profile);
} }

View File

@ -30,8 +30,9 @@ use serde::{Deserialize, Serialize};
use crate::model::onkostar_editor::OnkostarEditor; use crate::model::onkostar_editor::OnkostarEditor;
use crate::model::requirements::{Requirement, Requires}; use crate::model::requirements::{Requirement, Requires};
use crate::model::{ use crate::model::{
apply_profile_to_form_entry, Ansichten, Comparable, Entries, Filter, FolderContent, FormEntry, apply_profile_to_form_entry, apply_profile_to_form_field, Ansichten, Comparable, Entries,
FormEntryContainer, Listable, MenuCategory, PlausibilityRules, RefEntries, Script, Sortable, Filter, FolderContent, FormEntry, FormEntryContainer, Listable, MenuCategory,
PlausibilityRules, RefEntries, Script, Sortable,
}; };
use crate::model::{Haeufigkeiten, Ordner}; use crate::model::{Haeufigkeiten, Ordner};
use crate::profile::Profile; use crate::profile::Profile;
@ -181,11 +182,10 @@ impl FormEntryContainer for Unterformular {
}); });
// Hide form field using filter set to "false" if requested // Hide form field using filter set to "false" if requested
profile_form.form_fields.iter().for_each(|form_field| { profile_form
if entry.name == form_field.name && form_field.hide { .form_fields
entry.hide() .iter()
} .for_each(|form_field| apply_profile_to_form_field(entry, form_field));
});
if let Some(menu_category) = &profile_form.menu_category { if let Some(menu_category) = &profile_form.menu_category {
self.menu_category = Some(MenuCategory { self.menu_category = Some(MenuCategory {