Loading gms-ui/src/api/server/index.js +13 −0 Original line number Original line Diff line number Diff line Loading @@ -95,5 +95,18 @@ export default { 'Accept': 'application/json', 'Accept': 'application/json', } } }); }); }, searchUser (searchInput) { let url = BASE_API_URL + 'users?search=' + searchInput; return apiRequest(url, { method: 'GET', cache: 'no-cache', credentials: 'include', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', } }); } } }; }; gms-ui/src/components/GroupsPanel.vue +2 −2 Original line number Original line Diff line number Diff line Loading @@ -5,7 +5,7 @@ <b-form-input placeholder="Search group" v-model="groupFilter" v-on:input="filterGroups"></b-form-input> <b-form-input placeholder="Search group" v-model="groupFilter" v-on:input="filterGroups"></b-form-input> </b-col> </b-col> </b-row> </b-row> <div id="groups-list"> <div id="groups-list" v-if="model.groupsPanel !== null"> <b-list-group v-for="group in model.groupsPanel.items"> <b-list-group v-for="group in model.groupsPanel.items"> <b-list-group-item href="#" v-on:click="openGroup(group)"> <b-list-group-item href="#" v-on:click="openGroup(group)"> <span class="float-left">{{group.groupName}}</span> <span class="float-left">{{group.groupName}}</span> Loading @@ -21,7 +21,7 @@ </b-list-group-item> </b-list-group-item> </b-list-group> </b-list-group> </div> </div> <div class="row"> <div class="row" v-if="model.groupsPanel !== null"> <div class="col-md-9"> <div class="col-md-9"> <b-pagination <b-pagination v-model="model.groupsPanel.currentPage" v-model="model.groupsPanel.currentPage" Loading gms-ui/src/components/Main.vue +15 −4 Original line number Original line Diff line number Diff line Loading @@ -7,13 +7,15 @@ <MembersPanel /> <MembersPanel /> <PermissionsPanel /> <PermissionsPanel /> <template slot="tabs-end"> <template slot="tabs-end"> <b-button variant="primary" class="in-tabs-header-btn" v-b-modal.new-group-modal v-if="showAddGroupBtn">Add group</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddGroupBtn" v-on:click="openAddGroupModal">Add group</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddMemberBtn">Add member</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddMemberBtn">Add member</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddCollaboratorBtn">Add collaborator</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddCollaboratorBtn">Add collaborator</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddPermissionBtn" v-on:click="openAddPermissionModal">Add permission</b-button> </template> </template> </b-tabs> </b-tabs> </b-card> </b-card> <NewGroupModal /> <NewGroupModal /> <AddPermissionModal /> </div> </div> </template> </template> Loading @@ -23,6 +25,7 @@ import GroupsPanel from './GroupsPanel.vue' import MembersPanel from './MembersPanel.vue' import MembersPanel from './MembersPanel.vue' import PermissionsPanel from './PermissionsPanel.vue' import PermissionsPanel from './PermissionsPanel.vue' import NewGroupModal from './modals/NewGroupModal.vue' import NewGroupModal from './modals/NewGroupModal.vue' import AddPermissionModal from './modals/AddPermissionModal.vue' import { mapState } from 'vuex'; import { mapState } from 'vuex'; export default { export default { Loading @@ -32,13 +35,15 @@ export default { GroupsPanel, GroupsPanel, MembersPanel, MembersPanel, PermissionsPanel, PermissionsPanel, NewGroupModal NewGroupModal, AddPermissionModal }, }, computed: mapState({ computed: mapState({ model: state => state.model, model: state => state.model, showAddMemberBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'members', showAddMemberBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'members', showAddCollaboratorBtn: state => state.model.permissions.includes('MANAGE_MEMBERS') && state.input.selectedTab === 'members', showAddCollaboratorBtn: state => state.model.permissions.includes('MANAGE_MEMBERS') && state.input.selectedTab === 'members', showAddGroupBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'groups' showAddGroupBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'groups', showAddPermissionBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'permissions' }), }), methods: { methods: { tabChanged: function(tabIndex) { tabChanged: function(tabIndex) { Loading @@ -59,8 +64,14 @@ export default { this.$store.commit('fetchGroupsModel'); this.$store.commit('fetchGroupsModel'); } } }, }, addMember: function() { openAddGroupModal: function() { this.$bvModal.show('new-group-modal'); }, openAddMemberModal: function() { }, openAddPermissionModal: function() { this.$bvModal.show('add-permission-modal'); } } } } } } Loading gms-ui/src/components/MembersPanel.vue +3 −3 Original line number Original line Diff line number Diff line Loading @@ -17,9 +17,9 @@ </div> </div> <div class="text-center" v-if="model.membersPanel !== null"> <div class="text-center" v-if="model.membersPanel !== null"> <b-pagination <b-pagination v-model="model.membersPanel.paginator.page" v-model="model.membersPanel.page" :total-rows="model.membersPanel.paginator.totalItems" :total-rows="model.membersPanel.totalItems" :per-page="model.membersPanel.paginator.pageSize" :per-page="model.membersPanel.pageSize" aria-controls="members-list" aria-controls="members-list" align="center" align="center" v-on:change="setPage" v-on:change="setPage" Loading gms-ui/src/components/modals/AddPermissionModal.vue 0 → 100644 +27 −0 Original line number Original line Diff line number Diff line <template> <b-modal id="add-permission-modal" title="Add permission" ok-title="Add" @ok="addPermission"> <SearchUser /> </b-modal> </template> <script> import client from 'api-client'; import SearchUser from './SearchUser.vue' export default { name: 'AddPermissionModal', components: { SearchUser }, data: function() { return { } }, methods: { addPermission: function() { } } }; </script> Loading
gms-ui/src/api/server/index.js +13 −0 Original line number Original line Diff line number Diff line Loading @@ -95,5 +95,18 @@ export default { 'Accept': 'application/json', 'Accept': 'application/json', } } }); }); }, searchUser (searchInput) { let url = BASE_API_URL + 'users?search=' + searchInput; return apiRequest(url, { method: 'GET', cache: 'no-cache', credentials: 'include', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', } }); } } }; };
gms-ui/src/components/GroupsPanel.vue +2 −2 Original line number Original line Diff line number Diff line Loading @@ -5,7 +5,7 @@ <b-form-input placeholder="Search group" v-model="groupFilter" v-on:input="filterGroups"></b-form-input> <b-form-input placeholder="Search group" v-model="groupFilter" v-on:input="filterGroups"></b-form-input> </b-col> </b-col> </b-row> </b-row> <div id="groups-list"> <div id="groups-list" v-if="model.groupsPanel !== null"> <b-list-group v-for="group in model.groupsPanel.items"> <b-list-group v-for="group in model.groupsPanel.items"> <b-list-group-item href="#" v-on:click="openGroup(group)"> <b-list-group-item href="#" v-on:click="openGroup(group)"> <span class="float-left">{{group.groupName}}</span> <span class="float-left">{{group.groupName}}</span> Loading @@ -21,7 +21,7 @@ </b-list-group-item> </b-list-group-item> </b-list-group> </b-list-group> </div> </div> <div class="row"> <div class="row" v-if="model.groupsPanel !== null"> <div class="col-md-9"> <div class="col-md-9"> <b-pagination <b-pagination v-model="model.groupsPanel.currentPage" v-model="model.groupsPanel.currentPage" Loading
gms-ui/src/components/Main.vue +15 −4 Original line number Original line Diff line number Diff line Loading @@ -7,13 +7,15 @@ <MembersPanel /> <MembersPanel /> <PermissionsPanel /> <PermissionsPanel /> <template slot="tabs-end"> <template slot="tabs-end"> <b-button variant="primary" class="in-tabs-header-btn" v-b-modal.new-group-modal v-if="showAddGroupBtn">Add group</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddGroupBtn" v-on:click="openAddGroupModal">Add group</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddMemberBtn">Add member</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddMemberBtn">Add member</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddCollaboratorBtn">Add collaborator</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddCollaboratorBtn">Add collaborator</b-button> <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddPermissionBtn" v-on:click="openAddPermissionModal">Add permission</b-button> </template> </template> </b-tabs> </b-tabs> </b-card> </b-card> <NewGroupModal /> <NewGroupModal /> <AddPermissionModal /> </div> </div> </template> </template> Loading @@ -23,6 +25,7 @@ import GroupsPanel from './GroupsPanel.vue' import MembersPanel from './MembersPanel.vue' import MembersPanel from './MembersPanel.vue' import PermissionsPanel from './PermissionsPanel.vue' import PermissionsPanel from './PermissionsPanel.vue' import NewGroupModal from './modals/NewGroupModal.vue' import NewGroupModal from './modals/NewGroupModal.vue' import AddPermissionModal from './modals/AddPermissionModal.vue' import { mapState } from 'vuex'; import { mapState } from 'vuex'; export default { export default { Loading @@ -32,13 +35,15 @@ export default { GroupsPanel, GroupsPanel, MembersPanel, MembersPanel, PermissionsPanel, PermissionsPanel, NewGroupModal NewGroupModal, AddPermissionModal }, }, computed: mapState({ computed: mapState({ model: state => state.model, model: state => state.model, showAddMemberBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'members', showAddMemberBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'members', showAddCollaboratorBtn: state => state.model.permissions.includes('MANAGE_MEMBERS') && state.input.selectedTab === 'members', showAddCollaboratorBtn: state => state.model.permissions.includes('MANAGE_MEMBERS') && state.input.selectedTab === 'members', showAddGroupBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'groups' showAddGroupBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'groups', showAddPermissionBtn: state => state.model.permissions.includes('ADMIN') && state.input.selectedTab === 'permissions' }), }), methods: { methods: { tabChanged: function(tabIndex) { tabChanged: function(tabIndex) { Loading @@ -59,8 +64,14 @@ export default { this.$store.commit('fetchGroupsModel'); this.$store.commit('fetchGroupsModel'); } } }, }, addMember: function() { openAddGroupModal: function() { this.$bvModal.show('new-group-modal'); }, openAddMemberModal: function() { }, openAddPermissionModal: function() { this.$bvModal.show('add-permission-modal'); } } } } } } Loading
gms-ui/src/components/MembersPanel.vue +3 −3 Original line number Original line Diff line number Diff line Loading @@ -17,9 +17,9 @@ </div> </div> <div class="text-center" v-if="model.membersPanel !== null"> <div class="text-center" v-if="model.membersPanel !== null"> <b-pagination <b-pagination v-model="model.membersPanel.paginator.page" v-model="model.membersPanel.page" :total-rows="model.membersPanel.paginator.totalItems" :total-rows="model.membersPanel.totalItems" :per-page="model.membersPanel.paginator.pageSize" :per-page="model.membersPanel.pageSize" aria-controls="members-list" aria-controls="members-list" align="center" align="center" v-on:change="setPage" v-on:change="setPage" Loading
gms-ui/src/components/modals/AddPermissionModal.vue 0 → 100644 +27 −0 Original line number Original line Diff line number Diff line <template> <b-modal id="add-permission-modal" title="Add permission" ok-title="Add" @ok="addPermission"> <SearchUser /> </b-modal> </template> <script> import client from 'api-client'; import SearchUser from './SearchUser.vue' export default { name: 'AddPermissionModal', components: { SearchUser }, data: function() { return { } }, methods: { addPermission: function() { } } }; </script>