Add helper for item preview
Its API currently seems not that optimised, but in the future I want to decrease the depdendencies on Item and ItemClass, so this is a step in that direction.
This commit is contained in:
parent
82c7533b4c
commit
5563cc1c9a
|
@ -12,7 +12,9 @@ use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
use uuid::Uuid;
|
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 super::templates::{self, datalist, forms, TemplateConfig};
|
||||||
use crate::manage;
|
use crate::manage;
|
||||||
use crate::models::*;
|
use crate::models::*;
|
||||||
|
@ -160,7 +162,7 @@ async fn show(
|
||||||
ul {
|
ul {
|
||||||
@for child in children {
|
@for child in children {
|
||||||
li {
|
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 {
|
ul {
|
||||||
@for item in original_packaging_of {
|
@for item in original_packaging_of {
|
||||||
li {
|
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<PgPool>, user: Identity) -> actix_web::Result<impl
|
||||||
@let class = item_classes.get(&item.class).unwrap();
|
@let class = item_classes.get(&item.class).unwrap();
|
||||||
tr {
|
tr {
|
||||||
td {
|
td {
|
||||||
a href={ "/item/" (item.id) } {
|
(ItemPreview::new(item.id, ItemName::new(item.name.as_ref(), &class.name).terse()))
|
||||||
(ItemName::new(item.name.as_ref(), &class.name).terse())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
td { a href={ "/item-class/" (class.id) } { (class.name) } }
|
td { a href={ "/item-class/" (class.id) } { (class.name) } }
|
||||||
td { (templates::helpers::parents_breadcrumb(&item, &class, item_parents.get(&item.id).unwrap(), &item_classes, false)) }
|
td { (templates::helpers::parents_breadcrumb(&item, &class, item_parents.get(&item.id).unwrap(), &item_classes, false)) }
|
||||||
|
|
|
@ -11,7 +11,9 @@ use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
use uuid::Uuid;
|
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 super::templates::{self, datalist, forms, TemplateConfig};
|
||||||
use crate::manage;
|
use crate::manage;
|
||||||
use crate::models::*;
|
use crate::models::*;
|
||||||
|
@ -153,7 +155,7 @@ async fn show(
|
||||||
ul {
|
ul {
|
||||||
@for item in items {
|
@for item in items {
|
||||||
li {
|
li {
|
||||||
a href={ "/item/" (item.id) } { (ItemName::new(item.name.as_ref(), &item_class.name).terse()) }
|
(ItemPreview::new(item.id, ItemName::new(item.name.as_ref(), &item_class.name).terse()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,6 +133,32 @@ impl Render for ItemName {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct ItemPreview {
|
||||||
|
pub id: Uuid,
|
||||||
|
pub name: ItemName,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ItemPreview {
|
||||||
|
pub fn new(id: Uuid, name: ItemName) -> 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 {
|
pub enum PageActionMethod {
|
||||||
Get,
|
Get,
|
||||||
Post,
|
Post,
|
||||||
|
@ -236,7 +262,7 @@ pub fn parents_breadcrumb(
|
||||||
};
|
};
|
||||||
@for parent in parents {
|
@for parent in parents {
|
||||||
li .breadcrumb-item {
|
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)) }
|
li .breadcrumb-item.active { (ItemName::new(item.name.as_ref(), &item_class.name)) }
|
||||||
|
|
Loading…
Reference in a new issue