public inbox for pdm-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pdm-devel] [PATCH datacenter-manager 1/2] ui: view configuration: unify create and edit input panel
@ 2025-11-27 11:22 Dominik Csapak
  2025-11-27 11:22 ` [pdm-devel] [PATCH datacenter-manager 2/2] ui: view configuration: change include all to a large field Dominik Csapak
  2025-11-27 20:54 ` [pdm-devel] applied: [PATCH datacenter-manager 1/2] ui: view configuration: unify create and edit input panel Thomas Lamprecht
  0 siblings, 2 replies; 3+ messages in thread
From: Dominik Csapak @ 2025-11-27 11:22 UTC (permalink / raw)
  To: pdm-devel

even though the implementation is not big, the two variants did diverge
already (boxlabel on the include all checkbox). To avoid that, unify the
two methods into one so most changes to one node will be reflected in
the other.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 ui/src/configuration/views.rs | 61 +++++++++++++++++------------------
 1 file changed, 29 insertions(+), 32 deletions(-)

diff --git a/ui/src/configuration/views.rs b/ui/src/configuration/views.rs
index 71cadc68..41969fdd 100644
--- a/ui/src/configuration/views.rs
+++ b/ui/src/configuration/views.rs
@@ -162,7 +162,7 @@ impl ViewGridComp {
         let props = ctx.props();
         let store = self.store.clone();
         EditWindow::new(tr!("Add") + ": " + &tr!("View"))
-            .renderer(move |form_ctx: &FormContext| add_view_input_panel(form_ctx, store.clone()))
+            .renderer(move |form_ctx| input_panel(form_ctx, InputPanelMode::Create(store.clone())))
             .on_submit({
                 let base_url = props.base_url.clone();
                 let store = self.store.clone();
@@ -176,7 +176,7 @@ impl ViewGridComp {
         let props = ctx.props();
         let id = selection.to_string();
         EditWindow::new(tr!("Edit") + ": " + &tr!("View"))
-            .renderer(move |form_ctx| edit_view_input_panel(form_ctx, id.clone()))
+            .renderer(move |form_ctx| input_panel(form_ctx, InputPanelMode::Edit(id.clone())))
             .on_submit({
                 let base_url = props.base_url.clone();
                 move |form| update_view(base_url.clone(), form)
@@ -322,23 +322,39 @@ impl LoadableComponent for ViewGridComp {
     }
 }
 
-fn add_view_input_panel(form_ctx: &FormContext, store: Store<ViewConfig>) -> Html {
+enum InputPanelMode {
+    Create(Store<ViewConfig>),
+    Edit(String), // id
+}
+
+fn input_panel(form_ctx: &FormContext, mode: InputPanelMode) -> Html {
     let include_all = form_ctx.read().get_field_checked("include-all");
-    InputPanel::new()
-        .padding(4)
-        .with_field(tr!("Name"), Field::new().name("id").required(true))
-        .with_right_field(
-            tr!("Copy Layout from"),
-            ViewSelector::new(store)
-                .placeholder(tr!("None"))
-                .name("copy-from"),
-        )
+    let is_create = matches!(mode, InputPanelMode::Create(_));
+    let mut input_panel = InputPanel::new().padding(4);
+
+    match mode {
+        InputPanelMode::Create(store) => {
+            input_panel.add_field(tr!("Name"), Field::new().name("id").required(true));
+            input_panel.add_right_field(
+                tr!("Copy Layout from"),
+                ViewSelector::new(store)
+                    .placeholder(tr!("None"))
+                    .name("copy-from"),
+            );
+        }
+        InputPanelMode::Edit(id) => input_panel.add_field(
+            tr!("Name"),
+            DisplayField::new().name("id").value(id.clone()),
+        ),
+    }
+
+    input_panel
         .with_field(
             tr!("Include All"),
             Checkbox::new()
                 .name("include-all")
                 .box_label(tr!("Include all remotes and their resources."))
-                .default(true),
+                .default(is_create),
         )
         .with_field_and_options(
             pwt::widget::FieldPosition::Large,
@@ -352,22 +368,3 @@ fn add_view_input_panel(form_ctx: &FormContext, store: Store<ViewConfig>) -> Htm
         .with_large_field(tr!("Exclude"), ViewFilterSelector::new().name("exclude"))
         .into()
 }
-
-fn edit_view_input_panel(form_ctx: &FormContext, id: String) -> Html {
-    let include_all = form_ctx.read().get_field_checked("include-all");
-    InputPanel::new()
-        .padding(4)
-        .with_field(tr!("Name"), DisplayField::new().name("id").value(id))
-        .with_field(tr!("Include All"), Checkbox::new().name("include-all"))
-        .with_field_and_options(
-            pwt::widget::FieldPosition::Large,
-            false,
-            include_all,
-            tr!("Include"),
-            ViewFilterSelector::new()
-                .name("include")
-                .disabled(include_all),
-        )
-        .with_large_field(tr!("Exclude"), ViewFilterSelector::new().name("exclude"))
-        .into()
-}
-- 
2.47.3



_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [pdm-devel] [PATCH datacenter-manager 2/2] ui: view configuration: change include all to a large field
  2025-11-27 11:22 [pdm-devel] [PATCH datacenter-manager 1/2] ui: view configuration: unify create and edit input panel Dominik Csapak
@ 2025-11-27 11:22 ` Dominik Csapak
  2025-11-27 20:54 ` [pdm-devel] applied: [PATCH datacenter-manager 1/2] ui: view configuration: unify create and edit input panel Thomas Lamprecht
  1 sibling, 0 replies; 3+ messages in thread
From: Dominik Csapak @ 2025-11-27 11:22 UTC (permalink / raw)
  To: pdm-devel

we have the space, since nothing is right of it. This allows the
boxlabel to be shown in one line, instead of wrapping the text.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 ui/src/configuration/views.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ui/src/configuration/views.rs b/ui/src/configuration/views.rs
index 41969fdd..ef147151 100644
--- a/ui/src/configuration/views.rs
+++ b/ui/src/configuration/views.rs
@@ -349,7 +349,7 @@ fn input_panel(form_ctx: &FormContext, mode: InputPanelMode) -> Html {
     }
 
     input_panel
-        .with_field(
+        .with_large_field(
             tr!("Include All"),
             Checkbox::new()
                 .name("include-all")
-- 
2.47.3



_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [pdm-devel] applied: [PATCH datacenter-manager 1/2] ui: view configuration: unify create and edit input panel
  2025-11-27 11:22 [pdm-devel] [PATCH datacenter-manager 1/2] ui: view configuration: unify create and edit input panel Dominik Csapak
  2025-11-27 11:22 ` [pdm-devel] [PATCH datacenter-manager 2/2] ui: view configuration: change include all to a large field Dominik Csapak
@ 2025-11-27 20:54 ` Thomas Lamprecht
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Lamprecht @ 2025-11-27 20:54 UTC (permalink / raw)
  To: pdm-devel, Dominik Csapak

On Thu, 27 Nov 2025 12:22:51 +0100, Dominik Csapak wrote:
> even though the implementation is not big, the two variants did diverge
> already (boxlabel on the include all checkbox). To avoid that, unify the
> two methods into one so most changes to one node will be reflected in
> the other.
> 
> 

Applied, thanks!

[1/2] ui: view configuration: unify create and edit input panel
      commit: bf1d95c88d4884cc0a4f3ab1e1b86345fcc53fdc
[2/2] ui: view configuration: change include all to a large field
      commit: 33f7d155d1877e0b1c0a3271fdad7a2b7e1f5189


_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-11-27 20:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-27 11:22 [pdm-devel] [PATCH datacenter-manager 1/2] ui: view configuration: unify create and edit input panel Dominik Csapak
2025-11-27 11:22 ` [pdm-devel] [PATCH datacenter-manager 2/2] ui: view configuration: change include all to a large field Dominik Csapak
2025-11-27 20:54 ` [pdm-devel] applied: [PATCH datacenter-manager 1/2] ui: view configuration: unify create and edit input panel Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal