-
Notifications
You must be signed in to change notification settings - Fork 11
Description
First approach
- the state of the instances and groups is compressed and appended to the URL
- problem:
- we can potentially quickly reach the URL max length
- we can't select the apps and groups we want to share
- we can't add the instances and groups to an existing "workspace"
Second approach (from @TheauW)
- the state of the instances is stored in the session storage (URL is not used anymore)
- there are 2 new buttons:
- one to export selected instances and groups as a JSON blob
- the other to import a JSON blob that is then appended to the existing "workspace"
On May 15th 2025, the second approach was presented and we get interesting comments:
-
it's not intuitive (a URL would be appreciated)
-
one could potentially make a mistake in the produced JSON while copying/pasting it
-
other potential problems:
- if you don't save the JSON blob somewhere and lose your session, then you have to build your dashboard from scratch again
Based on the comments, we could come up with a potential long-term plan to help mitigating the issues.
Ultimate approach?
The approach would include web-specific routes in diracx (new dbs and routes).
We would have 2 different objects:
- workspaces: long-lived and editable dashboard composed of groups and sub-app instances, owned by a given user.
- snippets: immutable snapshot corresponding to a subset of a workspace that can be shared (and expired at some point).
As a user, when you log in diracx-web, you can:
- get your workspaces (GET /api/web/workspaces)
- modify one of your workspace (PUT/PATCH /api/web/workspaces/{workspaceId})
- create a new workspace (POST /api/web/workspaces)
- delete one of your workspace (DELETE /api/web/workspaces/{workspaceId})
You can also:
- export a snippet by selecting the instances and groups you want to include (POST /api/web/snippets body:JSON blob)
- import a snippet in your current workspace (GET /api/web/snippets/{snippetId}) - you could potentially even choose which part of the snippet you want to import.
I think it would solve most of the problems:
- users can save and easily retrieve their workspaces if they need
- snippet can be shared with a simple id, avoiding the risk of potentially copying pasting a malformed JSON blob
But it also tightly binds diracx-web with diracx (which is likely fine as long as we don't spread web-specific elements throughout diracx)