From bb011cf84a9db156ecca116bad2d4f7676203bbf Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 21 Jul 2024 15:26:39 +0200 Subject: [PATCH] Use ItemPreview for parent breadcrumbs --- src/frontend/item.rs | 23 +++++++++++++++++++++-- src/frontend/templates/helpers.rs | 15 ++++----------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/frontend/item.rs b/src/frontend/item.rs index f6ca3dc..5882d9a 100644 --- a/src/frontend/item.rs +++ b/src/frontend/item.rs @@ -127,7 +127,16 @@ async fn show( } tr { th { "Parents" } - td { (templates::helpers::parents_breadcrumb(&item, &item_class, &parents, &item_classes, true)) } + td { + (templates::helpers::parents_breadcrumb( + ItemName::new( + item.name.as_ref(), + &item_class.name + ), + &parents.iter().map(|parent| ItemPreview::from_parts(parent.id, parent.name.as_ref(), &item_classes.get(&parent.class).unwrap().name)).collect::>(), + true + )) + } } tr { th { "Original Packaging" } @@ -245,12 +254,22 @@ async fn list(pool: web::Data, user: Identity) -> actix_web::Result>(), + false + )) + } } } } diff --git a/src/frontend/templates/helpers.rs b/src/frontend/templates/helpers.rs index 80b91d8..7898733 100644 --- a/src/frontend/templates/helpers.rs +++ b/src/frontend/templates/helpers.rs @@ -2,7 +2,6 @@ // // SPDX-License-Identifier: AGPL-3.0-or-later -use std::collections::HashMap; use std::fmt::{self, Display}; use crate::label::LabelPreset; @@ -241,13 +240,7 @@ impl PageActionGroup { } } -pub fn parents_breadcrumb( - item: &Item, - item_class: &ItemClass, - parents: &[Item], - parents_item_classes: &HashMap, - full: bool, -) -> Markup { +pub fn parents_breadcrumb(name: ItemName, parents: &[ItemPreview], full: bool) -> Markup { const LIMIT: usize = 3; html! { @@ -255,17 +248,17 @@ pub fn parents_breadcrumb( @if !full && parents.len() > LIMIT { li .breadcrumb-item { "…" } } - @let parents: Box> = if full { + @let parents: Box> = if full { Box::new(parents.iter()) } else { Box::new(parents.iter().rev().take(LIMIT).rev()) }; @for parent in parents { li .breadcrumb-item { - (ItemPreview::from_parts(parent.id, parent.name.as_ref(), &parents_item_classes.get(&parent.class).unwrap().name)) + (parent) } } - li .breadcrumb-item.active { (ItemName::new(item.name.as_ref(), &item_class.name)) } + li .breadcrumb-item.active { (name) } } } }