From 0ff39f8cb53d90c82463cbe0bd4019ac4a37c149 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sat, 7 Oct 2023 11:25:12 +0200 Subject: [PATCH] Added File field. --- src/fields.rs | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/src/fields.rs b/src/fields.rs index 57ac335..f06b5cf 100644 --- a/src/fields.rs +++ b/src/fields.rs @@ -1140,3 +1140,164 @@ _ => {}, self.form = String::from(form); } } + +#[derive(Default)] +pub struct FieldFile { + field: Field, + accept: String, +} + +impl TField for FieldFile { + 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_class(&self) -> String { + String::from(&self.field.class) + } + + fn set_class(&mut self, class: &str) { + self.field.class = String::from(class); + } + + fn get_to_load(&self) -> bool { + self.field.to_load + } + + fn set_to_load(&mut self, load: bool) { + // always false + } + + fn get_to_save(&self) -> bool { + self.field.to_save + } + + fn set_to_save(&mut self, save: bool) { + // always false + } + + fn get_to_render(&self) -> bool { + self.field.to_render + } + + fn set_to_render(&mut self, render: bool) { + self.field.to_render = render; + } + + fn get_db_type(&self) -> FieldDbType { + self.field.db_type + } + + fn set_db_type(&mut self, db_type: FieldDbType) { + self.field.db_type = db_type; + } + + 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(); + if !self.field.to_render { + return s; + } + + 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("class", &self.field.class); + context.insert("accept", &self.accept); + s.push_str(self.field.tmpl.render("field", &context).unwrap().as_str()); + + s + } + + fn any(&mut self) -> &mut dyn Any { + self + } +} + +impl FieldFile { + pub fn new(name: &str) -> Self { + let mut f: FieldFile = Default::default(); + + f.field.name = String::from(name); + f.field.label = String::from(name); + f.field.to_render = true; + + match f.field.tmpl.add_raw_template("field", r#"{% if label %}
+ {% endif %} + + {% if help %}
{{ help }}
{% endif %} + {% if label %}
{% endif %}"#) { +Err(e) => { println!("{:?}", e) }, +_ => {}, +}; + + f + } + + pub fn get_accept(&self) -> String { + String::from(&self.accept) + } + + pub fn set_accept(&mut self, accept: &str) { + self.accept = String::from(accept); + } +} -- 2.49.0