[pdm-devel] [PATCH datacenter-manager v5 21/26] ui: resource tree: move error message into first column
Dominik Csapak
d.csapak at proxmox.com
Wed Nov 26 16:18:14 CET 2025
this makes the 'node' column much more predictable, so we
can set a fixed width that should be enough for most nodenames instead
of using up much space (double than the 'id' one).
To properly display the error, we can use the 'colspan' attribute when
we use `render_cell` in the first column.
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
ui/src/widget/resource_tree.rs | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/ui/src/widget/resource_tree.rs b/ui/src/widget/resource_tree.rs
index 8ad2ba7e..795e9f49 100644
--- a/ui/src/widget/resource_tree.rs
+++ b/ui/src/widget/resource_tree.rs
@@ -13,8 +13,8 @@ use pwt::{
state::{Selection, TreeStore},
widget::{
data_table::{
- DataTable, DataTableColumn, DataTableHeader, DataTableKeyboardEvent,
- DataTableMouseEvent,
+ DataTable, DataTableCellRenderArgs, DataTableColumn, DataTableHeader,
+ DataTableKeyboardEvent, DataTableMouseEvent,
},
ActionIcon, Column, Container, Fa, Panel, Progress, Row, Tooltip,
},
@@ -312,8 +312,10 @@ fn columns(
DataTableColumn::new(tr!("ID"))
.tree_column(store)
.flex(1)
- .render(|item: &PdmTreeEntry| {
- let (icon, text, tooltip) = match item {
+ .render_cell(|args: &mut DataTableCellRenderArgs<PdmTreeEntry>| {
+ let item = args.record();
+ let mut colspan = false;
+ let (icon, text, tooltip) = match &item {
PdmTreeEntry::Root => (
Container::new().with_child(Fa::new("server").fixed_width()),
String::from("root"),
@@ -331,24 +333,32 @@ fn columns(
.with_optional_child(err.is_some().then_some(
Fa::from(Status::Error).fixed_width().class("status-icon"),
)),
- remote.clone(),
+ match err {
+ Some(err) => {
+ colspan = true;
+ format!("{remote} - {err}").into()
+ }
+ None => remote.into(),
+ },
err.as_ref().map(|err| err.to_string()),
),
};
+ if colspan {
+ args.set_attribute("colspan", "2");
+ }
Tooltip::new(Row::new().gap(4).with_child(icon).with_child(text))
.tip(tooltip)
.into()
})
.into(),
- DataTableColumn::new(tr!("Node/Error"))
- .flex(2)
+ DataTableColumn::new("Node")
+ .width("150px")
.render(|item: &PdmTreeEntry| {
match item {
PdmTreeEntry::Root => "",
PdmTreeEntry::Resource(_, resource) => {
get_resource_node(resource).unwrap_or("")
}
- PdmTreeEntry::Remote(_, Some(err)) => err,
PdmTreeEntry::Remote(_, _) => "",
}
.into()
--
2.47.3
More information about the pdm-devel
mailing list