From 3b8f5d9f726978bb1202f19aa885c7b9617f0b50 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Wed, 13 Jul 2016 17:05:53 +0200 Subject: [PATCH] Correction JS de la recherche interne aux formulaires pour la vue 'users' --- view/js/machines-min.js | 8 +- view/js/machines.js | 4 +- view/js/users-min.js | 34 ++--- view/js/users.js | 311 +++++++++++++++++++++++++--------------- view/users.php | 2 - 5 files changed, 220 insertions(+), 139 deletions(-) diff --git a/view/js/machines-min.js b/view/js/machines-min.js index fa28e4c..615524d 100644 --- a/view/js/machines-min.js +++ b/view/js/machines-min.js @@ -1,17 +1,17 @@ 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 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:'userDefault/getById', id_user:pageManager.vars[1]}, function(response){ + // Si aucune erreur et un résultat + if( response.ModuleError == 0 ){ + found_remove = [ response.user ]; // 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: 'userDefault/search', - keywords: section.remove.input.search.keyword.value - }; - // On envoie la requete - api.send(getuid, function(uidanswer){ - if( uidanswer.ModuleError == 0 && uidanswer.users.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 machine que lors de la derniere recherche - if( lastsearch_remove == uidanswer.users[searchindex_remove].id_user ) - searchindex_remove = (searchindex_remove+1) % uidanswer.users.length; // on affiche le prochain (decalage cyclique) - else // si nouveau resultat, on remet l'indice a 0 + // on affiche le prochain (decalage cyclique) + searchindex_remove = (searchindex_remove+1) % found_remove.length; + // On met à jour l'auto-remplissage + autofill_remove(); + + + /* (3) Nouveaux mots-clés, on lance la recherche */ + }else{ + + /* (4) Redaction de la requete */ + var getUsers = { + path: 'userDefault/search', + keywords: section.remove.input.search.keyword.value + }; + + /* (5) On envoie la requête */ + api.send(getUsers, function(getUsersResponse){ + if( getUsersResponse.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 = getUsersResponse.users; + section.remove.input.search.sum.innerHTML = found_remove.length; - lastsearch_remove = uidanswer.users[searchindex_remove].id_user; - section.remove.input.search.id.value = lastsearch_remove; + // On met à jour l'auto-remplissage + autofill_remove(); + } - // Mise a jour des indices des resultats - section.remove.input.search.sum.innerHTML = uidanswer.users.length; + // On met à jour la dernière recherche + lastkeywords_remove = getUsers.keywords; + }); - // on auto-remplit le formulaire - autofill_remove(lastsearch_remove); + } - }else{ - section.remove.input.search.sum.innerHTML = 0; - autofill_remove(null); - } - }); } }, false); @@ -399,17 +442,20 @@ if( section.edit.element != null ){ lastname: document.querySelector(section.edit.text + '#edit_lastname'), mail: document.querySelector(section.edit.text + '#edit_mail'), password: document.querySelector(section.edit.text + '#edit_password'), - status: document.querySelector(section.edit.text + '#edit_status'), 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; - /* (1) Gestion de l'auto-remplissage par url */ - function autofill_edit(id_user){ - // On definit les valeurs par defaut + + + /* (2) Gestion de l'auto-remplissage par lien + ---------------------------------------------------------*/ + function autofill_edit(){ + /* (0) Valeurs par défaut */ var user_data = { id_user: '', code: '', @@ -417,86 +463,123 @@ if( section.edit.element != null ){ firstname: '', lastname: '', mail: '', - status: '', disable_input: true }; - // Si @id_user est un entier - if( !isNaN(id_user) ){ - - // On recupere le code + username de l'utilisateur selectionne - api.send({path:'userDefault/getById', id_user: id_user}, function(answer){ - if( answer.ModuleError == 0 ){ // Si aucune erreur - user_data = answer.user; - user_data.disable_input = false; - } + // {1} Si aucun résultat // + if( found_edit[searchindex_edit] == null ){ - // On enregistre l'UID de l'utilisateur - section.edit.input.search.id.value = user_data.id_user; - - // Auto-remplissage du formulaire - section.edit.input.code.value = user_data.code; - section.edit.input.username.value = user_data.username; - section.edit.input.firstname.value = user_data.firstname; - section.edit.input.lastname.value = user_data.lastname; - section.edit.input.mail.value = user_data.mail; - section.edit.input.password.value = ''; - section.edit.input.status.value = user_data.status; - - // On active ou pas le bouton "Modifier" - section.edit.input.submit.disabled = user_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 + user_data = { + id_user: found_edit[searchindex_edit]['id_user'], + code: found_edit[searchindex_edit]['code'], + username: found_edit[searchindex_edit]['username'], + firstname: found_edit[searchindex_edit]['firstname'], + lastname: found_edit[searchindex_edit]['lastname'], + mail: found_edit[searchindex_edit]['mail'], + 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 de la user + section.edit.input.search.id.value = user_data.id_user; + + // Auto-remplissage du formulaire + section.edit.input.code.value = user_data.code; + section.edit.input.username.value = user_data.username; + section.edit.input.firstname.value = user_data.firstname; + section.edit.input.lastname.value = user_data.lastname; + section.edit.input.mail.value = user_data.mail; + + // On gere le caractere "inactif" du submit + section.edit.input.submit.disabled = user_data.disable_input; + + + } + + // Gestion automatique au chargement de la page si ID_MACHINE dans url "/users/edit/:id_user:" + if( pageManager.vars.length >= 2 && !isNaN(pageManager.vars[1]) ){ + + // On récupère la user d'uid donné dans l'URL + api.send({path:'userDefault/getById', id_user:pageManager.vars[1]}, function(response){ + // Si aucune erreur et un résultat + if( response.ModuleError == 0 ){ + found_edit = [ response.user ]; // 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 l'utilisateur */ + /* (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: 'userDefault/search', - keywords: section.edit.input.search.keyword.value - }; - // On envoie la requete - api.send(getuid, function(uidanswer){ - if( uidanswer.ModuleError == 0 && uidanswer.users.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 le meme utilisateur que lors de la derniere recherche - if( lastsearch_edit == uidanswer.users[searchindex_edit].id_user ) - searchindex_edit = (searchindex_edit+1) % uidanswer.users.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 getUsers = { + path: 'userDefault/search', + keywords: section.edit.input.search.keyword.value + }; + + /* (5) On envoie la requête */ + api.send(getUsers, function(getUsersResponse){ + if( getUsersResponse.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 = getUsersResponse.users; + section.edit.input.search.sum.innerHTML = found_edit.length; - lastsearch_edit = uidanswer.users[searchindex_edit].id_user; - 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.users.length; + // On met à jour la dernière recherche + lastkeywords_edit = getUsers.keywords; + }); - // on auto-remplit le formulaire - autofill_edit(lastsearch_edit); + } - }else{ - section.edit.input.search.sum.innerHTML = 0; - autofill_edit(null); - } - }); } }, false); diff --git a/view/users.php b/view/users.php index 253dafa..79db065 100755 --- a/view/users.php +++ b/view/users.php @@ -80,7 +80,6 @@ echo "
"; echo "
"; echo "
"; - echo "
"; echo ""; echo ""; @@ -150,7 +149,6 @@ echo "
"; echo "
"; echo "
"; - echo "
"; echo ""; echo "";