Use ItemPreview for parent breadcrumbs
This commit is contained in:
parent
5563cc1c9a
commit
bb011cf84a
|
@ -127,7 +127,16 @@ async fn show(
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Parents" }
|
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::<Vec<ItemPreview>>(),
|
||||||
|
true
|
||||||
|
))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Original Packaging" }
|
th { "Original Packaging" }
|
||||||
|
@ -245,12 +254,22 @@ async fn list(pool: web::Data<PgPool>, user: Identity) -> actix_web::Result<impl
|
||||||
tbody {
|
tbody {
|
||||||
@for item in item_list {
|
@for item in item_list {
|
||||||
@let class = item_classes.get(&item.class).unwrap();
|
@let class = item_classes.get(&item.class).unwrap();
|
||||||
|
@let parents = item_parents.get(&item.id).unwrap();
|
||||||
tr {
|
tr {
|
||||||
td {
|
td {
|
||||||
(ItemPreview::new(item.id, ItemName::new(item.name.as_ref(), &class.name).terse()))
|
(ItemPreview::new(item.id, 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(
|
||||||
|
ItemName::new(
|
||||||
|
item.name.as_ref(),
|
||||||
|
&class.name
|
||||||
|
),
|
||||||
|
&parents.iter().map(|parent| ItemPreview::from_parts(parent.id, parent.name.as_ref(), &item_classes.get(&parent.class).unwrap().name)).collect::<Vec<ItemPreview>>(),
|
||||||
|
false
|
||||||
|
))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::fmt::{self, Display};
|
use std::fmt::{self, Display};
|
||||||
|
|
||||||
use crate::label::LabelPreset;
|
use crate::label::LabelPreset;
|
||||||
|
@ -241,13 +240,7 @@ impl PageActionGroup {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parents_breadcrumb(
|
pub fn parents_breadcrumb(name: ItemName, parents: &[ItemPreview], full: bool) -> Markup {
|
||||||
item: &Item,
|
|
||||||
item_class: &ItemClass,
|
|
||||||
parents: &[Item],
|
|
||||||
parents_item_classes: &HashMap<Uuid, ItemClass>,
|
|
||||||
full: bool,
|
|
||||||
) -> Markup {
|
|
||||||
const LIMIT: usize = 3;
|
const LIMIT: usize = 3;
|
||||||
|
|
||||||
html! {
|
html! {
|
||||||
|
@ -255,17 +248,17 @@ pub fn parents_breadcrumb(
|
||||||
@if !full && parents.len() > LIMIT {
|
@if !full && parents.len() > LIMIT {
|
||||||
li .breadcrumb-item { "…" }
|
li .breadcrumb-item { "…" }
|
||||||
}
|
}
|
||||||
@let parents: Box<dyn Iterator<Item = &Item>> = if full {
|
@let parents: Box<dyn Iterator<Item = &ItemPreview>> = if full {
|
||||||
Box::new(parents.iter())
|
Box::new(parents.iter())
|
||||||
} else {
|
} else {
|
||||||
Box::new(parents.iter().rev().take(LIMIT).rev())
|
Box::new(parents.iter().rev().take(LIMIT).rev())
|
||||||
};
|
};
|
||||||
@for parent in parents {
|
@for parent in parents {
|
||||||
li .breadcrumb-item {
|
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) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue