[pdm-devel] [PATCH datacenter-manager v5 00/26] enable custom views on the UI

Dominik Csapak d.csapak at proxmox.com
Wed Nov 26 16:17:53 CET 2025


With this series, users are able to add/edit/delete custom views.

NOTE: this series is based on lukas follow up series to the views[0]
but needs the change i mentioned in [1] to completely work.

A new 'Views' menu entry is added where the CRUD ui sits, and an entry
for each view below it.

The includes/excludes are editable from the CRUD grid, and the layout is
editable in the view itself.

For now i opted to make the layout part of the `ViewConfig` struct, but
as a simple json-string only, because we're not able to use the
api-macro (for now; the rust enum features i use are currently not
supported there). To verify it regardless, we try to deserialize
the layout in the add/update call, so that no wrong layout can enter
the config (via the api).

The patch 'ui: dashboard: prepare view for editint custom views'
is adapted from my last series, but all other changes are new,
especially the CRUD api.

There is still one part wrong, namely
* subscriptions panels are still added by default when none is in the
  layout itself (the plan is to move the subscription notice)

changes from v4:
* add `+view:<VIEW>` when clicking on a searchable item from within
  the view
* adapt to lukas' changes regarding filters (so include-all, etc.)
* add the ability to add a 'resource tree' to a custom view, which
  is basically the tree from the global search but limited for the
  specific view
* some general improvements to the resource tree

changelogs in the relevant patches,and patches 19-26 are new

chnages from v3:
* incorporated most of Shannon's feedback (Thanks!)
  see the individual patches for changelog
* rebase on master

changes from v2:
* fixed 'verbose' property for subscriptions api call
* adapted to PveSdnZone -> PveNetwork renaming
* added validators for filter fields
  (so that the user sees it's invalid)

changes from v1:
* rebase on master, lukas v5 was applied

0: https://lore.proxmox.com/pdm-devel/20251117141122.328559-1-l.wagner@proxmox.com/
1: https://lore.proxmox.com/pdm-devel/ae0e2d08-cc13-4c40-a1b3-802136a58ed4@proxmox.com/

Dominik Csapak (26):
  lib: pdm-config: views: add locking/saving methods
  lib: api-types: add 'layout' property to ViewConfig
  server: api: implement CRUD api for views
  server: api: resources: add 'view' category to search syntax
  ui: remote selector: allow forcing of value
  ui: dashboard types: add missing 'default's to de-serialization
  ui: dashboard: status row: add optional 'editing state'
  ui: dashboard: prepare view for editing custom views
  ui: views: implement view loading from api
  ui: views: make 'view' name property optional
  ui: views: add 'view' parameter to api calls
  ui: views: save updated layout to backend
  ui: add view list context
  ui: configuration: add view CRUD panels
  ui: main menu: add optional view_list property
  ui: load view list on page init
  lib/ui: move views types to pdm-api-types
  server: api: views: check layout string for validity
  ui: dashboard: add current view to search terms
  ui: resource tree: fix loading logic
  ui: resource tree: move error message into first column
  ui: resource tree: use `ViewContext` to limit the api calls to a view
  ui: resource tree: show guest tags
  api-types/ui: add ResourceTree variant for WidgetType
  ui: dashboard view: refactor widget rendering arguments into struct
  ui: resource tree/view: reload tree in a view on refresh

 lib/pdm-api-types/src/resource.rs        |   7 +
 lib/pdm-api-types/src/views.rs           |  91 +++-
 lib/pdm-config/src/views.rs              |  22 +-
 lib/pdm-search/src/lib.rs                |   9 +
 server/src/api/config/mod.rs             |   2 +
 server/src/api/config/views.rs           | 274 ++++++++++++
 server/src/api/resources.rs              |  19 +-
 server/src/views/mod.rs                  |   2 +-
 ui/Cargo.toml                            |   2 +-
 ui/css/pdm.scss                          |   4 +
 ui/src/configuration/mod.rs              |   2 +
 ui/src/configuration/views.rs            | 370 ++++++++++++++++
 ui/src/dashboard/guest_panel.rs          |   4 +-
 ui/src/dashboard/mod.rs                  |   5 +-
 ui/src/dashboard/node_status_panel.rs    |   4 +-
 ui/src/dashboard/pbs_datastores_panel.rs |   4 +-
 ui/src/dashboard/remote_panel.rs         |   4 +-
 ui/src/dashboard/resource_tree.rs        |  53 +++
 ui/src/dashboard/sdn_zone_panel.rs       |   8 +-
 ui/src/dashboard/status_row.rs           |  60 ++-
 ui/src/dashboard/top_entities.rs         |   3 +-
 ui/src/dashboard/types.rs                |  79 ----
 ui/src/dashboard/view.rs                 | 492 +++++++++++++--------
 ui/src/dashboard/view/row_element.rs     | 130 ++++++
 ui/src/dashboard/view/row_view.rs        | 524 ++++++++++++++++++++++-
 ui/src/lib.rs                            |   3 +
 ui/src/main.rs                           |  48 ++-
 ui/src/main_menu.rs                      |  57 ++-
 ui/src/pve/mod.rs                        |   9 +
 ui/src/view_list_context.rs              |  31 ++
 ui/src/widget/mod.rs                     |   8 +-
 ui/src/widget/remote_selector.rs         |   6 +
 ui/src/widget/resource_tree.rs           |  99 ++++-
 ui/src/widget/view_filter_selector.rs    | 421 ++++++++++++++++++
 ui/src/widget/view_selector.rs           |  55 +++
 35 files changed, 2604 insertions(+), 307 deletions(-)
 create mode 100644 server/src/api/config/views.rs
 create mode 100644 ui/src/configuration/views.rs
 create mode 100644 ui/src/dashboard/resource_tree.rs
 delete mode 100644 ui/src/dashboard/types.rs
 create mode 100644 ui/src/dashboard/view/row_element.rs
 create mode 100644 ui/src/view_list_context.rs
 create mode 100644 ui/src/widget/view_filter_selector.rs
 create mode 100644 ui/src/widget/view_selector.rs

-- 
2.47.3





More information about the pdm-devel mailing list