diff --git a/src/components/nav/Results.vue b/src/components/nav/Results.vue index c4b638d..19509ec 100644 --- a/src/components/nav/Results.vue +++ b/src/components/nav/Results.vue @@ -8,7 +8,7 @@

Resultats

{{ keys }}
- {{ resultsCount }} + {{ resultsCount }}
@@ -17,6 +17,7 @@ @@ -52,8 +53,12 @@ export default { ...mapState({ keys: state => state.Search.keys, results: state => state.Search.results, - resultsCount: state => state.Search.resultsCount - }) + resultsQuantity: state => state.Search.resultsQuantity, + offset: state => state.Search.offset + }), + resultsCount () { + return `${this.resultsQuantity.quantity} ${this.resultsQuantity.unit}` + } }, methods: { close () { diff --git a/src/components/nav/Search.vue b/src/components/nav/Search.vue index 17bc27c..12b1b57 100644 --- a/src/components/nav/Search.vue +++ b/src/components/nav/Search.vue @@ -114,13 +114,13 @@ export default { }, methods: { ...mapActions({ - getResults: 'Search/getResults', + newSearch: 'Search/newSearch', setSearchTypeValue: 'Search/setSearchTypeValue', - setSearchFiltersValue: 'Search/setSearchFiltersValue' + setSearchActiveFilters: 'Search/setSearchActiveFilters' }), submit () { console.log('submited', this.keys) - this.getResults() + this.newSearch() }, dropDownMenuPos (dropdownList, component, { width }) { /** @@ -170,15 +170,15 @@ export default { }, onFiltersNominumSelected (e) { console.log('onFiltersNominumSelected', e) - this.setSearchFiltersValue({ index: 'persons', value: e }) + this.setSearchActiveFilters({ index: 'persons', value: e }) }, onFiltersLocorumSelected (e) { console.log('onFiltersLocorumSelected', e) - this.setSearchFiltersValue({ index: 'places', value: e }) + this.setSearchActiveFilters({ index: 'places', value: e }) }, onFiltersOperumSelected (e) { console.log('onFiltersOperumSelected', e) - this.setSearchFiltersValue({ index: 'objects', value: e }) + this.setSearchActiveFilters({ index: 'objects', value: e }) } } } diff --git a/src/store/modules/search.js b/src/store/modules/search.js index f320308..d4418b1 100644 --- a/src/store/modules/search.js +++ b/src/store/modules/search.js @@ -17,7 +17,7 @@ export default { filters: { persons: [], places: [], objects: [] }, activeFilters: { persons: [], places: [], objects: [] }, results: [], - resultsCount: '', + resultsQuantity: null, isloading: false, limit: 10, offset: 0, @@ -37,9 +37,10 @@ export default { }, resetResults (state) { state.results = [] + state.offset = 0 }, setResultsCount (state, quantity) { - state.resultsCount = `${quantity.quantity} ${quantity.unit}` + state.resultsQuantity = quantity }, incrementOffset (state) { state.offset += state.limit @@ -88,7 +89,7 @@ export default { state.activeFilters[filters.index] = filters.value // console.log('state.activeFilters', state.activeFilters) }, - resetFiltersValues (state) { + resetActiveFilters (state) { for (var index of ['persons', 'places', 'objects']) { state.activeFilters[index] = [] } @@ -100,9 +101,6 @@ export default { getResults ({ dispatch, commit, state }, $infiniteLoadingState = null) { console.log('getResults', state.keys, $infiniteLoadingState) // reset results on new search - if (!$infiniteLoadingState) { - commit('resetResults') - } commit('setIsloading', true) let params = { search: `${state.keys}`, @@ -112,8 +110,17 @@ export default { if (state.searchTypeValue.code !== 'text') { params.type = state.searchTypeValue.code } + let f + for (var index of ['persons', 'places', 'objects']) { + if (state.activeFilters[index].length) { + f = `filter${index.charAt(0).toUpperCase()}${index.slice(1)}` + params[f] = [] + for (var i = 0; i < state.activeFilters[index].length; i++) { + params[f].push(state.activeFilters[index][i].code) + } + } + } // params.filterPersons = ['nomLouisXIII', 'nomChampagnePhilippeDe'] - // if () // console.log('Search getResults params', params); let q = qs.stringify(params) return REST.get(`${window.apipath}/search?` + q) @@ -143,17 +150,31 @@ export default { Promise.reject(error) }) }, + newSearch ({ dispatch, commit, state }) { + commit('resetResults') + commit('resetActiveFilters') + dispatch('getResults') + }, + filteredSearch ({ dispatch, commit, state }) { + commit('resetResults') + dispatch('getResults') + }, nextResultsBatch ({ dispatch, commit, state }, $infiniteLoadingState) { console.log('nextResultsBatch', $infiniteLoadingState) commit('incrementOffset') - dispatch('getResults', $infiniteLoadingState) + if (state.offset < state.resultsQuantity.quantity) { + dispatch('getResults', $infiniteLoadingState) + } else { + $infiniteLoadingState.complete() + } }, setSearchTypeValue ({ dispatch, commit, state }, value) { commit('setSearchTypeValue', value) }, - setSearchFiltersValue ({ dispatch, commit, state }, filters) { + setSearchActiveFilters ({ dispatch, commit, state }, filters) { // console.log('setSearchFiltersValue', filters) commit('setActiveFilters', filters) + dispatch('filteredSearch') } } }