Modifica PageAssets para ser simplemente Assets

This commit is contained in:
Manuel Cillero 2022-05-06 00:55:47 +02:00
parent d53408c6b6
commit fce106af7a
20 changed files with 35 additions and 35 deletions

View file

@ -1,10 +1,10 @@
use crate::api::action::{ActionTrait, AnyAction}; use crate::api::action::{ActionTrait, AnyAction};
use super::{ComponentTrait, PageAssets}; use super::{Assets, ComponentTrait};
pub const ACTION_BEFORE_RENDER_COMPONENT: &str = "pagetop::render::before_render_component"; pub const ACTION_BEFORE_RENDER_COMPONENT: &str = "pagetop::render::before_render_component";
pub struct ActionBeforeRenderComponent { pub struct ActionBeforeRenderComponent {
action: Option<fn(&mut dyn ComponentTrait, &mut PageAssets)>, action: Option<fn(&mut dyn ComponentTrait, &mut Assets)>,
weight: isize, weight: isize,
} }
@ -30,7 +30,7 @@ impl ActionTrait for ActionBeforeRenderComponent {
} }
impl ActionBeforeRenderComponent { impl ActionBeforeRenderComponent {
pub fn with_action(mut self, action: fn(&mut dyn ComponentTrait, &mut PageAssets)) -> Self { pub fn with_action(mut self, action: fn(&mut dyn ComponentTrait, &mut Assets)) -> Self {
self.action = Some(action); self.action = Some(action);
self self
} }
@ -40,7 +40,7 @@ impl ActionBeforeRenderComponent {
self self
} }
pub fn run(&self, component: &mut dyn ComponentTrait, assets: &mut PageAssets) { pub fn run(&self, component: &mut dyn ComponentTrait, assets: &mut Assets) {
if let Some(action) = self.action { if let Some(action) = self.action {
action(component, assets) action(component, assets)
} }

View file

@ -173,7 +173,7 @@ impl JavaScript {
// Page assets. // Page assets.
pub struct PageAssets { pub struct Assets {
theme : &'static dyn ThemeTrait, theme : &'static dyn ThemeTrait,
favicon : Option<Favicon>, favicon : Option<Favicon>,
metadata : Vec<(String, String)>, metadata : Vec<(String, String)>,
@ -183,9 +183,9 @@ pub struct PageAssets {
id_counter : usize, id_counter : usize,
} }
impl PageAssets { impl Assets {
pub fn new() -> Self { pub fn new() -> Self {
PageAssets { Assets {
theme : *DEFAULT_THEME, theme : *DEFAULT_THEME,
favicon : None, favicon : None,
metadata : Vec::new(), metadata : Vec::new(),

View file

@ -2,7 +2,7 @@ use crate::html::{Markup, html};
use crate::api::action::{action_ref, run_actions}; use crate::api::action::{action_ref, run_actions};
use crate::util; use crate::util;
use super::{ACTION_BEFORE_RENDER_COMPONENT, ActionBeforeRenderComponent}; use super::{ACTION_BEFORE_RENDER_COMPONENT, ActionBeforeRenderComponent};
use super::PageAssets; use super::Assets;
pub use std::any::Any as AnyComponent; pub use std::any::Any as AnyComponent;
@ -35,11 +35,11 @@ pub trait ComponentTrait: AnyComponent + BaseComponent + Send + Sync {
} }
#[allow(unused_variables)] #[allow(unused_variables)]
fn before_render(&mut self, assets: &mut PageAssets) { fn before_render(&mut self, assets: &mut Assets) {
} }
#[allow(unused_variables)] #[allow(unused_variables)]
fn default_render(&self, assets: &mut PageAssets) -> Markup { fn default_render(&self, assets: &mut Assets) -> Markup {
html! {} html! {}
} }
@ -70,7 +70,7 @@ pub fn component_mut<C: 'static>(component: &mut dyn ComponentTrait) -> &mut C {
component.as_mut_any().downcast_mut::<C>().unwrap() component.as_mut_any().downcast_mut::<C>().unwrap()
} }
pub fn render_component(component: &mut dyn ComponentTrait, assets: &mut PageAssets) -> Markup { pub fn render_component(component: &mut dyn ComponentTrait, assets: &mut Assets) -> Markup {
// Acciones del componente antes de renderizar. // Acciones del componente antes de renderizar.
component.before_render(assets); component.before_render(assets);

View file

@ -1,5 +1,5 @@
use crate::html::{Markup, html}; use crate::html::{Markup, html};
use super::{ComponentTrait, PageAssets}; use super::{Assets, ComponentTrait};
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
@ -21,7 +21,7 @@ impl ComponentsHolder {
self.0.push(Arc::new(RwLock::new(component))); self.0.push(Arc::new(RwLock::new(component)));
} }
pub fn render(&self, assets: &mut PageAssets) -> Markup { pub fn render(&self, assets: &mut Assets) -> Markup {
let mut components = self.0.clone(); let mut components = self.0.clone();
components.sort_by_key(|c| c.read().unwrap().weight()); components.sort_by_key(|c| c.read().unwrap().weight());
html! { html! {

View file

@ -6,10 +6,10 @@ pub use action::{
mod assets; mod assets;
pub use assets::{ pub use assets::{
Assets,
Favicon, Favicon,
StyleSheet, StyleSheet,
JavaScript, JSMode, JavaScript, JSMode,
PageAssets,
}; };
mod definition; mod definition;

View file

@ -1,7 +1,7 @@
use crate::{app, concat_string}; use crate::{app, concat_string};
use crate::config::SETTINGS; use crate::config::SETTINGS;
use crate::html::{Markup, html}; use crate::html::{Markup, html};
use crate::api::component::{ComponentTrait, Favicon, PageAssets}; use crate::api::component::{Assets, ComponentTrait, Favicon};
use crate::response::page::Page; use crate::response::page::Page;
use crate::base::component::Chunck; use crate::base::component::Chunck;
use crate::util; use crate::util;
@ -88,7 +88,7 @@ pub trait ThemeTrait: BaseTheme + Send + Sync {
fn before_render_component( fn before_render_component(
&self, &self,
component: &mut dyn ComponentTrait, component: &mut dyn ComponentTrait,
assets: &mut PageAssets assets: &mut Assets
) { ) {
/* /*
Cómo usarlo: Cómo usarlo:
@ -107,7 +107,7 @@ pub trait ThemeTrait: BaseTheme + Send + Sync {
fn render_component( fn render_component(
&self, &self,
component: &dyn ComponentTrait, component: &dyn ComponentTrait,
assets: &mut PageAssets assets: &mut Assets
) -> Option<Markup> { ) -> Option<Markup> {
None None
/* /*

View file

@ -33,7 +33,7 @@ impl ComponentTrait for Block {
self.weight self.weight
} }
fn default_render(&self, assets: &mut PageAssets) -> Markup { fn default_render(&self, assets: &mut Assets) -> Markup {
let id = assets.serial_id(self.single_name(), self.id()); let id = assets.serial_id(self.single_name(), self.id());
html! { html! {
div id=(id) class=[self.classes()] { div id=(id) class=[self.classes()] {

View file

@ -27,7 +27,7 @@ impl ComponentTrait for Chunck {
self.weight self.weight
} }
fn default_render(&self, _: &mut PageAssets) -> Markup { fn default_render(&self, _: &mut Assets) -> Markup {
html! { (*self.html()) } html! { (*self.html()) }
} }

View file

@ -37,7 +37,7 @@ impl ComponentTrait for Container {
self.weight self.weight
} }
fn default_render(&self, assets: &mut PageAssets) -> Markup { fn default_render(&self, assets: &mut Assets) -> Markup {
match self.container_type() { match self.container_type() {
ContainerType::Header => html! { ContainerType::Header => html! {
header id=[self.id()] class=[self.classes()] { header id=[self.id()] class=[self.classes()] {

View file

@ -40,7 +40,7 @@ impl ComponentTrait for Button {
self.weight self.weight
} }
fn default_render(&self, _: &mut PageAssets) -> Markup { fn default_render(&self, _: &mut Assets) -> Markup {
let button_type = match self.button_type() { let button_type = match self.button_type() {
ButtonType::Button => "button", ButtonType::Button => "button",
ButtonType::Reset => "reset", ButtonType::Reset => "reset",

View file

@ -48,7 +48,7 @@ impl ComponentTrait for Date {
self.weight self.weight
} }
fn default_render(&self, _: &mut PageAssets) -> Markup { fn default_render(&self, _: &mut Assets) -> Markup {
let id = match self.name() { let id = match self.name() {
Some(name) => Some(concat_string!("edit-", name)), Some(name) => Some(concat_string!("edit-", name)),
None => None, None => None,

View file

@ -39,7 +39,7 @@ impl ComponentTrait for Form {
self.weight self.weight
} }
fn default_render(&self, assets: &mut PageAssets) -> Markup { fn default_render(&self, assets: &mut Assets) -> Markup {
let method = match self.method() { let method = match self.method() {
FormMethod::Get => None, FormMethod::Get => None,
FormMethod::Post => Some("post".to_owned()) FormMethod::Post => Some("post".to_owned())

View file

@ -21,7 +21,7 @@ impl ComponentTrait for Hidden {
self.weight self.weight
} }
fn default_render(&self, _: &mut PageAssets) -> Markup { fn default_render(&self, _: &mut Assets) -> Markup {
let id = match self.name() { let id = match self.name() {
Some(name) => Some(concat_string!("value-", name)), Some(name) => Some(concat_string!("value-", name)),
_ => None _ => None

View file

@ -58,14 +58,14 @@ impl ComponentTrait for Input {
self.weight self.weight
} }
fn before_render(&mut self, _: &mut PageAssets) { fn before_render(&mut self, _: &mut Assets) {
if let Some(name) = self.name() { if let Some(name) = self.name() {
let class = concat_string!("form-item-", name); let class = concat_string!("form-item-", name);
self.alter_classes(class.as_str(), ClassesOp::AddFirst); self.alter_classes(class.as_str(), ClassesOp::AddFirst);
} }
} }
fn default_render(&self, _: &mut PageAssets) -> Markup { fn default_render(&self, _: &mut Assets) -> Markup {
let type_input = match self.input_type() { let type_input = match self.input_type() {
InputType::Email => "email", InputType::Email => "email",
InputType::Password => "password", InputType::Password => "password",

View file

@ -31,7 +31,7 @@ impl ComponentTrait for Column {
self.weight self.weight
} }
fn default_render(&self, assets: &mut PageAssets) -> Markup { fn default_render(&self, assets: &mut Assets) -> Markup {
html! { html! {
div id=[self.id()] class=[self.classes()] { div id=[self.id()] class=[self.classes()] {
(self.components().render(assets)) (self.components().render(assets))

View file

@ -31,7 +31,7 @@ impl ComponentTrait for Row {
self.weight self.weight
} }
fn default_render(&self, assets: &mut PageAssets) -> Markup { fn default_render(&self, assets: &mut Assets) -> Markup {
html! { html! {
div id=[self.id()] class=[self.classes()] { div id=[self.id()] class=[self.classes()] {
(self.columns().render(assets)) (self.columns().render(assets))

View file

@ -31,7 +31,7 @@ impl ComponentTrait for Image {
self.weight self.weight
} }
fn default_render(&self, _: &mut PageAssets) -> Markup { fn default_render(&self, _: &mut Assets) -> Markup {
html! { html! {
img img
src=[self.source()] src=[self.source()]

View file

@ -38,7 +38,7 @@ impl ComponentTrait for MenuItem {
self.weight self.weight
} }
fn default_render(&self, assets: &mut PageAssets) -> Markup { fn default_render(&self, assets: &mut Assets) -> Markup {
match self.item_type() { match self.item_type() {
MenuItemType::Label(label) => html! { MenuItemType::Label(label) => html! {
li class="label" { a href="#" { (label) } } li class="label" { a href="#" { (label) } }
@ -198,7 +198,7 @@ impl ComponentTrait for Menu {
self.weight self.weight
} }
fn default_render(&self, assets: &mut PageAssets) -> Markup { fn default_render(&self, assets: &mut Assets) -> Markup {
assets assets
.add_stylesheet(StyleSheet::source( .add_stylesheet(StyleSheet::source(
"/theme/menu/css/menu.css?ver=1.1.1" "/theme/menu/css/menu.css?ver=1.1.1"

View file

@ -27,7 +27,7 @@ impl ThemeTrait for Bulmix {
fn before_render_component( fn before_render_component(
&self, &self,
component: &mut dyn ComponentTrait, component: &mut dyn ComponentTrait,
_assets: &mut PageAssets _assets: &mut Assets
) { ) {
match component.type_name() { match component.type_name() {
grid::TYPENAME_ROW => { grid::TYPENAME_ROW => {

View file

@ -41,7 +41,7 @@ pub struct Page<'a> {
direction : OptAttr, direction : OptAttr,
title : OptAttr, title : OptAttr,
description : OptAttr, description : OptAttr,
assets : PageAssets, assets : Assets,
regions : HashMap<&'a str, ComponentsHolder>, regions : HashMap<&'a str, ComponentsHolder>,
body_classes: Classes, body_classes: Classes,
template : String, template : String,
@ -61,7 +61,7 @@ impl<'a> Page<'a> {
}, },
title : OptAttr::new(), title : OptAttr::new(),
description : OptAttr::new(), description : OptAttr::new(),
assets : PageAssets::new(), assets : Assets::new(),
regions : common_components(), regions : common_components(),
body_classes: Classes::new_with_default("body"), body_classes: Classes::new_with_default("body"),
template : "default".to_owned(), template : "default".to_owned(),
@ -135,7 +135,7 @@ impl<'a> Page<'a> {
self.description.option() self.description.option()
} }
pub fn assets(&mut self) -> &mut PageAssets { pub fn assets(&mut self) -> &mut Assets {
&mut self.assets &mut self.assets
} }