From e1fcc41ace04a261737b7840a439c2b6bd50816e Mon Sep 17 00:00:00 2001 From: Mathieu Jaumotte Date: Thu, 6 May 2021 13:16:26 +0200 Subject: [PATCH] avoiding duplicates between selected and suggested (wip) see comments in store/index.js --- .../vuejs/AccompanyingCourse/store/index.js | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js index 9bf4d4014..e6afa6374 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js @@ -56,31 +56,43 @@ let getDataPromise = getAccompanyingCourse(id) }, loadSuggestions(state, suggested) { + // les résultats combinent les valeurs suggérées et les valeurs sélectionnées + // si on change de recherche les valeurs sélectionnées doivent restées affichées ! + // c'est pq on affiche indépendamment les 2 tableaux, + // mais on veut s'assurer d'enlever les doublons dans le tableau des suggestions + + // problème: certaines fonctions javascript ne supportent pas de manipuler les 2 tableaux + // si l'un est un objet virtuel de vue (Proxy) + // [{},{},{}] et [Proxy,Proxy,Proxy] + + // a. remplace par les nouvelles valeurs + //state.add_persons.suggested = suggested; + + // b.1 réinitialise avec un tableau vide //state.add_persons.suggested = []; // <== empêche la création du proxy, réinitialiser autrement + + // b.2 vide le tableau avec splice state.add_persons.suggested.splice(0, state.add_persons.suggested.length ); - //console.log('suggestions', state.add_persons.suggested); + + console.log('suggestions', state.add_persons.suggested); + + // b. pousse les nouvelles valeurs dans le tableau suggested.forEach(function(item) { state.add_persons.suggested.push(item); }); - //state.add_persons.suggested = suggested; console.log('selections', state.add_persons.selected); console.log('suggestions', state.add_persons.suggested); - // doublons qd on ré-affiche des suggestions avec certains selected + // calcule l'intersection des 2 tableaux let intersection = state.add_persons.suggested.filter( item => state.add_persons.selected.indexOf(item) !== -1 - /* - function(item) { - let x = state.add_persons.selected.indexOf(item); - console.log('indexof', x); - return x !== -1 - } -*/ + //function(item) {let x = state.add_persons.selected.indexOf(item); console.log('indexof', x); return x !== -1; } ); console.log('intersection', intersection); + // enlève l'intersection des 2 tableaux state.add_persons.suggested = state.add_persons.suggested.filter(item => item !== intersection); }, @@ -119,6 +131,7 @@ let getDataPromise = getAccompanyingCourse(id) }, setQuery({ commit }, payload) { commit('setQuery', payload); + console.log('## action: setquery: payload', payload); if (payload.query.length >= 3) { searchPersons(payload.query) .then(suggested => new Promise((resolve, reject) => {