ResultadosDigitais / matrix

#matrix is the online open-source workplace inspired in sococo.com for distributed teams to have the experience of work together each day, side-by-side. No matter where team members might be. Working in an online workplace is even more productive when people are feeling in the same space.
MIT License
901 stars 238 forks source link

Add room groups #334

Open phiter opened 4 years ago

phiter commented 4 years ago

Feature Description

Add a feature enabling the admin to group rooms and separate them visually.

Problem

If you have too many rooms, matrix will end up having many unorganized rooms in the office page, and this can get too crowded very fast. So grouping these rooms could be a great feature since it can help organize the office.

Solution

In order to add this feature and not mess with the current json structure for the ROOMS_DATA variable, my suggestion is to simply add a group property to the json and use that to group the rooms. Rooms without this option will show up at the top of the office page without a group label.

I suppose room groups could also have an option to be expanded/closed, and this could be persisted in the localstorage, because I as a developer for example would rarely need to see who is in the "Marketing" group rooms.

At first this could be just a way to organize things visually but it could be enhanced to allow only people of certain departments to enter rooms in certain groups.

I started developing this feature, this is basically what I would have in mind:

image

JSON structure:

``` [ { "id": "4d5ee6b0-be40-4201-897a-e3a903df6b95", "name": "Time A", "group": "Tecnologia da informação" }, { "id": "00aa1849-6aa3-4a60-b635-8e1507c00196", "name": "Time B", "group": "Tecnologia da informação" }, { "id": "06485e3f-90e6-4dd2-ac8c-0a750d683fbc", "name": "Time C", "group": "Tecnologia da informação" }, { "id": "70860161-3b44-4c16-9420-bc8eaeedd531", "name": "Time D", "group": "Tecnologia da informação" }, { "id": "f190f1cb-e23c-4169-b08b-55e390906e11", "name": "Café" }, { "id": "0d655666-5dba-433a-843e-d6eebafe6b3f", "name": "Time E", "group": "Tecnologia da informação" }, { "id": "377ae09b-e943-4d01-af6f-ddd967a19d60", "name": "Almoço" }, { "id": "f190f1cb-e23c-4169-b08b-55e3909e11", "name": "Reunião externa" }, { "id": "0d655666-5dba-433a-843e-d6ebafe6b3f", "name": "Time F", "group": "Tecnologia da informação" }, { "id": "377ae09b-e943-4d01-af6f-ddd9679d60", "name": "Atendimento A", "group": "Atendimento" }, { "id": "6548860c-4909-42a0-a2de-7eee235c51", "name": "Atendimento B", "group": "Atendimento" }, { "id": "377ae09b-e943-4d01-af6f-ddd9679d60", "name": "Atendimento C", "group": "Atendimento" } ] ```
phiter commented 4 years ago

Just noticed this is a duplicate of #208 . I can work on this by referencing that issue.