♻️ Weight is a property of mixed components struct

This commit is contained in:
Manuel Cillero 2024-04-14 22:33:20 +02:00
parent 322cd9b6bf
commit 45cb063e52
23 changed files with 60 additions and 266 deletions

View file

@ -4,7 +4,6 @@ use crate::prelude::*;
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Block { pub struct Block {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
classes : OptionClasses, classes : OptionClasses,
style : StyleBase, style : StyleBase,
@ -21,10 +20,6 @@ impl ComponentTrait for Block {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -65,12 +60,6 @@ impl Block {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -4,7 +4,6 @@ use crate::prelude::*;
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct Branding { pub struct Branding {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
#[default(_code = "config::SETTINGS.app.name.to_owned()")] #[default(_code = "config::SETTINGS.app.name.to_owned()")]
app_name : String, app_name : String,
@ -23,10 +22,6 @@ impl ComponentTrait for Branding {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -68,12 +63,6 @@ impl Branding {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -14,7 +14,6 @@ pub enum ButtonTarget {
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Button { pub struct Button {
id : OptionId, id : OptionId,
weight : Weight,
renderable : Renderable, renderable : Renderable,
classes : OptionClasses, classes : OptionClasses,
style : StyleBase, style : StyleBase,
@ -35,10 +34,6 @@ impl ComponentTrait for Button {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -92,12 +87,6 @@ impl Button {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -15,7 +15,6 @@ pub enum ContainerType {
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Container { pub struct Container {
id : OptionId, id : OptionId,
weight : Weight,
renderable : Renderable, renderable : Renderable,
classes : OptionClasses, classes : OptionClasses,
container_type: ContainerType, container_type: ContainerType,
@ -36,10 +35,6 @@ impl ComponentTrait for Container {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -149,12 +144,6 @@ impl Container {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -13,7 +13,6 @@ pub enum ItemType {
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Item { pub struct Item {
id : OptionId, id : OptionId,
weight : Weight,
renderable : Renderable, renderable : Renderable,
classes : OptionClasses, classes : OptionClasses,
item_type : ItemType, item_type : ItemType,
@ -34,10 +33,6 @@ impl ComponentTrait for Item {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -72,20 +67,16 @@ impl ComponentTrait for Item {
if output.is_empty() && region.is_empty() { if output.is_empty() && region.is_empty() {
return PrepareMarkup::None; return PrepareMarkup::None;
} }
let order = match self.weight() {
0 => None,
_ => Some(concat_string!("order: ", self.weight().to_string(), ";")),
};
match self.item_type() { match self.item_type() {
ItemType::Default => PrepareMarkup::With(html! { ItemType::Default => PrepareMarkup::With(html! {
div id=[self.id()] class=[self.classes().get()] style=[order] { div id=[self.id()] class=[self.classes().get()] {
div class="flex__content" { div class="flex__content" {
(output) (output)
} }
} }
}), }),
ItemType::Region => PrepareMarkup::With(html! { ItemType::Region => PrepareMarkup::With(html! {
div id=[self.id()] class=[self.classes().get()] style=[order] { div id=[self.id()] class=[self.classes().get()] {
div class="flex__content flex__region" { div class="flex__content flex__region" {
(region) (region)
(output) (output)
@ -93,7 +84,7 @@ impl ComponentTrait for Item {
} }
}), }),
ItemType::Wrapper => PrepareMarkup::With(html! { ItemType::Wrapper => PrepareMarkup::With(html! {
div id=[self.id()] class=[self.classes().get()] style=[order] { div id=[self.id()] class=[self.classes().get()] {
(output) (output)
} }
}), }),
@ -138,12 +129,6 @@ impl Item {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -20,7 +20,6 @@ impl ToString for ActionButtonType {
#[rustfmt::skip] #[rustfmt::skip]
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct ActionButton { pub struct ActionButton {
weight : Weight,
renderable : Renderable, renderable : Renderable,
classes : OptionClasses, classes : OptionClasses,
button_type: ActionButtonType, button_type: ActionButtonType,
@ -39,10 +38,6 @@ impl ComponentTrait for ActionButton {
ActionButton::submit() ActionButton::submit()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -100,12 +95,6 @@ impl ActionButton {
// Button BUILDER. // Button BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -3,7 +3,6 @@ use crate::prelude::*;
#[rustfmt::skip] #[rustfmt::skip]
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Date { pub struct Date {
weight : Weight,
renderable : Renderable, renderable : Renderable,
classes : OptionClasses, classes : OptionClasses,
name : OptionString, name : OptionString,
@ -23,10 +22,6 @@ impl ComponentTrait for Date {
Date::default().with_classes(ClassesOp::Add, "form-item form-type-date") Date::default().with_classes(ClassesOp::Add, "form-item form-type-date")
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -68,12 +63,6 @@ impl ComponentTrait for Date {
impl Date { impl Date {
// Date BUILDER. // Date BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -11,7 +11,6 @@ pub enum FormMethod {
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Form { pub struct Form {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
classes : OptionClasses, classes : OptionClasses,
action : OptionString, action : OptionString,
@ -31,10 +30,6 @@ impl ComponentTrait for Form {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -67,12 +62,6 @@ impl Form {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -3,7 +3,6 @@ use crate::prelude::*;
#[rustfmt::skip] #[rustfmt::skip]
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct Hidden { pub struct Hidden {
weight: Weight,
name : OptionName, name : OptionName,
value : OptionString, value : OptionString,
} }
@ -13,10 +12,6 @@ impl ComponentTrait for Hidden {
Hidden::default() Hidden::default()
} }
fn weight(&self) -> Weight {
self.weight
}
fn prepare_component(&self, _cx: &mut Context) -> PrepareMarkup { fn prepare_component(&self, _cx: &mut Context) -> PrepareMarkup {
let id = self.name().get().map(|name| concat_string!("value-", name)); let id = self.name().get().map(|name| concat_string!("value-", name));
PrepareMarkup::With(html! { PrepareMarkup::With(html! {
@ -32,12 +27,6 @@ impl Hidden {
// Hidden BUILDER. // Hidden BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_name(&mut self, name: &str) -> &mut Self { pub fn alter_name(&mut self, name: &str) -> &mut Self {
self.name.alter_value(name); self.name.alter_value(name);

View file

@ -14,7 +14,6 @@ pub enum InputType {
#[rustfmt::skip] #[rustfmt::skip]
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Input { pub struct Input {
weight : Weight,
renderable : Renderable, renderable : Renderable,
classes : OptionClasses, classes : OptionClasses,
input_type : InputType, input_type : InputType,
@ -41,10 +40,6 @@ impl ComponentTrait for Input {
.with_maxlength(Some(128)) .with_maxlength(Some(128))
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -147,12 +142,6 @@ impl Input {
// Input BUILDER. // Input BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -42,7 +42,6 @@ impl ToString for HeadingSize {
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Heading { pub struct Heading {
id : OptionId, id : OptionId,
weight : Weight,
renderable : Renderable, renderable : Renderable,
classes : OptionClasses, classes : OptionClasses,
heading_type: HeadingType, heading_type: HeadingType,
@ -59,10 +58,6 @@ impl ComponentTrait for Heading {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -131,12 +126,6 @@ impl Heading {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -3,7 +3,6 @@ use crate::prelude::*;
#[rustfmt::skip] #[rustfmt::skip]
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Icon { pub struct Icon {
weight : Weight,
renderable: Renderable, renderable: Renderable,
classes : OptionClasses, classes : OptionClasses,
icon_name : OptionString, icon_name : OptionString,
@ -15,10 +14,6 @@ impl ComponentTrait for Icon {
Icon::default() Icon::default()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -48,12 +43,6 @@ impl Icon {
// Icon BUILDER. // Icon BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -17,7 +17,6 @@ pub enum ImageSize {
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Image { pub struct Image {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
classes : OptionClasses, classes : OptionClasses,
source : OptionString, source : OptionString,
@ -33,10 +32,6 @@ impl ComponentTrait for Image {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -88,12 +83,6 @@ impl Image {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -18,7 +18,6 @@ pub enum ElementType {
#[rustfmt::skip] #[rustfmt::skip]
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct Element { pub struct Element {
weight : Weight,
renderable : Renderable, renderable : Renderable,
element_type: ElementType, element_type: ElementType,
} }
@ -28,10 +27,6 @@ impl ComponentTrait for Element {
Element::default() Element::default()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -66,12 +61,6 @@ impl Element {
// Element BUILDER. // Element BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -6,7 +6,6 @@ use super::Element;
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct Group { pub struct Group {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
elements : MixedComponents, elements : MixedComponents,
} }
@ -20,10 +19,6 @@ impl ComponentTrait for Group {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -46,12 +41,6 @@ impl Group {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -24,7 +24,6 @@ pub enum ItemType {
#[rustfmt::skip] #[rustfmt::skip]
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct Item { pub struct Item {
weight : Weight,
renderable : Renderable, renderable : Renderable,
item_type : ItemType, item_type : ItemType,
description: OptionTranslated, description: OptionTranslated,
@ -37,10 +36,6 @@ impl ComponentTrait for Item {
Item::default() Item::default()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -156,12 +151,6 @@ impl Item {
// Item BUILDER. // Item BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -6,7 +6,6 @@ use super::Group;
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct Megamenu { pub struct Megamenu {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
groups : MixedComponents, groups : MixedComponents,
} }
@ -20,10 +19,6 @@ impl ComponentTrait for Megamenu {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -46,12 +41,6 @@ impl Megamenu {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -6,7 +6,6 @@ use super::Item;
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct Menu { pub struct Menu {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
items : MixedComponents, items : MixedComponents,
} }
@ -20,10 +19,6 @@ impl ComponentTrait for Menu {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -74,12 +69,6 @@ impl Menu {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -6,7 +6,6 @@ use super::Item;
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct Submenu { pub struct Submenu {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
title : OptionTranslated, title : OptionTranslated,
items : MixedComponents, items : MixedComponents,
@ -21,10 +20,6 @@ impl ComponentTrait for Submenu {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -52,12 +47,6 @@ impl Submenu {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -4,7 +4,6 @@ use crate::prelude::*;
#[derive(AutoDefault, ComponentClasses)] #[derive(AutoDefault, ComponentClasses)]
pub struct Paragraph { pub struct Paragraph {
id : OptionId, id : OptionId,
weight : Weight,
renderable: Renderable, renderable: Renderable,
classes : OptionClasses, classes : OptionClasses,
font_size : FontSize, font_size : FontSize,
@ -20,10 +19,6 @@ impl ComponentTrait for Paragraph {
self.id.get() self.id.get()
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -61,12 +56,6 @@ impl Paragraph {
self self
} }
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -13,7 +13,6 @@ pub enum PoweredByLogo {
#[rustfmt::skip] #[rustfmt::skip]
#[derive(AutoDefault)] #[derive(AutoDefault)]
pub struct PoweredBy { pub struct PoweredBy {
weight : Weight,
renderable: Renderable, renderable: Renderable,
copyright : Option<String>, copyright : Option<String>,
logo : PoweredByLogo, logo : PoweredByLogo,
@ -29,10 +28,6 @@ impl ComponentTrait for PoweredBy {
} }
} }
fn weight(&self) -> Weight {
self.weight
}
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
(self.renderable.check)(cx) (self.renderable.check)(cx)
} }
@ -67,12 +62,6 @@ impl ComponentTrait for PoweredBy {
impl PoweredBy { impl PoweredBy {
// PoweredBy BUILDER. // PoweredBy BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
}
#[fn_builder] #[fn_builder]
pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self {
self.renderable.check = check; self.renderable.check = check;

View file

@ -3,7 +3,6 @@ use crate::core::component::Context;
use crate::core::AnyBase; use crate::core::AnyBase;
use crate::html::{html, Markup, PrepareMarkup}; use crate::html::{html, Markup, PrepareMarkup};
use crate::util::TypeInfo; use crate::util::TypeInfo;
use crate::Weight;
pub trait ComponentBase { pub trait ComponentBase {
fn render(&mut self, cx: &mut Context) -> Markup; fn render(&mut self, cx: &mut Context) -> Markup;
@ -26,10 +25,6 @@ pub trait ComponentTrait: AnyBase + ComponentBase + Send + Sync {
None None
} }
fn weight(&self) -> Weight {
0
}
#[allow(unused_variables)] #[allow(unused_variables)]
fn is_renderable(&self, cx: &Context) -> bool { fn is_renderable(&self, cx: &Context) -> bool {
true true

View file

@ -5,83 +5,117 @@ use crate::{fn_builder, TypeId, Weight};
use std::sync::{Arc, RwLock, RwLockReadGuard, RwLockWriteGuard}; use std::sync::{Arc, RwLock, RwLockReadGuard, RwLockWriteGuard};
#[derive(Clone)] #[derive(Clone)]
pub struct AnyComponent(Arc<RwLock<dyn ComponentTrait>>); pub struct AnyComponent {
weight: Weight,
component: Arc<RwLock<dyn ComponentTrait>>,
}
impl AnyComponent { impl AnyComponent {
pub fn with(component: impl ComponentTrait) -> Self { pub fn with(component: impl ComponentTrait) -> Self {
AnyComponent(Arc::new(RwLock::new(component))) AnyComponent {
weight: Weight::default(),
component: Arc::new(RwLock::new(component)),
}
} }
// AnyComponent BUILDER. // AnyComponent BUILDER.
pub fn set(&mut self, component: impl ComponentTrait) { #[fn_builder]
self.0 = Arc::new(RwLock::new(component)); pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
} }
// AnyComponent GETTERS. // AnyComponent GETTERS.
pub fn weight(&self) -> Weight {
self.weight
}
pub fn get(&self) -> RwLockReadGuard<'_, dyn ComponentTrait> { pub fn get(&self) -> RwLockReadGuard<'_, dyn ComponentTrait> {
self.0.read().unwrap() self.component.read().unwrap()
} }
pub fn get_mut(&self) -> RwLockWriteGuard<'_, dyn ComponentTrait> { pub fn get_mut(&self) -> RwLockWriteGuard<'_, dyn ComponentTrait> {
self.0.write().unwrap() self.component.write().unwrap()
} }
// AnyComponent RENDER. // AnyComponent RENDER.
pub fn render(&self, cx: &mut Context) -> Markup { pub fn render(&self, cx: &mut Context) -> Markup {
self.0.write().unwrap().render(cx) self.component.write().unwrap().render(cx)
} }
// AnyComponent HELPERS. // AnyComponent HELPERS.
fn type_id(&self) -> TypeId { fn type_id(&self) -> TypeId {
self.0.read().unwrap().type_id() self.component.read().unwrap().type_id()
} }
fn id(&self) -> String { fn id(&self) -> String {
self.0.read().unwrap().id().unwrap_or_default() self.component.read().unwrap().id().unwrap_or_default()
}
fn weight(&self) -> Weight {
self.0.read().unwrap().weight()
} }
} }
// ************************************************************************************************* // *************************************************************************************************
pub struct TypedComponent<C: ComponentTrait>(Arc<RwLock<C>>); pub struct TypedComponent<C: ComponentTrait> {
weight: Weight,
component: Arc<RwLock<C>>,
}
impl<C: ComponentTrait> Clone for TypedComponent<C> { impl<C: ComponentTrait> Clone for TypedComponent<C> {
fn clone(&self) -> Self { fn clone(&self) -> Self {
Self(self.0.clone()) Self {
weight: self.weight.clone(),
component: self.component.clone(),
}
} }
} }
impl<C: ComponentTrait> TypedComponent<C> { impl<C: ComponentTrait> TypedComponent<C> {
pub fn with(component: C) -> Self { pub fn with(component: C) -> Self {
TypedComponent(Arc::new(RwLock::new(component))) TypedComponent {
weight: Weight::default(),
component: Arc::new(RwLock::new(component)),
}
}
// TypedComponent BUILDER.
#[fn_builder]
pub fn alter_weight(&mut self, value: Weight) -> &mut Self {
self.weight = value;
self
} }
// TypedComponent GETTERS. // TypedComponent GETTERS.
pub fn weight(&self) -> Weight {
self.weight
}
pub fn get(&self) -> RwLockReadGuard<'_, C> { pub fn get(&self) -> RwLockReadGuard<'_, C> {
self.0.read().unwrap() self.component.read().unwrap()
} }
pub fn get_mut(&self) -> RwLockWriteGuard<'_, C> { pub fn get_mut(&self) -> RwLockWriteGuard<'_, C> {
self.0.write().unwrap() self.component.write().unwrap()
}
fn to_any(&self) -> AnyComponent {
AnyComponent(self.0.clone())
} }
// TypedComponent RENDER. // TypedComponent RENDER.
pub fn render(&self, cx: &mut Context) -> Markup { pub fn render(&self, cx: &mut Context) -> Markup {
self.0.write().unwrap().render(cx) self.component.write().unwrap().render(cx)
}
// TypedComponent HELPERS.
fn to_any(&self) -> AnyComponent {
AnyComponent {
weight: self.weight.clone(),
component: self.component.clone(),
}
} }
} }