Move and resize panels in dashboard, save to branch
Problem to solve
Currently, we allow users to define in YML the location and size of panels (https://gitlab.com/gitlab-org/gitlab-ce/issues/60010), but we don't allow users to manage this from the UI.
Note : https://gitlab.com/gitlab-org/gitlab-ce/issues/60010 is a pre-requisite for this issue
We should expose a mode to allow users to re-arrange the panels on a dashboard as they see fit, and then offer to save the changes. We could either enable an "Edit" button which would expose the moving/resizing controls, or simply expose them all the time and only present the 'Save' option when a change has been made.
When saving back the changes, we could consider two options:
- Directly write back into the repo and change the dashbaord YAML without requiring the user to review the changes. This would reduce the friction, but reduce the opportunity to do reviews and more.
- Create a branch and MR with the changes, like we do in the Web IDE or the file editor. This would then allow for review before accepting the changes.
I think we should start with the MR based workflow.
We decided on a design for draggable dashboards as part of https://gitlab.com/gitlab-org/gitlab-ce/issues/58435. Modifying this design to include a MR-based workflow for committing the changes, would look like this: