[pdm-devel] [PATCH yew-comp 2/2] tasks: add loading animation for running tasks

Dietmar Maurer dietmar at proxmox.com
Thu Mar 20 10:08:12 CET 2025


comments inline

> On 18.3.2025 15:32 CET Dominik Csapak <d.csapak at proxmox.com> wrote:
> 
>  
> when there is no endtime and the status is either empty or "RUNNING"
> (for PVE), render a spinning loading icon, like we do in the ExtJS UI.
> 
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
>  src/tasks.rs | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/src/tasks.rs b/src/tasks.rs
> index 499f5b9..1d3b0bf 100644
> --- a/src/tasks.rs
> +++ b/src/tasks.rs
> @@ -17,7 +17,7 @@ use pwt::state::{PersistentState, Selection, Store};
>  use pwt::widget::data_table::{
>      DataTable, DataTableColumn, DataTableHeader, DataTableRowRenderCallback,
>  };
> -use pwt::widget::{Button, Column, Toolbar};
> +use pwt::widget::{Button, Column, Fa, Row, Toolbar};
>  
>  use crate::utils::{format_upid, render_epoch_short};
>  
> @@ -122,7 +122,11 @@ impl ProxmoxTasks {
>                      .width("130px")
>                      .render(|item: &TaskListItem| match item.endtime {
>                          Some(endtime) => render_epoch_short(endtime).into(),
> -                        None => html! {},
> +                        None => Row::new()
> +                            .with_flex_spacer()
> +                            .with_child(Fa::new("").class("pwt-loading-icon"))
> +                            .with_flex_spacer()
> +                            .into(),

Don't we have a simpler way to center things? RTow is a flex layout,
so you can easily center children. 

>                      })
>                      .into(),
>                  DataTableColumn::new(tr!("User name"))
> @@ -139,7 +143,14 @@ impl ProxmoxTasks {
>                      .width("200px")
>                      .render(|item: &TaskListItem| {
>                          let text = item.status.as_deref().unwrap_or("");
> -                        html! {text}
> +                        match text {
> +                            "" | "RUNNING" => Row::new()
> +                                .with_flex_spacer()
> +                                .with_child(Fa::new("").class("pwt-loading-icon"))
> +                                .with_flex_spacer()
> +                                .into(),
> +                            text => html! {text},
> +                        }

match should be one level above...




More information about the pdm-devel mailing list