From 8d217bb0db07b8946c810f9b5f94ca37f4f34cb0 Mon Sep 17 00:00:00 2001 From: tofulm Date: Tue, 26 Apr 2022 08:55:52 +0200 Subject: [PATCH] en enregistre en localstorage le filtrage de vue select, qui supplante les valeurs chargees par url --- js/gamutable.es6.js | 50 +++++++++++++++++++++++++------------ js/gamutable.js | 61 +++++++++++++++++++++++++++++++++------------ 2 files changed, 79 insertions(+), 32 deletions(-) diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index bc9ef6f..468d1c3 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -244,6 +244,7 @@ let monTableau = { options: [], searchInputHead: '', searchInputVal: '', + loadingVueSelect: true, }; }, mounted() { @@ -392,6 +393,23 @@ let monTableau = { }); } }, + filtreColSelected: { + handler() { + if (!this.loadingVueSelect) { + let ObfiltreSelect = []; + if (this.filtreColSelected) { + Object.entries(this.filtreColSelected).forEach(([champ, valeurs]) => { + if (!Array.isArray(valeurs)) { + valeurs = [valeurs]; + } + ObfiltreSelect.push({ champ, valeurs }); + }); + } + localStorage.setItem('filtreselect_' + this.nameLocalStorage, JSON.stringify(ObfiltreSelect)); + } + }, + deep: true, + }, }, methods: { hanldeSearchInput(event, head) { @@ -403,6 +421,9 @@ let monTableau = { this.searchInputVal = ''; this.searchInputHead = ''; }, + endLoadingVueSelect() { + this.loadingVueSelect = false; + }, calculer_nameLocalStorage() { if (this.apiuri) { return this.apiuri.match(/.*page=(.*)/)[1]; @@ -514,8 +535,15 @@ let monTableau = { Vue.nextTick(() => { this.chargement = false; - console.log(this.filtreselect); - if (this.filtreselect) { + let filtreselect = localStorage.getItem('filtreselect_' + this.nameLocalStorage); + if (filtreselect) { + let Tfiltres = JSON.parse(filtreselect); + Tfiltres.forEach((col) => { + let v = col.valeurs; + this.filtreColSelected[col.champ] = [...this.filtreColSelected[col.champ], ...v]; + }); + this.filtreColModif++; + } else if (this.filtreselect) { let Tfiltres = recupJson(decodeURIComponent(this.filtreselect)); localStorage.setItem('filtreselect_' + this.nameLocalStorage, JSON.stringify(Tfiltres)); Tfiltres.forEach((col) => { @@ -525,18 +553,6 @@ let monTableau = { ]; }); this.filtreColModif++; - } else { - let filtreselect = localStorage.getItem('filtreselect_' + this.nameLocalStorage); - if (filtreselect) { - let Tfiltres = JSON.parse(filtreselect); - Tfiltres.forEach((col) => { - this.filtreColSelected[col.champ] = [ - ...this.filtreColSelected[col.champ], - ...col.valeurs, - ]; - }); - this.filtreColModif++; - } } if (parseInt(this._id) > 0) { @@ -757,7 +773,8 @@ let monTableau = { clear-on-close searchable @selected="selectValCol" - @search:input="hanldeSearchInput($event, head)" + @search:focus="endLoadingVueSelect" + @removed="endLoadingVueSelect" >