2016-02-14 19:37:41 +00:00
|
|
|
// On referencie toutes les sections
|
|
|
|
var section = {
|
|
|
|
view: {
|
|
|
|
text: '#CONTAINER > section[data-sublink="view"] ',
|
2016-07-08 17:33:58 +00:00
|
|
|
element: document.querySelector('#CONTAINER > section[data-sublink="view"]'),
|
2017-07-29 17:15:00 +00:00
|
|
|
search: {
|
|
|
|
bar: document.querySelector('#CONTAINER > section[data-sublink="view"] > .searchbar'),
|
|
|
|
func: null,
|
|
|
|
time: null
|
|
|
|
}
|
2016-02-14 19:37:41 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
create: {
|
|
|
|
text: '#CONTAINER > section[data-sublink="create"] ',
|
|
|
|
element: document.querySelector('#CONTAINER > section[data-sublink="create"]')
|
2016-02-15 14:43:47 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
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"]')
|
2016-07-20 23:13:48 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
groups: {
|
|
|
|
text: '#CONTAINER > section[data-sublink="groups"] ',
|
|
|
|
element: document.querySelector('#CONTAINER > section[data-sublink="groups"]'),
|
2017-07-29 17:15:00 +00:00
|
|
|
search: {
|
|
|
|
bar: document.querySelector('#CONTAINER > section[data-sublink="groups"] > .searchbar'),
|
|
|
|
func: null,
|
|
|
|
time: null
|
|
|
|
}
|
2016-02-14 19:37:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [1] view -> AFFICHAGE DES UTILISATEURS
|
|
|
|
=========================================================*/
|
2016-02-14 21:50:07 +00:00
|
|
|
if( section.view.element != null ){
|
|
|
|
|
2016-07-12 13:16:07 +00:00
|
|
|
/* (0) On gère le zoom sur un utilisateur via URL */
|
|
|
|
if( pageManager.vars.length > 1 && !isNaN(pageManager.vars[1]) ){
|
|
|
|
document.location = '#'+pageManager.vars[1];
|
2016-07-23 22:35:56 +00:00
|
|
|
if( document.getElementById(pageManager.vars[1]) != null )
|
|
|
|
document.getElementById(pageManager.vars[1]).addClass('selected');
|
2016-07-12 15:40:40 +00:00
|
|
|
}
|
2016-07-12 13:16:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-16 19:27:57 +00:00
|
|
|
/* (1) On recupere tous les liens */
|
2016-02-14 21:50:07 +00:00
|
|
|
section.view.link = {
|
|
|
|
edit: document.querySelectorAll(section.view.text + '.link_edit[data-user]'),
|
|
|
|
remove: document.querySelectorAll(section.view.text + '.link_remove[data-user]')
|
|
|
|
};
|
|
|
|
|
2016-07-08 17:33:58 +00:00
|
|
|
/* (2) On récupère toutes les actions de groupes */
|
|
|
|
section.view.group = {
|
|
|
|
rem: document.querySelectorAll(section.view.text + '.rem-group[data-user][data-group]'),
|
|
|
|
add: document.querySelectorAll(section.view.text + '.add-group[data-user]')
|
|
|
|
};
|
|
|
|
|
2016-02-16 19:27:57 +00:00
|
|
|
|
2016-07-08 17:33:58 +00:00
|
|
|
/* (3) Gestion de la recherche instantannee */
|
2017-07-29 17:15:00 +00:00
|
|
|
section.view.search.func = function(){
|
2016-02-16 19:27:57 +00:00
|
|
|
|
|
|
|
var search = {
|
|
|
|
path: 'userDefault/search',
|
2017-07-29 17:15:00 +00:00
|
|
|
keywords: section.view.search.bar.value
|
2016-02-16 19:27:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
// On envoie la requete
|
|
|
|
api.send(search, function(result){
|
2017-02-16 17:34:38 +00:00
|
|
|
if( result.error != 0 ) return;
|
2016-07-03 12:20:42 +00:00
|
|
|
|
2016-02-16 21:10:36 +00:00
|
|
|
console.log(result.users.length);
|
2017-02-16 17:34:38 +00:00
|
|
|
if( result.error == 0 ){ // si aucune erreur
|
2016-07-03 12:20:42 +00:00
|
|
|
|
2016-02-16 19:27:57 +00:00
|
|
|
// On enregistre tous les UID dans un tableau
|
|
|
|
var uid_list = [];
|
|
|
|
for( var i = 0 ; i < result.users.length ; i++ )
|
|
|
|
uid_list.push( result.users[i].id_user);
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2016-02-16 19:27:57 +00:00
|
|
|
// On recupere la liste des elements correspondants aux utilisateurs
|
|
|
|
var user_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]');
|
|
|
|
|
2016-02-16 21:10:36 +00:00
|
|
|
// Pour chaque utilisateur
|
2016-02-16 19:27:57 +00:00
|
|
|
for( var i = 0 ; i < user_list.length ; i++ ){
|
|
|
|
// Si doit etre visible
|
|
|
|
if( uid_list.indexOf(user_list[i].id) > -1 )
|
|
|
|
user_list[i].remClass('hidden');
|
|
|
|
// Si ne doit pas etre visible
|
|
|
|
else
|
|
|
|
user_list[i].addClass('hidden');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2017-07-29 17:15:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
section.view.search.bar.addEventListener('keyup', function(e){
|
|
|
|
|
|
|
|
if( section.view.search.time != null )
|
|
|
|
clearTimeout(section.view.search.time);
|
|
|
|
|
|
|
|
section.view.search.time = setTimeout(section.view.search.func, 500);
|
|
|
|
|
2016-02-16 19:27:57 +00:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
|
2016-07-08 17:33:58 +00:00
|
|
|
/* (4) On gere la "redirection" vers la modification */
|
2016-02-14 21:50:07 +00:00
|
|
|
for( var i = 0 ; i < section.view.link.edit.length ; i++ ){
|
|
|
|
|
|
|
|
section.view.link.edit[i].addEventListener('click', function(e){
|
2017-01-08 18:14:22 +00:00
|
|
|
pageManager.vars = [ 'edit', e.target.getData('user') ];
|
|
|
|
pageManager.refresh();
|
2016-02-14 21:50:07 +00:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-07-08 17:33:58 +00:00
|
|
|
/* (5) On gere la "redirection" vers la suppression */
|
2016-02-14 21:50:07 +00:00
|
|
|
for( var i = 0 ; i < section.view.link.remove.length ; i++ ){
|
|
|
|
|
|
|
|
section.view.link.remove[i].addEventListener('click', function(e){
|
2017-01-08 18:14:22 +00:00
|
|
|
pageManager.vars = [ 'remove', e.target.getData('user') ];
|
|
|
|
pageManager.refresh();
|
2016-02-14 21:50:07 +00:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-07-08 17:33:58 +00:00
|
|
|
/* (6) On gere la "suppression" d'un groupe */
|
2017-02-18 15:53:35 +00:00
|
|
|
section.view.group.remfunc = function(e){
|
|
|
|
// {1} On rédige la requête //
|
|
|
|
var request = {
|
|
|
|
path: 'userDefault/unlink',
|
|
|
|
id_user: e.target.getData('user'),
|
|
|
|
id_cluster: e.target.getData('group')
|
|
|
|
};
|
|
|
|
|
|
|
|
// {2} On envoie la requête //
|
|
|
|
api.send(request, function(response){
|
|
|
|
|
|
|
|
// {3} Si erreur, on ne fait rien //
|
|
|
|
if( response.error != 0 )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
|
|
// {4} Si tout s'est bien passé //
|
|
|
|
e.target.parentNode.parentNode.removeChild( e.target.parentNode );
|
|
|
|
});
|
|
|
|
};
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2017-02-18 15:53:35 +00:00
|
|
|
|
|
|
|
for( var i = 0 ; i < section.view.group.rem.length ; i++ )
|
|
|
|
section.view.group.rem[i].addEventListener('click', section.view.group.remfunc, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* (6) On gere la "modification" (ajout) des groupes */
|
|
|
|
for( var i = 0 ; i < section.view.group.add.length ; i++ ){
|
|
|
|
|
|
|
|
section.view.group.add[i].addEventListener('mouseup', function(e){
|
|
|
|
|
|
|
|
/* (1) Check if already opened */
|
|
|
|
var opened = e.target.innerHTML != '+';
|
|
|
|
|
|
|
|
/* (2) Hide all dropdowns */
|
|
|
|
for( j = 0 ; j < section.view.group.add.length ; j++ )
|
|
|
|
section.view.group.add[j].innerHTML = '+';
|
|
|
|
|
|
|
|
/* (3) Try to show dropdown if not already */
|
|
|
|
if( !opened ){
|
|
|
|
|
|
|
|
/* (1) Get the group id/type */
|
|
|
|
if( !/^\d+$/.test(e.target.getData('user')) )
|
|
|
|
return;
|
|
|
|
|
|
|
|
var user_id = parseInt(e.target.getData('user'));
|
|
|
|
|
|
|
|
/* (2) Get already members ids */
|
|
|
|
var brothers = e.target.parentNode.children[1].children;
|
|
|
|
var already = []; // will contain already ids
|
|
|
|
|
|
|
|
|
|
|
|
for( j = 0 ; j < brothers.length ; j++ )
|
|
|
|
already += parseInt( brothers[j].children[0].getData('group') );
|
2016-07-08 17:33:58 +00:00
|
|
|
|
2017-02-18 15:53:35 +00:00
|
|
|
/* (3) Call list of members */
|
|
|
|
api.send({path: 'clusterDefault/getAll', class: 0}, function(response){
|
2016-07-08 17:33:58 +00:00
|
|
|
|
2017-02-18 15:53:35 +00:00
|
|
|
// Manage error
|
|
|
|
if( response.error != 0 ){
|
|
|
|
console.warn('error loading list of members');
|
|
|
|
return;
|
|
|
|
}
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2016-07-08 17:33:58 +00:00
|
|
|
|
2017-02-18 15:53:35 +00:00
|
|
|
// remove already members
|
|
|
|
var members = response.clusters;
|
2016-07-08 17:33:58 +00:00
|
|
|
|
|
|
|
|
2017-02-18 15:53:35 +00:00
|
|
|
/* (4) Build dropdown content without already members */
|
|
|
|
dropdown = "<div class='dropdown'>";
|
|
|
|
|
|
|
|
for( j = 0 ; j < members.length ; j++ ){
|
|
|
|
if( already.indexOf(members[j].id_user_cluster) > -1 )
|
|
|
|
continue;
|
|
|
|
|
|
|
|
dropdown += "<span data-groupid='"+members[j].id_user_cluster+"'>"+members[j].name+"</span>";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dropdown += "</div>";
|
|
|
|
|
|
|
|
e.target.innerHTML = '+'+dropdown;
|
|
|
|
|
|
|
|
|
|
|
|
/* (5) Attach events to dropdown elements */
|
|
|
|
var dropdownElements = e.target.children[0].children;
|
|
|
|
|
|
|
|
for( j = 0 ; j < dropdownElements.length ; j++ )
|
|
|
|
dropdownElements[j].addEventListener('mousedown', function(e2){
|
|
|
|
|
|
|
|
// {1} Get member id/username //
|
|
|
|
var groupid = e2.target.getData('groupid');
|
|
|
|
var groupname = e2.target.innerHTML;
|
|
|
|
|
|
|
|
// manage error
|
|
|
|
if( groupid === false )
|
|
|
|
return;
|
|
|
|
|
|
|
|
// {2} Request : add member to group //
|
|
|
|
var request = {
|
|
|
|
path: 'userDefault/link',
|
|
|
|
id_user: user_id,
|
|
|
|
id_cluster: groupid
|
|
|
|
};
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2017-02-18 15:53:35 +00:00
|
|
|
|
|
|
|
// {3} Call link //
|
|
|
|
api.send(request, function(response2){
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2017-02-18 15:53:35 +00:00
|
|
|
// manage error
|
|
|
|
if( response2.error != 0 ){
|
|
|
|
console.warn('cannot link user to group');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Remove dropdown (in order to be reloaded with new members);
|
|
|
|
e.target.innerHTML = '+';
|
|
|
|
|
|
|
|
// {4} Update display //
|
|
|
|
var newMemberRemoveIcon = document.createElement('span');
|
|
|
|
newMemberRemoveIcon.setAttribute('class', 'rem-group');
|
|
|
|
newMemberRemoveIcon.setAttribute('data-group', groupid);
|
|
|
|
newMemberRemoveIcon.setAttribute('data-user', e.target.getData('user'));
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2017-02-18 15:53:35 +00:00
|
|
|
newMemberRemoveIcon.addEventListener('click', section.view.group.remfunc, false);
|
|
|
|
|
|
|
|
var newMember = document.createElement('span');
|
|
|
|
newMember.appendChild( document.createTextNode(groupname) );
|
|
|
|
newMember.appendChild(newMemberRemoveIcon);
|
|
|
|
|
|
|
|
e.target.parentNode.children[1].appendChild(newMember);
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
2016-07-08 17:33:58 +00:00
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-07-12 15:40:40 +00:00
|
|
|
};
|
2016-02-14 21:50:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-14 19:37:41 +00:00
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
/* [2] create -> Creation d'utilisateur
|
|
|
|
=========================================================*/
|
2016-02-14 19:37:41 +00:00
|
|
|
if( section.create.element != null ){
|
|
|
|
|
|
|
|
// On recupere tous les champs
|
|
|
|
section.create.input = {
|
|
|
|
code: document.querySelector(section.create.text + '#create_code'),
|
|
|
|
username: document.querySelector(section.create.text + '#create_username'),
|
|
|
|
firstname: document.querySelector(section.create.text + '#create_firstname'),
|
2016-02-14 20:22:07 +00:00
|
|
|
lastname: document.querySelector(section.create.text + '#create_lastname'),
|
2016-02-14 19:37:41 +00:00
|
|
|
mail: document.querySelector(section.create.text + '#create_mail'),
|
|
|
|
|
|
|
|
submit: document.querySelector(section.create.text + '#create_submit')
|
2017-09-03 17:26:59 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
// On recupere tous les messages d'erreur
|
|
|
|
section.create.errmsg = {
|
|
|
|
code: document.querySelector(section.create.text + '.error-msg.create_code'),
|
|
|
|
username: document.querySelector(section.create.text + '.error-msg.create_username'),
|
|
|
|
firstname: document.querySelector(section.create.text + '.error-msg.create_firstname'),
|
|
|
|
lastname: document.querySelector(section.create.text + '.error-msg.create_lastname'),
|
|
|
|
mail: document.querySelector(section.create.text + '.error-msg.create_mail')
|
|
|
|
};
|
2016-02-14 19:37:41 +00:00
|
|
|
|
|
|
|
// On initialise le gestionnaire des saisies
|
|
|
|
var createChecker = new inputChecker();
|
|
|
|
|
|
|
|
|
|
|
|
/* (1) Gestion du code RFID */
|
|
|
|
createChecker.append( section.create.input.code, format_code, '01-AB-CD-23');
|
|
|
|
section.create.input.code.addEventListener('keyup', function(e){
|
|
|
|
e.target.value = e.target.value.toUpperCase();
|
|
|
|
if( !createChecker.check(e.target) )
|
|
|
|
createChecker.correct(e.target, false);
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
2016-02-14 20:22:07 +00:00
|
|
|
|
|
|
|
/* (n) Gestion de l'envoi du formulaire */
|
|
|
|
section.create.input.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
2017-09-03 17:26:59 +00:00
|
|
|
section.create.errmsg.code.innerHTML =
|
|
|
|
section.create.errmsg.username.innerHTML =
|
|
|
|
section.create.errmsg.firstname.innerHTML =
|
|
|
|
section.create.errmsg.lastname.innerHTML =
|
|
|
|
section.create.errmsg.mail.innerHTML = '';
|
|
|
|
|
2016-02-14 20:22:07 +00:00
|
|
|
var request = {
|
|
|
|
path: 'userDefault/create', // On veut creer un utilisateur
|
2016-07-03 13:03:31 +00:00
|
|
|
code: section.create.input.code.value,
|
|
|
|
username: section.create.input.username.value,
|
|
|
|
firstname: section.create.input.firstname.value,
|
|
|
|
lastname: section.create.input.lastname.value,
|
2016-07-20 18:05:32 +00:00
|
|
|
mail: section.create.input.mail.value
|
2016-02-14 20:22:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
api.send(request, function(answer){
|
2017-02-16 17:34:38 +00:00
|
|
|
if( answer.error == 0 ){ // Tout s'est bien deroule
|
2016-02-14 20:58:49 +00:00
|
|
|
console.log('Utilisateur cree!');
|
2016-02-18 09:54:26 +00:00
|
|
|
|
2016-02-18 09:55:10 +00:00
|
|
|
section.create.input.submit.anim('active', 1500);
|
2016-07-21 09:04:18 +00:00
|
|
|
|
2016-07-23 22:03:02 +00:00
|
|
|
// on vide les champs
|
|
|
|
section.create.input.code.value = '';
|
|
|
|
section.create.input.username.value = '';
|
|
|
|
section.create.input.firstname.value = '';
|
|
|
|
section.create.input.lastname.value = '';
|
|
|
|
section.create.input.mail.value = '';
|
2016-07-21 10:23:18 +00:00
|
|
|
|
2017-09-03 17:26:59 +00:00
|
|
|
}else{ // Erreur
|
2017-02-16 17:34:38 +00:00
|
|
|
console.error('ModuleError::'+answer.error);
|
2017-09-03 17:26:59 +00:00
|
|
|
if( /^[^']*'(\w+)'/i.test(answer.ErrorDescription) )
|
|
|
|
section.create.errmsg[RegExp.$1].innerHTML = 'Champ manquant ou erronné.';
|
|
|
|
}
|
2016-02-14 20:58:49 +00:00
|
|
|
|
2016-02-14 20:22:07 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [3] remove -> Suppression d'utilisateur
|
|
|
|
=========================================================*/
|
2017-01-09 11:20:45 +00:00
|
|
|
var lastkeywords_remove = '';
|
|
|
|
var found_remove = [];
|
|
|
|
var searchindex_remove = 0;
|
|
|
|
|
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
if( section.remove.element != null ){
|
|
|
|
|
2016-02-17 10:31:46 +00:00
|
|
|
/* (1) Definition des champs */
|
2016-02-15 14:43:47 +00:00
|
|
|
section.remove.input = {
|
2016-02-17 10:31:46 +00:00
|
|
|
search: {
|
2016-02-17 11:09:23 +00:00
|
|
|
view: document.querySelector(section.remove.text + '.remove_search_view'),
|
|
|
|
num: document.querySelector(section.remove.text + '.remove_search_num'),
|
|
|
|
sum: document.querySelector(section.remove.text + '.remove_search_sum'),
|
|
|
|
|
2016-02-17 10:31:46 +00:00
|
|
|
keyword: document.querySelector(section.remove.text + '#remove_search_keyword'),
|
|
|
|
id: document.querySelector(section.remove.text + '#remove_search_id'),
|
|
|
|
submit: document.querySelector(section.remove.text + '#remove_search_submit')
|
|
|
|
},
|
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
code: document.querySelector(section.remove.text + '#remove_code'),
|
|
|
|
username: document.querySelector(section.remove.text + '#remove_username'),
|
2016-02-15 22:07:20 +00:00
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
submit: document.querySelector(section.remove.text + '#remove_submit')
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
/* (2) Gestion de l'auto-remplissage par lien
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
function autofill_remove(){
|
|
|
|
/* (0) Valeurs par défaut */
|
2016-02-17 10:31:46 +00:00
|
|
|
var user_data = {
|
|
|
|
id_user: '',
|
|
|
|
username: '',
|
2016-07-13 15:05:53 +00:00
|
|
|
code: '',
|
2016-02-17 10:31:46 +00:00
|
|
|
disable_input: true
|
|
|
|
};
|
2016-02-15 14:43:47 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
|
|
|
|
// {1} Si aucun résultat //
|
|
|
|
if( found_remove[searchindex_remove] == null ){
|
2016-02-15 14:43:47 +00:00
|
|
|
|
2016-02-18 10:13:45 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// Mise a jour des indices des resultats
|
|
|
|
section.remove.input.search.num.innerHTML = 0;
|
|
|
|
searchindex_remove = 0;
|
2016-02-18 10:13:45 +00:00
|
|
|
|
2016-02-16 21:59:01 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// {2} Si au moins 1 résultat //
|
|
|
|
}else{
|
2016-02-17 11:09:23 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// On recupere les données de la user selectionnee
|
|
|
|
user_data = {
|
|
|
|
id_user: found_remove[searchindex_remove]['id_user'],
|
|
|
|
username: found_remove[searchindex_remove]['username'],
|
|
|
|
code: found_remove[searchindex_remove]['code'],
|
|
|
|
disable_input: false
|
|
|
|
};
|
|
|
|
|
|
|
|
// Mise a jour des indices des resultats
|
2016-02-17 11:09:23 +00:00
|
|
|
section.remove.input.search.num.innerHTML = searchindex_remove+1;
|
2016-02-16 21:59:01 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// {3} On auto-remplit le formulaire //
|
|
|
|
// On enregistre l'UID de la user
|
|
|
|
section.remove.input.search.id.value = user_data.id_user;
|
|
|
|
|
|
|
|
// Auto-remplissage du formulaire
|
|
|
|
section.remove.input.username.value = user_data.username;
|
|
|
|
section.remove.input.code.value = user_data.code;
|
|
|
|
|
|
|
|
// On gere le caractere "inactif" du submit
|
|
|
|
section.remove.input.submit.disabled = user_data.disable_input;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-02-15 22:07:20 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
/* (3) Gestion de la recherche
|
|
|
|
---------------------------------------------------------*/
|
2016-02-17 10:31:46 +00:00
|
|
|
section.remove.input.search.submit.addEventListener('click', function(e){
|
2016-02-15 22:07:20 +00:00
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
|
|
|
|
/* (1) Si le champ n'est pas vide */
|
2016-02-17 10:31:46 +00:00
|
|
|
if( section.remove.input.search.keyword.value != '' ){
|
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
/* (2) Si même mots-clés, on passe au prochain résultat */
|
|
|
|
if( section.remove.input.search.keyword.value == lastkeywords_remove ){
|
2016-02-18 10:17:59 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// 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){
|
2017-02-16 17:34:38 +00:00
|
|
|
if( getUsersResponse.error == 0 ){ // si pas d'erreur
|
2016-07-13 15:05:53 +00:00
|
|
|
|
|
|
|
// 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 */
|
2016-02-17 11:09:23 +00:00
|
|
|
searchindex_remove = 0;
|
2016-07-13 15:05:53 +00:00
|
|
|
found_remove = getUsersResponse.users;
|
|
|
|
section.remove.input.search.sum.innerHTML = found_remove.length;
|
2016-02-17 10:31:46 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// On met à jour l'auto-remplissage
|
|
|
|
autofill_remove();
|
|
|
|
}
|
2016-02-17 11:09:23 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// On met à jour la dernière recherche
|
|
|
|
lastkeywords_remove = getUsers.keywords;
|
|
|
|
});
|
2016-02-17 11:09:23 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
}
|
2016-02-15 22:07:20 +00:00
|
|
|
|
2016-02-17 10:31:46 +00:00
|
|
|
}
|
2016-02-15 22:07:20 +00:00
|
|
|
|
2016-02-17 10:31:46 +00:00
|
|
|
}, false);
|
2016-07-03 12:20:42 +00:00
|
|
|
|
2016-02-15 22:07:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-17 10:31:46 +00:00
|
|
|
/* (n) Gestion de l'envoi du formulaire */
|
|
|
|
section.remove.input.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
2016-02-15 22:07:20 +00:00
|
|
|
|
2016-02-17 10:31:46 +00:00
|
|
|
// Si l'id est defini
|
|
|
|
if( section.remove.input.search.id.value != '' ){
|
2016-02-15 22:07:20 +00:00
|
|
|
|
2016-02-17 10:31:46 +00:00
|
|
|
/* (2) On supprime l'utilisateur */
|
|
|
|
var request = {
|
|
|
|
path: 'userDefault/delete', // On veut supprimer cet utilisateur
|
2016-07-03 13:03:31 +00:00
|
|
|
id_user: section.remove.input.search.id.value
|
2016-02-17 10:31:46 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
api.send(request, function(answer){
|
2017-02-16 17:34:38 +00:00
|
|
|
if( answer.error == 0 && answer.status == true ){ // Tout s'est bien deroule
|
2016-02-17 10:31:46 +00:00
|
|
|
console.log('Utilisateur supprime!');
|
|
|
|
|
2016-02-18 09:55:10 +00:00
|
|
|
section.remove.input.submit.anim('active', 1500);
|
2016-07-20 18:05:32 +00:00
|
|
|
|
2016-07-23 22:03:02 +00:00
|
|
|
/* (1) On actualise la recherche
|
|
|
|
---------------------------------------------------------*/
|
2016-07-23 22:35:56 +00:00
|
|
|
if( section.remove.input.search.keyword.value.length == 0 ){ // Si aucun champ de recherche, on efface juste l'entrée
|
|
|
|
|
|
|
|
// On supprime toutes les valeurs
|
|
|
|
found_remove = [];
|
|
|
|
searchindex_remove = 0;
|
|
|
|
|
|
|
|
}else{
|
|
|
|
var getUsers = {
|
|
|
|
path: 'userDefault/search',
|
|
|
|
keywords: section.remove.input.search.keyword.value
|
|
|
|
};
|
|
|
|
|
|
|
|
api.send(getUsers, function(getUsersResponse){
|
2017-02-16 17:34:38 +00:00
|
|
|
if( getUsersResponse.error == 0 ){ // si pas d'erreur
|
2016-07-23 22:35:56 +00:00
|
|
|
searchindex_remove = 0;
|
|
|
|
found_remove = getUsersResponse.users;
|
|
|
|
section.remove.input.search.sum.innerHTML = found_remove.length;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
autofill_remove();
|
2016-07-23 22:03:02 +00:00
|
|
|
|
|
|
|
|
2016-02-17 10:31:46 +00:00
|
|
|
}else // Erreur
|
2017-02-16 17:34:38 +00:00
|
|
|
console.error('ModuleError::'+answer.error);
|
2016-02-17 10:31:46 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
}
|
2016-02-15 22:07:20 +00:00
|
|
|
|
|
|
|
}, false);
|
2016-02-15 14:43:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [4] edit -> Modification d'utilisateur
|
|
|
|
=========================================================*/
|
2017-01-09 11:20:45 +00:00
|
|
|
var lastkeywords_edit = '';
|
|
|
|
var found_edit = [];
|
|
|
|
var searchindex_edit = 0;
|
|
|
|
|
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
if( section.edit.element != null ){
|
|
|
|
|
|
|
|
// Definition des champs
|
|
|
|
section.edit.input = {
|
2016-02-16 13:25:06 +00:00
|
|
|
search: {
|
2016-02-17 11:09:23 +00:00
|
|
|
view: document.querySelector(section.edit.text + '.edit_search_view'),
|
2016-07-12 13:16:07 +00:00
|
|
|
num: document.querySelector(section.edit.text + '.edit_search_num'),
|
|
|
|
sum: document.querySelector(section.edit.text + '.edit_search_sum'),
|
2016-02-17 11:09:23 +00:00
|
|
|
|
2016-02-16 13:25:06 +00:00
|
|
|
keyword: document.querySelector(section.edit.text + '#edit_search_keyword'),
|
|
|
|
id: document.querySelector(section.edit.text + '#edit_search_id'),
|
|
|
|
submit: document.querySelector(section.edit.text + '#edit_search_submit')
|
|
|
|
},
|
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
code: document.querySelector(section.edit.text + '#edit_code'),
|
|
|
|
username: document.querySelector(section.edit.text + '#edit_username'),
|
|
|
|
firstname: document.querySelector(section.edit.text + '#edit_firstname'),
|
|
|
|
lastname: document.querySelector(section.edit.text + '#edit_lastname'),
|
|
|
|
mail: document.querySelector(section.edit.text + '#edit_mail'),
|
|
|
|
|
|
|
|
submit: document.querySelector(section.edit.text + '#edit_submit')
|
|
|
|
};
|
|
|
|
|
2017-02-20 10:59:44 +00:00
|
|
|
/* (1) Gestion du code RFID */
|
|
|
|
createChecker.append( section.edit.input.code, format_code, '01-AB-CD-23');
|
|
|
|
section.edit.input.code.addEventListener('keyup', function(e){
|
|
|
|
e.target.value = e.target.value.toUpperCase();
|
|
|
|
if( !createChecker.check(e.target) )
|
|
|
|
createChecker.correct(e.target, false);
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
|
|
|
|
/* (2) Gestion de l'auto-remplissage par lien
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
function autofill_edit(){
|
|
|
|
/* (0) Valeurs par défaut */
|
2016-02-16 21:59:01 +00:00
|
|
|
var user_data = {
|
|
|
|
id_user: '',
|
|
|
|
code: '',
|
|
|
|
username: '',
|
|
|
|
firstname: '',
|
|
|
|
lastname: '',
|
|
|
|
mail: '',
|
|
|
|
disable_input: true
|
|
|
|
};
|
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// {1} Si aucun résultat //
|
|
|
|
if( found_edit[searchindex_edit] == null ){
|
2016-02-16 21:59:01 +00:00
|
|
|
|
2016-02-16 13:25:06 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// Mise a jour des indices des resultats
|
|
|
|
section.edit.input.search.num.innerHTML = 0;
|
|
|
|
searchindex_edit = 0;
|
2016-02-16 21:59:01 +00:00
|
|
|
|
2016-02-16 13:25:06 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// {2} Si au moins 1 résultat //
|
|
|
|
}else{
|
2016-02-16 21:59:01 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// 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
|
|
|
|
};
|
2016-02-16 21:59:01 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// Mise a jour des indices des resultats
|
|
|
|
section.edit.input.search.num.innerHTML = searchindex_edit+1;
|
2016-02-16 21:59:01 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// {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;
|
2016-02-16 13:25:06 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// On gere le caractere "inactif" du submit
|
|
|
|
section.edit.input.submit.disabled = user_data.disable_input;
|
2016-02-16 13:25:06 +00:00
|
|
|
|
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* (3) Gestion de la recherche
|
|
|
|
---------------------------------------------------------*/
|
2016-02-16 13:25:06 +00:00
|
|
|
section.edit.input.search.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
|
|
|
|
/* (1) Si le champ n'est pas vide */
|
2016-02-16 13:25:06 +00:00
|
|
|
if( section.edit.input.search.keyword.value != '' ){
|
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
/* (2) Si même mots-clés, on passe au prochain résultat */
|
|
|
|
if( section.edit.input.search.keyword.value == lastkeywords_edit ){
|
|
|
|
|
|
|
|
// on affiche le prochain (decalage cyclique)
|
|
|
|
searchindex_edit = (searchindex_edit+1) % found_edit.length;
|
|
|
|
// On met à jour l'auto-remplissage
|
|
|
|
autofill_edit();
|
2016-02-18 10:17:59 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
|
|
|
|
/* (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){
|
2017-02-16 17:34:38 +00:00
|
|
|
if( getUsersResponse.error == 0 ){ // si pas d'erreur
|
2016-07-13 15:05:53 +00:00
|
|
|
|
|
|
|
// 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 */
|
2016-02-17 11:09:23 +00:00
|
|
|
searchindex_edit = 0;
|
2016-07-13 15:05:53 +00:00
|
|
|
found_edit = getUsersResponse.users;
|
|
|
|
section.edit.input.search.sum.innerHTML = found_edit.length;
|
2016-02-16 13:25:06 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// On met à jour l'auto-remplissage
|
|
|
|
autofill_edit();
|
|
|
|
}
|
2016-02-17 11:09:23 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
// On met à jour la dernière recherche
|
|
|
|
lastkeywords_edit = getUsers.keywords;
|
|
|
|
});
|
2016-02-17 11:09:23 +00:00
|
|
|
|
2016-07-13 15:05:53 +00:00
|
|
|
}
|
2016-02-16 13:25:06 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, false);
|
2016-07-03 12:20:42 +00:00
|
|
|
|
2016-02-15 14:43:47 +00:00
|
|
|
|
2016-02-16 08:35:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* (n) Gestion de l'envoi du formulaire */
|
|
|
|
section.edit.input.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
2016-02-16 13:51:19 +00:00
|
|
|
// Si l'id est defini
|
|
|
|
if( section.edit.input.search.id.value != '' ){
|
|
|
|
|
|
|
|
var request = {
|
|
|
|
path: 'userDefault/edit', // On veut creer un utilisateur
|
2016-07-12 13:16:07 +00:00
|
|
|
id_user: parseInt(section.edit.input.search.id.value),
|
2016-07-03 13:03:31 +00:00
|
|
|
code: section.edit.input.code.value,
|
|
|
|
username: section.edit.input.username.value,
|
|
|
|
firstname: section.edit.input.firstname.value,
|
|
|
|
lastname: section.edit.input.lastname.value,
|
2016-07-20 18:05:32 +00:00
|
|
|
mail: section.edit.input.mail.value
|
2016-02-16 13:51:19 +00:00
|
|
|
};
|
2016-02-16 08:35:37 +00:00
|
|
|
|
2016-02-16 13:51:19 +00:00
|
|
|
api.send(request, function(answer){
|
2016-02-16 18:59:55 +00:00
|
|
|
console.log( answer );
|
2017-02-16 17:34:38 +00:00
|
|
|
if( answer.error == 0 && answer.status == true ){ // Tout s'est bien deroule
|
2016-02-16 13:51:19 +00:00
|
|
|
console.log('Utilisateur modifie!');
|
2016-02-16 21:59:01 +00:00
|
|
|
|
2016-02-18 09:55:10 +00:00
|
|
|
section.edit.input.submit.anim('active', 1500);
|
2016-02-18 09:54:26 +00:00
|
|
|
|
2016-07-23 22:03:02 +00:00
|
|
|
/* (1) On met à jour les données utilisateur
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
// On récupère la user d'uid donné dans l'URL
|
|
|
|
api.send({path:'userDefault/getById', id_user:request.id_user}, function(response){
|
|
|
|
// Si aucune erreur et un résultat
|
2017-02-16 17:34:38 +00:00
|
|
|
if( response.error == 0 ){
|
2016-07-23 22:03:02 +00:00
|
|
|
found_edit[searchindex_edit] = response.user; // On récupère le résultat
|
|
|
|
autofill_edit(); // On auto-remplit
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2016-02-16 21:59:01 +00:00
|
|
|
|
|
|
|
}else // Erreur
|
2017-02-16 17:34:38 +00:00
|
|
|
console.error('ModuleError::'+answer.error);
|
2016-02-16 13:51:19 +00:00
|
|
|
});
|
2016-02-16 08:35:37 +00:00
|
|
|
|
2016-02-16 13:51:19 +00:00
|
|
|
}
|
2016-02-16 08:35:37 +00:00
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
2016-07-03 12:20:42 +00:00
|
|
|
}
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-01-09 11:20:45 +00:00
|
|
|
/* [5] chargement de l'utilisateur courant (depuis url)
|
|
|
|
=========================================================*/
|
|
|
|
// gestion automatique au chargement de la page si id_user dans url "/users/.+/: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
|
2017-02-16 17:34:38 +00:00
|
|
|
if( response.error == 0 ){
|
2017-01-09 11:20:45 +00:00
|
|
|
|
|
|
|
/* (1) On pré-remplis le formulaire de modification */
|
|
|
|
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) On pré-remplis le formulaire de suppression */
|
|
|
|
found_remove = [ response.user ]; // on récupère le résultat
|
|
|
|
searchindex_remove = 0; // on remet le compteur à 0
|
|
|
|
autofill_remove(); // on auto-remplit
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-01-09 11:20:45 +00:00
|
|
|
/* [6] groups -> Groupes d'utilisateurs
|
2016-07-20 23:13:48 +00:00
|
|
|
=========================================================*/
|
|
|
|
if( section.groups.element != null ){
|
|
|
|
|
|
|
|
/* (1) On recupere tous les liens vers des sous-sections */
|
|
|
|
section.groups.link = {
|
2016-07-20 23:19:19 +00:00
|
|
|
remove: document.querySelectorAll(section.groups.text + '.link_remove[data-cluster]'),
|
|
|
|
edit: document.querySelectorAll(section.groups.text + '.link_edit[data-cluster]')
|
2016-07-20 23:13:48 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/* (2) On récupère toutes les actions de groupes */
|
|
|
|
section.groups.group = {
|
|
|
|
rem: document.querySelectorAll(section.groups.text + '.rem-member[data-cluster][data-member]'),
|
|
|
|
add: document.querySelectorAll(section.groups.text + '.add-member[data-cluster]')
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* (3) Gestion de la recherche instantannee */
|
2017-07-29 17:15:00 +00:00
|
|
|
section.groups.search.func = function(){
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
var search = {
|
|
|
|
path: 'clusterDefault/search',
|
2017-07-29 17:15:00 +00:00
|
|
|
keywords: section.groups.search.bar.value,
|
2016-07-20 23:13:48 +00:00
|
|
|
class: 0
|
|
|
|
};
|
|
|
|
|
|
|
|
// On envoie la requete
|
|
|
|
api.send(search, function(result){
|
2017-02-16 17:34:38 +00:00
|
|
|
if( result.error == 0 ){ // si aucune erreur
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
// On enregistre tous les UID dans un tableau
|
|
|
|
var uid_list = [];
|
|
|
|
for( var i = 0 ; i < result.clusters.length ; i++ )
|
2016-07-20 23:19:19 +00:00
|
|
|
uid_list.push( result.clusters[i].id_user_cluster);
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
// On recupere la liste des elements correspondants aux utilisateurs
|
|
|
|
var cluster_list = document.querySelectorAll(section.groups.text + '> article.inline-box[id]');
|
|
|
|
|
|
|
|
// Pour chaque cluster
|
|
|
|
for( var i = 0 ; i < cluster_list.length ; i++ ){
|
|
|
|
// Si doit etre visible
|
2016-07-23 15:34:24 +00:00
|
|
|
if( uid_list.indexOf( parseInt(cluster_list[i].id) ) > -1 )
|
2016-07-20 23:13:48 +00:00
|
|
|
cluster_list[i].remClass('hidden');
|
|
|
|
// Si ne doit pas etre visible
|
|
|
|
else
|
|
|
|
cluster_list[i].addClass('hidden');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2017-07-29 17:15:00 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
section.groups.search.bar.addEventListener('keyup', function(e){
|
|
|
|
|
|
|
|
if( section.groups.search.time != null )
|
|
|
|
clearTimeout(section.groups.search.time);
|
|
|
|
|
|
|
|
section.groups.search.time = setTimeout(section.groups.search.func, 500);
|
|
|
|
|
2016-07-20 23:13:48 +00:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
var i;
|
|
|
|
|
|
|
|
|
|
|
|
/* (4) On gere la "redirection" vers la modification */
|
2016-07-20 23:19:19 +00:00
|
|
|
for( i = 0 ; i < section.groups.link.edit.length ; i++ ){
|
|
|
|
|
|
|
|
section.groups.link.edit[i].addEventListener('click', function(e){
|
2017-01-09 13:49:00 +00:00
|
|
|
pageManager.vars = [ 'edit', 'u'+e.target.getData('cluster') ];
|
2016-07-20 23:19:19 +00:00
|
|
|
navMenu('groups', true);
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
/* (5) On gere la "redirection" vers la suppression */
|
|
|
|
for( i = 0 ; i < section.groups.link.remove.length ; i++ ){
|
|
|
|
|
|
|
|
section.groups.link.remove[i].addEventListener('click', function(e){
|
2017-01-09 13:49:00 +00:00
|
|
|
pageManager.vars = [ 'remove', 'u'+e.target.getData('cluster') ];
|
2016-07-20 23:19:19 +00:00
|
|
|
navMenu('groups', true);
|
2016-07-20 23:13:48 +00:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* (6) On gere la "suppression" d'un groupe */
|
2017-02-18 14:08:13 +00:00
|
|
|
section.groups.group.remfunc = function(e){
|
|
|
|
// {1} On rédige la requête //
|
|
|
|
var request = {
|
|
|
|
path: 'userDefault/unlink',
|
|
|
|
id_cluster: e.target.getData('cluster'),
|
|
|
|
id_user: e.target.getData('member')
|
|
|
|
};
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
|
2017-02-18 14:08:13 +00:00
|
|
|
// {2} On envoie la requête //
|
|
|
|
api.send(request, function(response){
|
2016-07-20 23:13:48 +00:00
|
|
|
|
2017-02-18 14:08:13 +00:00
|
|
|
// {3} Si erreur, on ne fait rien //
|
|
|
|
if( response.error != 0 )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
|
|
// {4} Si tout s'est bien passé //
|
|
|
|
e.target.parentNode.parentNode.removeChild( e.target.parentNode );
|
|
|
|
});
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
for( i = 0 ; i < section.groups.group.rem.length ; i++ )
|
|
|
|
section.groups.group.rem[i].addEventListener('click', section.groups.group.remfunc, false);
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* (7) On gere la "modification" des membres d'un groupe */
|
|
|
|
for( i = 0 ; i < section.groups.group.add.length ; i++ ){
|
|
|
|
|
2017-02-18 14:08:13 +00:00
|
|
|
section.groups.group.add[i].addEventListener('mouseup', function(e){
|
|
|
|
|
|
|
|
/* (1) Check if already opened */
|
|
|
|
var opened = e.target.innerHTML != '+';
|
|
|
|
|
|
|
|
/* (2) Hide all dropdowns */
|
|
|
|
for( j = 0 ; j < section.groups.group.add.length ; j++ )
|
|
|
|
section.groups.group.add[j].innerHTML = '+';
|
|
|
|
|
|
|
|
/* (3) Try to show dropdown if not already */
|
|
|
|
if( !opened ){
|
|
|
|
|
|
|
|
/* (1) Get the group id/type */
|
|
|
|
if( !/^\d+$/.test(e.target.getData('cluster')) )
|
|
|
|
return;
|
|
|
|
|
|
|
|
var cluster_id = parseInt(e.target.getData('cluster'));
|
|
|
|
|
|
|
|
/* (2) Get already members ids */
|
|
|
|
var brothers = e.target.parentNode.children[1].children;
|
|
|
|
var already = []; // will contain already ids
|
|
|
|
|
|
|
|
|
|
|
|
for( j = 0 ; j < brothers.length ; j++ )
|
|
|
|
already += parseInt( brothers[j].children[0].getData('member') );
|
|
|
|
|
|
|
|
/* (3) Call list of members */
|
|
|
|
api.send({path: 'userDefault/getAll'}, function(response){
|
|
|
|
|
|
|
|
// Manage error
|
|
|
|
if( response.error != 0 ){
|
|
|
|
console.warn('error loading list of members');
|
|
|
|
return;
|
|
|
|
}
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2017-02-18 14:08:13 +00:00
|
|
|
|
|
|
|
// remove already members
|
|
|
|
var members = response.users;
|
|
|
|
|
|
|
|
|
|
|
|
/* (4) Build dropdown content without already members */
|
|
|
|
dropdown = "<div class='dropdown'>";
|
|
|
|
|
|
|
|
for( j = 0 ; j < members.length ; j++ ){
|
|
|
|
if( already.indexOf(members[j].id_user) > -1 )
|
|
|
|
continue;
|
|
|
|
|
|
|
|
dropdown += "<span data-memberid='"+members[j].id_user+"'>"+members[j].username+"</span>";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dropdown += "</div>";
|
|
|
|
|
|
|
|
e.target.innerHTML = '+'+dropdown;
|
|
|
|
|
|
|
|
|
|
|
|
/* (5) Attach events to dropdown elements */
|
|
|
|
var dropdownElements = e.target.children[0].children;
|
|
|
|
|
|
|
|
for( j = 0 ; j < dropdownElements.length ; j++ )
|
|
|
|
dropdownElements[j].addEventListener('mousedown', function(e2){
|
|
|
|
|
|
|
|
// {1} Get member id/username //
|
|
|
|
var memberid = e2.target.getData('memberid');
|
|
|
|
var username = e2.target.innerHTML;
|
|
|
|
|
|
|
|
// manage error
|
|
|
|
if( memberid === false )
|
|
|
|
return;
|
|
|
|
|
|
|
|
// {2} Request : add member to group //
|
|
|
|
var request = {
|
|
|
|
path: 'userDefault/link',
|
|
|
|
id_cluster: cluster_id,
|
|
|
|
id_user: memberid
|
|
|
|
};
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2017-02-18 14:08:13 +00:00
|
|
|
|
|
|
|
// {3} Call link //
|
|
|
|
api.send(request, function(response2){
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2017-02-18 14:08:13 +00:00
|
|
|
// manage error
|
|
|
|
if( response2.error != 0 ){
|
|
|
|
console.warn('cannot link user to group');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Remove dropdown (in order to be reloaded with new members);
|
|
|
|
e.target.innerHTML = '+';
|
|
|
|
|
|
|
|
// {4} Update display //
|
|
|
|
var newMemberRemoveIcon = document.createElement('span');
|
|
|
|
newMemberRemoveIcon.setAttribute('class', 'rem-member');
|
|
|
|
newMemberRemoveIcon.setAttribute('data-member', memberid);
|
|
|
|
newMemberRemoveIcon.setAttribute('data-cluster', e.target.getData('cluster'));
|
2017-07-29 17:15:00 +00:00
|
|
|
|
2017-02-18 14:08:13 +00:00
|
|
|
newMemberRemoveIcon.addEventListener('click', section.groups.group.remfunc, false);
|
|
|
|
|
|
|
|
var newMember = document.createElement('span');
|
|
|
|
newMember.appendChild( document.createTextNode(username) );
|
|
|
|
newMember.appendChild(newMemberRemoveIcon);
|
|
|
|
|
|
|
|
e.target.parentNode.children[1].appendChild(newMember);
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-07-20 23:13:48 +00:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|