ITISFoundation / osparc-issues

🐼 issue-only repo for the osparc project
3 stars 5 forks source link

Project Folders in User Workspace (Nov.) #716

Open AntoninoMarioC opened 2 years ago

AntoninoMarioC commented 2 years ago

Describe the user role At the moment, users that do not properly define sharing options fill other users's pages with their studies. I do not like to have a mess on my study page, therefore, at least, I'd like to have a separation between my own studies, studies specifically shared with me, and external studies. As well, I'd like to organize my studies according to my own work: CR projects, tests, etc. It would be also great if the user could also decide to hide some projects, for any reasons.

Describe the goal A bit of organization in the mess

Describe the benefit Improved mental health and cleaner work organization

More info from https://github.com/ITISFoundation/osparc-issues/issues/977

Easy UI improvements From meeting with users on May 3rd, https://github.com/ITISFoundation/osparc-issues/issues/1403

### MartinKippenbeger
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1723
- [ ] https://github.com/ITISFoundation/osparc-simcore/issues/6405
- [ ] https://github.com/ITISFoundation/osparc-simcore/issues/6404
- [ ] https://github.com/ITISFoundation/osparc-simcore/issues/6386
### Tasks
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1613
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1724
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1725
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1740
### Tom Bombadil
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1556
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1547
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1566
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1567
- [ ] https://github.com/ITISFoundation/osparc-simcore/pull/6072
### Eisbock
- [x] https://github.com/ITISFoundation/osparc-issues/issues/1606
- [ ] https://github.com/ITISFoundation/osparc-issues/issues/1568
pcrespov commented 1 year ago

Goal for sprint Jelly Beans

pcrespov commented 1 year ago

Goal for sprint Pastel de Nata

matusdrobuliak66 commented 1 year ago

Implementation Notes (Proposal)

These implementation notes discuss the design of osparc user workspace. A new feature that should introduce folder structure to osparc main dashboard. Currently, all projects live on the same level. Users would like to group projects together in a folder like structure and potentially share this folder with other users (User or Group of users!).

Diagram

graph TD
    User_A-->Folder_1;
    User_A-->Folder_2;
    User_A-->study_X;
    User_A-->study_Y;
    Folder_1-->study_Z;
    Folder_1-->study_W;
    Folder_2-->Folder_3;
    Folder_3--> study_H;
graph TD
    User_B-->Folder_4;
    User_B-->study_K;
    Folder_4-->study_J;

Data Model with examples

Folder table Project to Folder tableProject Access Rights
| id | title | parent folder | gid | | ------ | ------ | ------ | ------ | | 1 | "User A home" | NULL | A | | 2 | "User B home" | NULL | B | | 3 | Folder 1 | 1 | A | | 4 | Folder 2 | 1 | A | | 5 | Folder 3 | 4 | A | | 6 | Folder 4 | 2 | B | | project id | parent folder | gid | | ------ | ------ | ------ | | Z | 3 | A | | W | 3 | A | | H | 5 | A | | X | 1 | A | | Y | 1 | A | | J | 6 | B | | K | 2 | B | | project id | access rights | | ------ | ------ | | Z | A | | W | A | | H | A | | X | A | | Y | A | | J | B | | K | B |

Get the home folder (id=1) select * from folder_table where gid = A and parent_folder = 1 --> Folder1, Folder2 select * from project_to_folder where gid = A and parent_dolfer = 1 --> X, Y

Fetch Folder 2 (id=4) select * from folder_table where gid = A and parent_folder = 4 --> Folder3 select * from project_to_folder where gid = A and parent_dolfer = 4 --> None

Share study Z with primary group B (user B)

Folder table Project to Folder tableProject Access Rights
| id | title | parent folder | gid | | ------ | ------ | ------ | ------ | | project id | parent folder | gid | | ------ | ------ | ------ | | Z | 2 | B | | project id | access rights | | ------ | ------ | | Z | A, B |

Share study H with standard group D (where user B belongs)

  1. share study H
  2. user B creates new folder and moves there study H
Folder table Project to Folder tableProject Access Rights
| step | id | title | parent folder | gid | | ------ | ------ | ------ | ------ | ------ | | (2.) | 7 | Folder 5 | 2 | B | | step | project id | parent folder | gid | | ------ | ------ | ------ | ------ | (1.) | H | NULL | D | (2.) | H | 7 | B | | step | project id | access rights | | ------ | ------ | ------ | (1.) | Z | A, D |

Notes:

Share folder 1 with primary group B (user B)

Folder table Project to Folder table
| id | title | parent folder | gid | shared_folder | original_folder | hide | | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | 3 | Folder 1 | 1 | A | true | 3 | F ... | 7 | Folder 1 | 2 | B | true | 3 | F | project id | parent folder | gid | | ------ | ------ | ------ | | Z | 7 | B | | W | 7 | B |

Share folder 3 with standard group D (where user B belongs)

Folder table Project to Folder table
| id | title | parent folder | gid | shared_folder | original_folder | hide | | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | 5 | Folder 3 | 4 | A | true | 5 | F | ... | 7 | Folder 3 | NULL | D | true | 5 | F | | 8 | Folder 3 | 2 | B | true | 5 | F | | project id | parent folder | gid | | ------ | ------ | ------ | | H | 7 | D | | H | 8 | B |
esraneufeld commented 1 year ago

during the realization of the folders on the dashboard, please also consider the related discussions in this document

namely the part on folders, and also the part on how snapshots (versioning/branching)

elisabettai commented 7 months ago

This was also discussed on Jan.17 2024, before sim4life.io release:

Folders

Doing this properly including sharing functionality is very tricky. Adding a proper folder structure requires adding new tables in the database to keep track of the metadata. We propose to re-use the current tagging functionality

The user experience will be similar to the “Tutorials” tab

Implementation details: Add API endpoints to query all available tags and projects therein Frontend will create virtual folders based on tags

Open questions: It is still unclear how this should look and feel, therefore we will create a proposal

fyi @drniiken, I guess this what you had in mind during PM1 earlier today.

I am not sure reusing tags will make users happy enough. I'd go more for "passive folders" i.e. folders that users can create to organize their projects, but who are private to the user (i.e. no sharing functionality added to it).

Some interesting ideas also in the Entropy Reduction doc, Dashboard Organization.

mguidon commented 6 days ago
  • Moving folders between workspaces: frontend ready, backend not (currently "stay tune")
  • Search folder listing: 3 endpoints (+1 for folders +1 for workspace) --> Full search (prjocets is done)
  • Drag and drop (frontend only thing)