diff --git a/gms-ui/src/api/mock/data/openUserSearchResult.json b/gms-ui/src/api/mock/data/openUserSearchResult.json index 65d38eaaae7e1efc09341c06548387fbe7916f9e..b7389bbb1a4d565016e955a39a719cbbb5dca245 100644 --- a/gms-ui/src/api/mock/data/openUserSearchResult.json +++ b/gms-ui/src/api/mock/data/openUserSearchResult.json @@ -1,13 +1,11 @@ { "groups": [{ - "id": "744e38e8f6d04e4e9418ae5f131c9b6b", - "name": "LBT", - "path": "744e38e8f6d04e4e9418ae5f131c9b6b" + "groupId": "f747bb7af22b4b2f85abef8a3e54dcc7", + "groupCompleteName": ["LBT", "INAF", "P1"] }], "permissions": [{ - "userId": "4", - "groupId": "744e38e8f6d04e4e9418ae5f131c9b6b", - "permission": "VIEW_MEMBERS", - "groupPath": "744e38e8f6d04e4e9418ae5f131c9b6b" + "groupId": "ROOT", + "groupCompleteName": ["Root"], + "permission": "ADMIN" }] } diff --git a/gms-ui/src/api/mock/data/search.json b/gms-ui/src/api/mock/data/search.json index d81df04e320bd27cf4d18e5852205a45ae696b68..7987da4307328b61c46094fd6ae5d7bbee53ae4f 100644 --- a/gms-ui/src/api/mock/data/search.json +++ b/gms-ui/src/api/mock/data/search.json @@ -1,18 +1,20 @@ { "items": [{ - "id": "4", - "type": "USER", - "label": "Name Surname" - }, - { - "id": "group_id", - "type": "GROUP", - "label": "Group 1" - } - ], + "type": "USER", + "label": "Sonia Zorba (Google)", + "id": "4" + }, { + "type": "GROUP", + "label": "TNG / test2", + "id": "64f6795862944325b093c974b768dd39" + }, { + "type": "GROUP", + "label": "test", + "id": "024fb0999cac4e74a4e4ee2af4d3800c" + }], "currentPage": 1, "links": [1], - "totalItems": 2, + "totalItems": 3, "pageSize": 20, "totalPages": 1, "hasPreviousPages": false, diff --git a/gms-ui/src/store.js b/gms-ui/src/store.js index a6d1c9100490a4ebf758f9bf824445717320df51..00e3cd7159afc6dc09e9d6a8b44d8bf98b3adc41 100644 --- a/gms-ui/src/store.js +++ b/gms-ui/src/store.js @@ -50,12 +50,12 @@ export default new Vuex.Store({ openGroup(state, groupId) { let input = this.state.input; input.selectedGroupId = groupId; - input.searchFilter = null; + input.searchFilter = ''; client.fetchGroupsTab(input) .then(model => { + this.commit('updateGroups', model); if (model.groupsPanel.items.length > 0) { this.commit('setTabIndex', 0); - this.commit('updateGroups', model); } else { // If there are no subgroups show the members panel this.commit('setTabIndex', 1); diff --git a/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java b/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java index 0bfe396a1f835bd878c5f28ed9c4660cdec6f283..90e6ccbfe9aa4ad56236e4b7329a6ae5ce12e554 100644 --- a/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java +++ b/gms/src/main/java/it/inaf/ia2/gms/service/SearchService.java @@ -109,8 +109,14 @@ public class SearchService { List<PermissionEntity> actorPermissions = permissionsDAO.findUserPermissions(actorUserId); UserSearchResponse response = new UserSearchResponse(); - response.setGroups(getUserGroups(targetUserId, actorPermissions)); - response.setPermissions(getUserPermission(targetUserId, actorPermissions)); + + List<UserGroup> groups = getUserGroups(targetUserId, actorPermissions); + sortByGroupCompleteName(groups); + response.setGroups(groups); + + List<UserPermission> permissions = getUserPermission(targetUserId, actorPermissions); + sortByGroupCompleteName(permissions); + response.setPermissions(permissions); return response; } @@ -167,4 +173,12 @@ public class SearchService { return permissions; } + + private void sortByGroupCompleteName(List<? extends UserGroup> items) { + items.sort((i1, i2) -> { + String completeName1 = String.join(" / ", i1.getGroupCompleteName()); + String completeName2 = String.join(" / ", i2.getGroupCompleteName()); + return completeName1.compareTo(completeName2); + }); + } }