From: Andrea Zagli Date: Sat, 4 Mar 2023 14:58:12 +0000 (+0100) Subject: Field: added type button. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=9988045984d036a2a3859645c4b9a78798f730a0;p=rust%2Fzakform Field: added type button. --- diff --git a/src/fields.rs b/src/fields.rs index 251362c..b884243 100644 --- a/src/fields.rs +++ b/src/fields.rs @@ -770,3 +770,135 @@ _ => {}, f } } + +#[derive(Default)] +pub struct FieldButton { + field: Field, + form: String, +} + +impl TField for FieldButton { + fn get_name(&self) -> String { + String::from(&self.field.name) + } + + fn get_label(&self) -> String { + String::from(&self.field.label) + } + + fn set_label(&mut self, label: &str) { + self.field.label = String::from(label); + } + + fn get_disabled(&self) -> bool { + self.field.disabled + } + + fn set_disabled(&mut self, disabled: bool) { + self.field.disabled = disabled; + } + + fn get_invisible(&self) -> bool { + self.field.invisible + } + + fn set_invisible(&mut self, invisible: bool) { + self.field.invisible = invisible; + } + + fn get_help(&self) -> String { + String::from(&self.field.help) + } + + fn set_help(&mut self, help: &str) { + self.field.help = String::from(help); + } + + fn get_value(&self) -> String { + String::from(&self.field.value) + } + + fn set_value(&mut self, value: &str) { + self.field.value = String::from(value); + } + + fn get_to_load(&self) -> bool { + self.field.to_load + } + + fn set_to_load(&mut self, load: bool) { + self.field.to_load = load; + } + + fn get_to_save(&self) -> bool { + self.field.to_save + } + + fn set_to_save(&mut self, save: bool) { + self.field.to_save = save; + } + + fn add_filter(&mut self, filter: super::filters::Filter) { + self.field.filters.push(filter); + } + + fn filter(&mut self) { + for f in &self.field.filters { + self.field.value = (f)(&self.field.value); + } + } + + fn set_template(&mut self, template: &str) { + match self.field.tmpl.add_raw_template("field", template) { + Err(e) => { println!("{:?}", e) }, + _ => {}, + }; + } + + fn render(&self) -> String { + let mut s = String::new(); + + let mut context = tera::Context::new(); + context.insert("name", &self.field.name); + context.insert("label", &self.field.label); + context.insert("disabled", &self.field.disabled); + context.insert("invisible", &self.field.invisible); + context.insert("help", &self.field.help); + context.insert("value", &self.field.value); + context.insert("form", &self.form); + s.push_str(self.field.tmpl.render("field", &context).unwrap().as_str()); + + s + } + + fn any(&mut self) -> &mut dyn Any { + self + } +} + +impl FieldButton { + pub fn new(name: &str) -> Self { + let mut f: FieldButton = Default::default(); + + f.field.name = String::from(name); + f.field.label = String::from(name); + f.field.to_load = false; + f.field.to_save = false; + + match f.field.tmpl.add_raw_template("field", r#""#) { +Err(e) => { println!("{:?}", e) }, +_ => {}, +}; + + f + } + + pub fn get_form(&self) -> String { + String::from(&self.form) + } + + pub fn set_form(&mut self, form: &str) { + self.form = String::from(form); + } +}