fixed filters in search

This commit is contained in:
2021-10-27 18:01:57 +02:00
parent 20fea9dce1
commit 9f1e3c4f76
6 changed files with 79 additions and 19 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -30,19 +30,24 @@ export default {
},
methods: {
submit() {
console.log("search submited", this.typed, this.autocomplete)
console.log("search submited", this.typed, this.autocomplete, this.filters, this.slimFilters)
// unfocus the text input to hide the keyboard on mobile device
this.$input.blur()
// New search is triggered by Base.vue with router (which will also fill the store)
// cleaning slimfilters
let filters = []
this.slimFilters.forEach((filter, index) => {
console.log('foreach filters', filter)
console.log('onsubmit foreach filters', filter)
if(filter){
filters.push(filter)
}
})
console.log('Cleaning filters',this.slimFilters, filters)
// // this is just in case we landed in the page with filters in url params,
// // this.slimFilters is not filled but store/search filters is
// if(!filters.length){
// filters = this.filters
// }
console.log('Cleaning filters',this.slimFilters, this.filters, filters)
// push router
this.$router.push({name:'base', query:{
keys:this.typed,
@@ -69,7 +74,7 @@ export default {
},
onSelectFiltersChange(index, info){
console.log('onSelectFiltersChange', index, info, this.filters)
console.log('onSelectFiltersChange', index, info, this.slimFilters, this.filters)
this.slimFilters[index] = info.value
},
onClickFilters(e){
@@ -131,6 +136,7 @@ export default {
// customize the select filters
// http://slimselectjs.com/options
const selects = this.$el.querySelectorAll('select')
let slim;
selects.forEach((selectElement, index) => {
// get the first option to make the placeholder then empty it
const placeholder_option = selectElement.querySelector('option:first-child')
@@ -139,7 +145,7 @@ export default {
placeholder_option.removeAttribute("value")
placeholder_option.setAttribute("data-placeholder", true)
placeholder_option.innerHTML = ''
new SlimSelect({
slim = new SlimSelect({
select: selectElement,
placeholder: placeholder,
// allowDeselect: true
@@ -150,7 +156,10 @@ export default {
this.onSelectFiltersChange(index, info)
}
})
console.log('slimselect selected', slim.selected(), index)
this.slimFilters[index] = slim.selected()
})
console.log('slimSelect after init', this.slimFilters)
},
render(h) {
// console.log('searchForm render')

View File

@@ -69,7 +69,7 @@ export default {
},
setFilters (state, filters) {
console.log('store search setFilters', filters)
state.filters = filters
state.filters = typeof filters === 'string' ? filters.split(',') : filters
},
setInfos (state, infos) {
state.infos = infos
@@ -89,6 +89,9 @@ export default {
resetOffset (state) {
state.offset = 0
},
resetInfos (state) {
state.infos = false
},
incrementOffset (state) {
state.offset += state.limit
},
@@ -106,6 +109,7 @@ export default {
commit('resetCount')
commit('resetNoresults')
commit('resetOffset')
commit('resetInfos')
if (state.keys || state.term) {
this.commit('Common/setPagetitle', state.keys)
} else {
@@ -128,7 +132,7 @@ export default {
}
if (state.filters) {
console.log('getResults filters', state.filters)
params.filters = state.filters
params.filters = state.filters.join(',')
}
// console.log('Search getResults params', params)
const q = qs.stringify(params)