diff --git a/src/frontend/item.rs b/src/frontend/item.rs index 1c39fbd..f6ca3dc 100644 --- a/src/frontend/item.rs +++ b/src/frontend/item.rs @@ -12,7 +12,9 @@ use serde::Deserialize; use sqlx::PgPool; use uuid::Uuid; -use super::templates::helpers::{Colour, ItemName, PageAction, PageActionGroup, PageActionMethod}; +use super::templates::helpers::{ + Colour, ItemName, ItemPreview, PageAction, PageActionGroup, PageActionMethod, +}; use super::templates::{self, datalist, forms, TemplateConfig}; use crate::manage; use crate::models::*; @@ -160,7 +162,7 @@ async fn show( ul { @for child in children { li { - a href={ "/item/" (child.id) } { (ItemName::new(child.name.as_ref(), &item_classes.get(&child.class).unwrap().name)) } + (ItemPreview::from_parts(child.id, child.name.as_ref(), &item_classes.get(&child.class).unwrap().name)) } } } @@ -172,7 +174,7 @@ async fn show( ul { @for item in original_packaging_of { li { - a href={ "/item/" (item.id) } { (ItemName::new(item.name.as_ref(), &item_classes.get(&item.class).unwrap().name)) } + (ItemPreview::from_parts(item.id, item.name.as_ref(), &item_classes.get(&item.class).unwrap().name)) } } } @@ -245,9 +247,7 @@ async fn list(pool: web::Data, user: Identity) -> actix_web::Result Self { + Self { id, name } + } + + pub fn from_parts(id: Uuid, item_name: Option<&String>, class_name: &String) -> Self { + Self { + id, + name: ItemName::new(item_name, class_name), + } + } +} + +impl Render for ItemPreview { + fn render(&self) -> Markup { + html! { + a href={ "/item/" (self.id) } { (self.name) } + } + } +} + pub enum PageActionMethod { Get, Post, @@ -236,7 +262,7 @@ pub fn parents_breadcrumb( }; @for parent in parents { li .breadcrumb-item { - a href={ "/item/" (parent.id) } { (ItemName::new(parent.name.as_ref(), &parents_item_classes.get(&parent.class).unwrap().name)) } + (ItemPreview::from_parts(parent.id, parent.name.as_ref(), &parents_item_classes.get(&parent.class).unwrap().name)) } } li .breadcrumb-item.active { (ItemName::new(item.name.as_ref(), &item_class.name)) }