feat(assets): bulk-edit modal for Status / Company over N selected assets (MAPPS-303) #311

Merged
YousifShkara merged 1 commit from feat/MAPPS-303-bulk-asset-edit into main 2026-06-21 12:26:35 +02:00
Owner

Built on the MAPPS-290 bulk-actions primitive. The Assets list now:

  • mounts use_bulk_selection() at page scope;
  • renders a SelectAllHeader + per-row SelectRowCell so a user can pick the assets to operate on;
  • shows a BulkActionsBar "Bulk edit" button when the selection is non-empty;
  • opens a modal whose two fields (Status, Company) are each gated on a "Change this field" checkbox so the user can mass-set a subset. Office-move pattern is one checkbox + one company; tech-refresh pattern is one checkbox + one status.

Submit validates that at least one field is being changed, builds a partial JSON body containing only the toggled fields, and fires N parallel PUT /assets/{id} calls via futures_util::future::join_all. Surfaces a success toast on N-of-N success or a partial-failure toast with the per-failure count, then clears the selection and restarts the assets resource so the list repaints with the new values.

Stacked on feat/MAPPS-290-bulk-actions-primitive; merge that first. The remaining fields the QA called out (Location, Site, Assigned-to, Department) need the asset schema to expose them as first-class columns; those land with PMS-454 (CMDB expand). Status + Company are the two columns that exist today and they cover the QA's primary use cases.

#MAPPS-303

Built on the MAPPS-290 bulk-actions primitive. The Assets list now: - mounts `use_bulk_selection()` at page scope; - renders a `SelectAllHeader` + per-row `SelectRowCell` so a user can pick the assets to operate on; - shows a `BulkActionsBar` "Bulk edit" button when the selection is non-empty; - opens a modal whose two fields (Status, Company) are each gated on a "Change this field" checkbox so the user can mass-set a subset. Office-move pattern is one checkbox + one company; tech-refresh pattern is one checkbox + one status. Submit validates that at least one field is being changed, builds a partial JSON body containing only the toggled fields, and fires N parallel `PUT /assets/{id}` calls via `futures_util::future::join_all`. Surfaces a success toast on N-of-N success or a partial-failure toast with the per-failure count, then clears the selection and restarts the assets resource so the list repaints with the new values. Stacked on `feat/MAPPS-290-bulk-actions-primitive`; merge that first. The remaining fields the QA called out (Location, Site, Assigned-to, Department) need the asset schema to expose them as first-class columns; those land with PMS-454 (CMDB expand). Status + Company are the two columns that exist today and they cover the QA's primary use cases. #MAPPS-303
feat(assets): bulk-edit modal for Status / Company over N selected assets (MAPPS-303)
All checks were successful
Check / clippy + fmt + tests (pull_request) Successful in 1m7s
Create release / Create release from merged PR (pull_request) Has been skipped
c50bd0a1c2
Built on the MAPPS-290 bulk-actions primitive. The Assets list now:
- mounts `use_bulk_selection()` at page scope;
- renders a `SelectAllHeader` + per-row `SelectRowCell` so a user can pick the assets to operate on;
- shows a `BulkActionsBar` "Bulk edit" button when the selection is non-empty;
- opens a modal whose two fields (Status, Company) are each gated on a "Change this field" checkbox so the user can mass-set a subset. Office-move pattern is one checkbox + one company; tech-refresh pattern is one checkbox + one status.

Submit validates that at least one field is being changed, builds a partial JSON body containing only the toggled fields, and fires N parallel `PUT /assets/{id}` calls via `futures_util::future::join_all`. Surfaces a success toast on N-of-N success or a partial-failure toast with the per-failure count, then clears the selection and restarts the assets resource so the list repaints with the new values.

Stacked on `feat/MAPPS-290-bulk-actions-primitive`; merge that first. The remaining fields the QA called out (Location, Site, Assigned-to, Department) need the asset schema to expose them as first-class columns; those land with PMS-454 (CMDB expand). Status + Company are the two columns that exist today and they cover the QA's primary use cases.

#MAPPS-303
YousifShkara deleted branch feat/MAPPS-303-bulk-asset-edit 2026-06-21 12:26:35 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!311
No description provided.