From 61571b11055975f93d39d2dc6e36591161c17d17 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Wed, 13 Jul 2016 17:15:26 +0200 Subject: [PATCH] Correction JS de la recherche interne aux formulaires pour la vue 'groups' --- view/js/groups-min.js | 26 ++-- view/js/groups.js | 303 +++++++++++++++++++++++++++--------------- 2 files changed, 208 insertions(+), 121 deletions(-) diff --git a/view/js/groups-min.js b/view/js/groups-min.js index 2e6f2ea..007d6d0 100644 --- a/view/js/groups-min.js +++ b/view/js/groups-min.js @@ -1,18 +1,18 @@ var section={view:{text:'#CONTAINER > section[data-sublink="view"] ',element:document.querySelector('#CONTAINER > section[data-sublink="view"]'),searchbar:document.querySelector('#CONTAINER > section[data-sublink="view"] > .searchbar')},create:{text:'#CONTAINER > section[data-sublink="create"] ',element:document.querySelector('#CONTAINER > section[data-sublink="create"]')},remove:{text:'#CONTAINER > section[data-sublink="remove"] ',element:document.querySelector('#CONTAINER > section[data-sublink="remove"]')}, edit:{text:'#CONTAINER > section[data-sublink="edit"] ',element:document.querySelector('#CONTAINER > section[data-sublink="edit"]')}}; if(null!=section.view.element){1 article.inline-box[id]");for(c=0;c article.inline-box[id]");for(c=0;c= 2 && !isNaN(pageManager.vars[1]) ){ + + // On récupère la user d'uid donné dans l'URL + api.send({path:'clusterDefault/getById', id_cluster:pageManager.vars[1]}, function(response){ + // Si aucune erreur et un résultat + if( response.ModuleError == 0 ){ + found_remove = [ response.cluster ]; // On récupère le résultat + searchindex_remove = 0; // On remet le compteur à 0 + autofill_remove(); // On auto-remplit + } }); - }if( pageManager.vars.length >= 2 && !isNaN(pageManager.vars[1]) ) autofill_remove(pageManager.vars[1]); + + } - /* (3) Gestion de la recherche */ + /* (3) Gestion de la recherche + ---------------------------------------------------------*/ section.remove.input.search.submit.addEventListener('click', function(e){ // On annule l'envoi de base (PHP) e.preventDefault(); - // Si le champ n'est pas vide, on lance la recherche + + /* (1) Si le champ n'est pas vide */ if( section.remove.input.search.keyword.value != '' ){ - // Redaction de la requete - var getuid = { - path: 'clusterDefault/search', - keywords: section.remove.input.search.keyword.value - }; - // On envoie la requete - api.send(getuid, function(uidanswer){ - if( uidanswer.ModuleError == 0 && uidanswer.clusters.length > 0){ // si on a trouve qqch - section.remove.input.search.submit.anim('active', 1000); + /* (2) Si même mots-clés, on passe au prochain résultat */ + if( section.remove.input.search.keyword.value == lastkeywords_remove ){ - // Si on trouve la meme cluster que lors de la derniere recherche - if( lastsearch_remove == uidanswer.clusters[searchindex_remove].id_cluster ) - searchindex_remove = (searchindex_remove+1) % uidanswer.clusters.length; // on affiche le prochain (decalage cyclique) + // on affiche le prochain (decalage cyclique) + searchindex_remove = (searchindex_remove+1) % found_remove.length; + // On met à jour l'auto-remplissage + autofill_remove(); - lastsearch_remove = uidanswer.clusters[searchindex_remove].id_cluster; - section.remove.input.search.id.value = lastsearch_remove; - // Mise a jour des indices des resultats - section.remove.input.search.sum.innerHTML = uidanswer.clusters.length; + /* (3) Nouveaux mots-clés, on lance la recherche */ + }else{ - // on auto-remplit le formulaire - autofill_remove(lastsearch_remove); + /* (4) Redaction de la requete */ + var getClusters = { + path: 'clusterDefault/search', + keywords: section.remove.input.search.keyword.value + }; + + /* (5) On envoie la requête */ + api.send(getClusters, function(getClustersResponse){ + if( getClustersResponse.ModuleError == 0 ){ // si pas d'erreur + + // On notifie que la recherche est terminée + section.remove.input.search.submit.anim('active', 1000); + + /* (6) On met à jour les données des users, et le compteur */ + searchindex_remove = 0; + found_remove = getClustersResponse.clusters; + section.remove.input.search.sum.innerHTML = found_remove.length; + + // On met à jour l'auto-remplissage + autofill_remove(); + } + + // On met à jour la dernière recherche + lastkeywords_remove = getClusters.keywords; + }); + + } - }else{ - section.remove.input.search.sum.innerHTML = 0; - autofill_remove(null); - } - }); } }, false); @@ -358,92 +409,128 @@ if( section.edit.element != null ){ submit: document.querySelector(section.edit.text + '#edit_submit') }; - var lastsearch_edit = null; - var searchindex_edit = 0; + var lastkeywords_edit = ''; + var found_edit = []; + var searchindex_edit = 0; - // Gestion de l'auto-remplissage par lien - function autofill_edit(id_cluster){ - // On recupere le name de la cluster selectionnee + + /* (2) Gestion de l'auto-remplissage par lien + ---------------------------------------------------------*/ + function autofill_edit(){ + /* (0) Valeurs par défaut */ var cluster_data = { - id_cluster: '', - name: '', - disable_input: true + id_cluster: '', + name: '', + disable_input: true }; - // Si @id_cluster est un entier - if( !isNaN(id_cluster) ){ - api.send({path:'clusterDefault/getById', id_cluster: id_cluster}, function(answer){ - if( answer.ModuleError == 0 ){ // Aucune erreur - cluster_data = answer.cluster; - cluster_data.disable_input = false; - } + // {1} Si aucun résultat // + if( found_edit[searchindex_edit] == null ){ - // On enregistre l'UID de la cluster - section.edit.input.search.id.value = cluster_data.id_cluster; - - // Auto-remplissage du formulaire - section.edit.input.name.value = cluster_data.name; - - // On active ou pas le bouton "Modifier" - section.edit.input.submit.disabled = cluster_data.disable_input; - - // Mise a jour des indices des resultats - section.edit.input.search.num.innerHTML = searchindex_edit+1; - - }); - - }else + // Mise a jour des indices des resultats section.edit.input.search.num.innerHTML = 0; + searchindex_edit = 0; - }if( pageManager.vars.length >= 2 && !isNaN(pageManager.vars[1]) ) autofill_edit(pageManager.vars[1]); + + // {2} Si au moins 1 résultat // + }else{ + + // On recupere les données de la user selectionnee + cluster_data = { + id_cluster: found_edit[searchindex_edit]['id_cluster'], + name: found_edit[searchindex_edit]['name'], + disable_input: false + }; + + // Mise a jour des indices des resultats + section.edit.input.search.num.innerHTML = searchindex_edit+1; + + } + + + // {3} On auto-remplit le formulaire // + // On enregistre l'UID du groupe + section.edit.input.search.id.value = cluster_data.id_cluster; + + // Auto-remplissage du formulaire + section.edit.input.name.value = cluster_data.name; + + // On gere le caractere "inactif" du submit + section.edit.input.submit.disabled = cluster_data.disable_input; + + + } + + // Gestion automatique au chargement de la page si ID_CLUSTER dans url "/users/edit/:id_cluster:" + if( pageManager.vars.length >= 2 && !isNaN(pageManager.vars[1]) ){ + + // On récupère la user d'uid donné dans l'URL + api.send({path:'clusterDefault/getById', id_cluster:pageManager.vars[1]}, function(response){ + // Si aucune erreur et un résultat + if( response.ModuleError == 0 ){ + found_edit = [ response.cluster ]; // On récupère le résultat + searchindex_edit = 0; // On remet le compteur à 0 + autofill_edit(); // On auto-remplit + } + }); + + } - - - - - /* (2) Gestion de la recherche de la cluster */ + /* (3) Gestion de la recherche + ---------------------------------------------------------*/ section.edit.input.search.submit.addEventListener('click', function(e){ // On annule l'envoi de base (PHP) e.preventDefault(); - // Si le champ n'est pas vide, on lance la recherche + + /* (1) Si le champ n'est pas vide */ if( section.edit.input.search.keyword.value != '' ){ - // Redaction de la requete - var getuid = { - path: 'clusterDefault/search', - keywords: section.edit.input.search.keyword.value - }; - // On envoie la requete - api.send(getuid, function(uidanswer){ - if( uidanswer.ModuleError == 0 && uidanswer.clusters.length > 0 ){ // si on a trouve qqch - section.edit.input.search.submit.anim('active', 1000); + /* (2) Si même mots-clés, on passe au prochain résultat */ + if( section.edit.input.search.keyword.value == lastkeywords_edit ){ - // Si on trouve la meme cluster que lors de la derniere recherche - if( lastsearch_edit == uidanswer.clusters[searchindex_edit].id_cluster ) - searchindex_edit = (searchindex_edit+1) % uidanswer.clusters.length; // on affiche le prochain (decalage cyclique) - else // si nouveau resultat, on remet l'indice a 0 + // on affiche le prochain (decalage cyclique) + searchindex_edit = (searchindex_edit+1) % found_edit.length; + // On met à jour l'auto-remplissage + autofill_edit(); + + + /* (3) Nouveaux mots-clés, on lance la recherche */ + }else{ + + /* (4) Redaction de la requete */ + var getClusters = { + path: 'clusterDefault/search', + keywords: section.edit.input.search.keyword.value + }; + + /* (5) On envoie la requête */ + api.send(getClusters, function(getClustersResponse){ + if( getClustersResponse.ModuleError == 0 ){ // si pas d'erreur + + // On notifie que la recherche est terminée + section.edit.input.search.submit.anim('active', 1000); + + /* (6) On met à jour les données des users, et le compteur */ searchindex_edit = 0; + found_edit = getClustersResponse.clusters; + section.edit.input.search.sum.innerHTML = found_edit.length; - lastsearch_edit = uidanswer.clusters[searchindex_edit].id_cluster; - section.edit.input.search.id.value = lastsearch_edit; + // On met à jour l'auto-remplissage + autofill_edit(); + } - // Mise a jour des indices des resultats - section.edit.input.search.sum.innerHTML = uidanswer.clusters.length; + // On met à jour la dernière recherche + lastkeywords_edit = getClusters.keywords; + }); - // on auto-remplit le formulaire - autofill_edit(lastsearch_edit); + } - }else{ - section.edit.input.search.sum.innerHTML = 0; - autofill_edit(null); - } - }); } }, false);