Loading gms-ui/src/api/server/index.js +3 −1 Original line number Original line Diff line number Diff line Loading @@ -325,7 +325,9 @@ export default { }, }, search(input) { search(input) { let url = BASE_API_URL + 'search?query=' + input.genericSearch.filter + let url = BASE_API_URL + 'search?query=' + input.genericSearch.filter + '&page=' + input.genericSearch.paginatorPage + '&pageSize=' + input.genericSearch.paginatorPageSize; '&paginatorPage=' + input.genericSearch.paginatorPage + '&paginatorPageSize=' + input.genericSearch.paginatorPageSize + '&users=' + input.genericSearch.users + "&groups=" + input.genericSearch.groups; return apiRequest({ return apiRequest({ method: 'GET', method: 'GET', Loading gms-ui/src/components/GenericSearchResults.vue +11 −2 Original line number Original line Diff line number Diff line <template> <template> <div class="mt-sm-3"> <div class="mt-sm-3"> <b-form inline> Includes: <b-form-checkbox class="ml-4" v-model="input.genericSearch.users" @input="updateTypeFilter">users</b-form-checkbox> <b-form-checkbox class="ml-4" v-model="input.genericSearch.groups" @input="updateTypeFilter">groups</b-form-checkbox> </b-form> <div> <div> <div v-if="model.genericSearchResults.items && model.genericSearchResults.items.length > 0"> <div v-if="model.genericSearchResults.items && model.genericSearchResults.items.length > 0"> <p>Search results:</p> <p>Search results:</p> Loading Loading @@ -40,7 +45,7 @@ export default { '$route': 'updateSearchResults' '$route': 'updateSearchResults' }, }, methods: { methods: { openSearchResult: function(result) { openSearchResult(result) { switch (result.type) { switch (result.type) { case 'GROUP': case 'GROUP': this.$store.dispatch('openGroup', result.id); this.$store.dispatch('openGroup', result.id); Loading @@ -50,7 +55,11 @@ export default { break; break; } } }, }, updateSearchResults: function() { updateTypeFilter() { this.input.genericSearch.paginatorPage = 1; this.updateSearchResults(); }, updateSearchResults() { this.$store.dispatch('search', this.$route.query.q); this.$store.dispatch('search', this.$route.query.q); } } } } Loading gms-ui/src/components/TopMenu.vue +2 −4 Original line number Original line Diff line number Diff line Loading @@ -12,7 +12,7 @@ <b-nav-item href="help/index.html" target="blank_" class="mr-4">Help</b-nav-item> <b-nav-item href="help/index.html" target="blank_" class="mr-4">Help</b-nav-item> <b-nav-form> <b-nav-form> <b-form-input size="sm" class="mr-sm-2" placeholder="Search" v-model.trim="input.genericSearch.filter" @keydown.native.enter.prevent="genericSearch"></b-form-input> <b-form-input size="sm" class="mr-sm-2" placeholder="Search" v-model.trim="input.genericSearch.filter" @keydown.native.enter.prevent="genericSearch"></b-form-input> <b-button size="sm" class="my-2 my-sm-0" type="button" v-on:click="genericSearch()">Search</b-button> <b-button size="sm" type="button" v-on:click="genericSearch()">Search</b-button> </b-nav-form> </b-nav-form> <b-nav-item-dropdown :text="user" right v-if="user"> <b-nav-item-dropdown :text="user" right v-if="user"> <b-dropdown-item href="logout">Logout</b-dropdown-item> <b-dropdown-item href="logout">Logout</b-dropdown-item> Loading @@ -39,10 +39,8 @@ export default { this.$router.push('/', () => {}); this.$router.push('/', () => {}); }, }, genericSearch() { genericSearch() { this.input.genericSearch.page = 1; this.input.genericSearch.pageSize = 20; this.$router.push({ path: '/search', query: { q: this.input.genericSearch.filter } }, () => {}); this.$router.push({ path: '/search', query: { q: this.input.genericSearch.filter } }, () => {}); this.$store.dispatch('search', this.input.genericSearch.filter); this.$store.commit('setGenericSearchFilter', this.input.genericSearch.filter); } } } } } } Loading gms-ui/src/store.js +10 −2 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,9 @@ export default new Vuex.Store({ genericSearch: { genericSearch: { filter: '', filter: '', paginatorPage: 1, paginatorPage: 1, paginatorPageSize: 20 paginatorPageSize: 20, users: true, groups: true } } }, }, loading: false loading: false Loading Loading @@ -97,6 +99,10 @@ export default new Vuex.Store({ }, }, setGenericSearchFilter(state, filter) { setGenericSearchFilter(state, filter) { state.input.genericSearch.filter = filter; state.input.genericSearch.filter = filter; state.input.genericSearch.paginatorPage = 1; state.input.genericSearch.paginatorPageSize = 20; state.input.genericSearch.users = true; state.input.genericSearch.groups = true; }, }, removeInvitedRegistration(state, regId) { removeInvitedRegistration(state, regId) { let index = -1; let index = -1; Loading @@ -117,7 +123,9 @@ export default new Vuex.Store({ .then(model => commit('updateHomePageModel', model)); .then(model => commit('updateHomePageModel', model)); }, }, search({ commit, state }, filter) { search({ commit, state }, filter) { if (state.input.genericSearch.filter !== filter) { commit('setGenericSearchFilter', filter); commit('setGenericSearchFilter', filter); } client.search(state.input) client.search(state.input) .then(results => commit('displaySearchResults', results)); .then(results => commit('displaySearchResults', results)); }, }, Loading gms/src/main/java/it/inaf/ia2/gms/controller/SearchController.java +4 −5 Original line number Original line Diff line number Diff line package it.inaf.ia2.gms.controller; package it.inaf.ia2.gms.controller; import it.inaf.ia2.gms.model.request.GenericSearchRequest; import it.inaf.ia2.gms.model.response.PaginatedData; import it.inaf.ia2.gms.model.response.PaginatedData; import it.inaf.ia2.gms.model.response.SearchResponseItem; import it.inaf.ia2.gms.model.response.SearchResponseItem; import it.inaf.ia2.gms.model.response.UserSearchResponse; import it.inaf.ia2.gms.model.response.UserSearchResponse; import it.inaf.ia2.gms.service.SearchService; import it.inaf.ia2.gms.service.SearchService; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController; @RestController @RestController Loading @@ -23,10 +24,8 @@ public class SearchController { private SearchService searchService; private SearchService searchService; @GetMapping(value = "/search", produces = MediaType.APPLICATION_JSON_VALUE) @GetMapping(value = "/search", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<PaginatedData<SearchResponseItem>> getSearchResults(@RequestParam("query") String query, public ResponseEntity<PaginatedData<SearchResponseItem>> getSearchResults(@Valid GenericSearchRequest searchRequest) { @RequestParam("page") int page, @RequestParam("pageSize") int pageSize) { PaginatedData<SearchResponseItem> response = searchService.search(searchRequest, servletRequest.getUserPrincipal().getName()); PaginatedData<SearchResponseItem> response = searchService.search(query, servletRequest.getUserPrincipal().getName(), page, pageSize); return ResponseEntity.ok(response); return ResponseEntity.ok(response); } } Loading Loading
gms-ui/src/api/server/index.js +3 −1 Original line number Original line Diff line number Diff line Loading @@ -325,7 +325,9 @@ export default { }, }, search(input) { search(input) { let url = BASE_API_URL + 'search?query=' + input.genericSearch.filter + let url = BASE_API_URL + 'search?query=' + input.genericSearch.filter + '&page=' + input.genericSearch.paginatorPage + '&pageSize=' + input.genericSearch.paginatorPageSize; '&paginatorPage=' + input.genericSearch.paginatorPage + '&paginatorPageSize=' + input.genericSearch.paginatorPageSize + '&users=' + input.genericSearch.users + "&groups=" + input.genericSearch.groups; return apiRequest({ return apiRequest({ method: 'GET', method: 'GET', Loading
gms-ui/src/components/GenericSearchResults.vue +11 −2 Original line number Original line Diff line number Diff line <template> <template> <div class="mt-sm-3"> <div class="mt-sm-3"> <b-form inline> Includes: <b-form-checkbox class="ml-4" v-model="input.genericSearch.users" @input="updateTypeFilter">users</b-form-checkbox> <b-form-checkbox class="ml-4" v-model="input.genericSearch.groups" @input="updateTypeFilter">groups</b-form-checkbox> </b-form> <div> <div> <div v-if="model.genericSearchResults.items && model.genericSearchResults.items.length > 0"> <div v-if="model.genericSearchResults.items && model.genericSearchResults.items.length > 0"> <p>Search results:</p> <p>Search results:</p> Loading Loading @@ -40,7 +45,7 @@ export default { '$route': 'updateSearchResults' '$route': 'updateSearchResults' }, }, methods: { methods: { openSearchResult: function(result) { openSearchResult(result) { switch (result.type) { switch (result.type) { case 'GROUP': case 'GROUP': this.$store.dispatch('openGroup', result.id); this.$store.dispatch('openGroup', result.id); Loading @@ -50,7 +55,11 @@ export default { break; break; } } }, }, updateSearchResults: function() { updateTypeFilter() { this.input.genericSearch.paginatorPage = 1; this.updateSearchResults(); }, updateSearchResults() { this.$store.dispatch('search', this.$route.query.q); this.$store.dispatch('search', this.$route.query.q); } } } } Loading
gms-ui/src/components/TopMenu.vue +2 −4 Original line number Original line Diff line number Diff line Loading @@ -12,7 +12,7 @@ <b-nav-item href="help/index.html" target="blank_" class="mr-4">Help</b-nav-item> <b-nav-item href="help/index.html" target="blank_" class="mr-4">Help</b-nav-item> <b-nav-form> <b-nav-form> <b-form-input size="sm" class="mr-sm-2" placeholder="Search" v-model.trim="input.genericSearch.filter" @keydown.native.enter.prevent="genericSearch"></b-form-input> <b-form-input size="sm" class="mr-sm-2" placeholder="Search" v-model.trim="input.genericSearch.filter" @keydown.native.enter.prevent="genericSearch"></b-form-input> <b-button size="sm" class="my-2 my-sm-0" type="button" v-on:click="genericSearch()">Search</b-button> <b-button size="sm" type="button" v-on:click="genericSearch()">Search</b-button> </b-nav-form> </b-nav-form> <b-nav-item-dropdown :text="user" right v-if="user"> <b-nav-item-dropdown :text="user" right v-if="user"> <b-dropdown-item href="logout">Logout</b-dropdown-item> <b-dropdown-item href="logout">Logout</b-dropdown-item> Loading @@ -39,10 +39,8 @@ export default { this.$router.push('/', () => {}); this.$router.push('/', () => {}); }, }, genericSearch() { genericSearch() { this.input.genericSearch.page = 1; this.input.genericSearch.pageSize = 20; this.$router.push({ path: '/search', query: { q: this.input.genericSearch.filter } }, () => {}); this.$router.push({ path: '/search', query: { q: this.input.genericSearch.filter } }, () => {}); this.$store.dispatch('search', this.input.genericSearch.filter); this.$store.commit('setGenericSearchFilter', this.input.genericSearch.filter); } } } } } } Loading
gms-ui/src/store.js +10 −2 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,9 @@ export default new Vuex.Store({ genericSearch: { genericSearch: { filter: '', filter: '', paginatorPage: 1, paginatorPage: 1, paginatorPageSize: 20 paginatorPageSize: 20, users: true, groups: true } } }, }, loading: false loading: false Loading Loading @@ -97,6 +99,10 @@ export default new Vuex.Store({ }, }, setGenericSearchFilter(state, filter) { setGenericSearchFilter(state, filter) { state.input.genericSearch.filter = filter; state.input.genericSearch.filter = filter; state.input.genericSearch.paginatorPage = 1; state.input.genericSearch.paginatorPageSize = 20; state.input.genericSearch.users = true; state.input.genericSearch.groups = true; }, }, removeInvitedRegistration(state, regId) { removeInvitedRegistration(state, regId) { let index = -1; let index = -1; Loading @@ -117,7 +123,9 @@ export default new Vuex.Store({ .then(model => commit('updateHomePageModel', model)); .then(model => commit('updateHomePageModel', model)); }, }, search({ commit, state }, filter) { search({ commit, state }, filter) { if (state.input.genericSearch.filter !== filter) { commit('setGenericSearchFilter', filter); commit('setGenericSearchFilter', filter); } client.search(state.input) client.search(state.input) .then(results => commit('displaySearchResults', results)); .then(results => commit('displaySearchResults', results)); }, }, Loading
gms/src/main/java/it/inaf/ia2/gms/controller/SearchController.java +4 −5 Original line number Original line Diff line number Diff line package it.inaf.ia2.gms.controller; package it.inaf.ia2.gms.controller; import it.inaf.ia2.gms.model.request.GenericSearchRequest; import it.inaf.ia2.gms.model.response.PaginatedData; import it.inaf.ia2.gms.model.response.PaginatedData; import it.inaf.ia2.gms.model.response.SearchResponseItem; import it.inaf.ia2.gms.model.response.SearchResponseItem; import it.inaf.ia2.gms.model.response.UserSearchResponse; import it.inaf.ia2.gms.model.response.UserSearchResponse; import it.inaf.ia2.gms.service.SearchService; import it.inaf.ia2.gms.service.SearchService; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController; @RestController @RestController Loading @@ -23,10 +24,8 @@ public class SearchController { private SearchService searchService; private SearchService searchService; @GetMapping(value = "/search", produces = MediaType.APPLICATION_JSON_VALUE) @GetMapping(value = "/search", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<PaginatedData<SearchResponseItem>> getSearchResults(@RequestParam("query") String query, public ResponseEntity<PaginatedData<SearchResponseItem>> getSearchResults(@Valid GenericSearchRequest searchRequest) { @RequestParam("page") int page, @RequestParam("pageSize") int pageSize) { PaginatedData<SearchResponseItem> response = searchService.search(searchRequest, servletRequest.getUserPrincipal().getName()); PaginatedData<SearchResponseItem> response = searchService.search(query, servletRequest.getUserPrincipal().getName(), page, pageSize); return ResponseEntity.ok(response); return ResponseEntity.ok(response); } } Loading