2016-07-13 14:58:39 +00:00
|
|
|
// On referencie toutes les sections
|
|
|
|
var section = {
|
|
|
|
view: {
|
2016-07-18 22:15:25 +00:00
|
|
|
text: '#CONTAINER > section[data-sublink="view"] ',
|
|
|
|
element: document.querySelector('#CONTAINER > section[data-sublink="view"]'),
|
2016-07-13 14:58:39 +00:00
|
|
|
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"]')
|
2016-07-14 08:52:04 +00:00
|
|
|
},
|
|
|
|
|
2016-07-20 14:50:41 +00:00
|
|
|
members: {
|
|
|
|
text: '#CONTAINER > section[data-sublink="members"] ',
|
|
|
|
element: document.querySelector('#CONTAINER > section[data-sublink="members"]'),
|
2016-07-16 10:41:21 +00:00
|
|
|
|
|
|
|
chooser: {
|
2016-07-20 14:50:41 +00:00
|
|
|
text: '#CONTAINER > section[data-sublink="members"] form#choose-cluster ',
|
|
|
|
element: document.querySelector('#CONTAINER > section[data-sublink="members"] form#choose-cluster')
|
2016-07-16 10:41:21 +00:00
|
|
|
}
|
2016-07-15 15:43:47 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
permissions: {
|
|
|
|
text: '#CONTAINER > section[data-sublink="permissions"] ',
|
|
|
|
element: document.querySelector('#CONTAINER > section[data-sublink="permissions"]')
|
2016-07-13 14:58:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* GESTION DE L'AFFICHAGE DES GROUPES
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
if( section.view.element != null ){
|
|
|
|
|
|
|
|
/* (0) On gère le zoom sur un utilisateur via URL */
|
2016-07-20 16:41:24 +00:00
|
|
|
if( pageManager.vars.length > 1 && /^(u|m)\d+$/.test(pageManager.vars[1]) ){
|
2016-07-13 14:58:39 +00:00
|
|
|
document.location = '#'+pageManager.vars[1];
|
|
|
|
document.getElementById(pageManager.vars[1]).addClass('selected');
|
|
|
|
}
|
|
|
|
|
2016-07-20 15:33:38 +00:00
|
|
|
/* (1) On recupere tous les liens vers des sous-sections */
|
2016-07-13 14:58:39 +00:00
|
|
|
section.view.link = {
|
|
|
|
edit: document.querySelectorAll(section.view.text + '.link_edit[data-cluster]'),
|
|
|
|
remove: document.querySelectorAll(section.view.text + '.link_remove[data-cluster]')
|
|
|
|
};
|
|
|
|
|
|
|
|
/* (2) On récupère toutes les actions de groupes */
|
|
|
|
section.view.group = {
|
2016-07-15 12:55:59 +00:00
|
|
|
rem: document.querySelectorAll(section.view.text + '.rem-member[data-cluster][data-member]'),
|
|
|
|
add: document.querySelectorAll(section.view.text + '.add-member[data-cluster]')
|
2016-07-13 14:58:39 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* (3) Gestion de la recherche instantannee */
|
|
|
|
section.view.searchbar.addEventListener('keyup', function(e){
|
|
|
|
|
|
|
|
var search = {
|
|
|
|
path: 'clusterDefault/search',
|
|
|
|
keywords: section.view.searchbar.value
|
|
|
|
};
|
|
|
|
|
|
|
|
// On envoie la requete
|
|
|
|
api.send(search, function(result){
|
|
|
|
if( result.ModuleError == 0 ){ // si aucune erreur
|
|
|
|
|
|
|
|
// On enregistre tous les UID dans un tableau
|
|
|
|
var uid_list = [];
|
|
|
|
for( var i = 0 ; i < result.clusters.length ; i++ )
|
|
|
|
uid_list.push( result.clusters[i].id_cluster);
|
|
|
|
|
|
|
|
// On recupere la liste des elements correspondants aux utilisateurs
|
|
|
|
var cluster_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]');
|
|
|
|
|
|
|
|
// Pour chaque cluster
|
|
|
|
for( var i = 0 ; i < cluster_list.length ; i++ ){
|
|
|
|
// Si doit etre visible
|
|
|
|
if( uid_list.indexOf(cluster_list[i].id) > -1 )
|
|
|
|
cluster_list[i].remClass('hidden');
|
|
|
|
// Si ne doit pas etre visible
|
|
|
|
else
|
|
|
|
cluster_list[i].addClass('hidden');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
2016-07-20 15:33:38 +00:00
|
|
|
var i;
|
|
|
|
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
/* (4) On gere la "redirection" vers la modification */
|
2016-07-20 15:33:38 +00:00
|
|
|
for( i = 0 ; i < section.view.link.edit.length ; i++ ){
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
section.view.link.edit[i].addEventListener('click', function(e){
|
|
|
|
pageManager.vars[1] = e.target.getData('cluster');
|
|
|
|
navSubMenu('edit');
|
2016-07-20 17:41:43 +00:00
|
|
|
document.location = '';
|
2016-07-13 14:58:39 +00:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* (5) On gere la "redirection" vers la suppression */
|
2016-07-20 15:33:38 +00:00
|
|
|
for( i = 0 ; i < section.view.link.remove.length ; i++ ){
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
section.view.link.remove[i].addEventListener('click', function(e){
|
|
|
|
pageManager.vars[1] = e.target.getData('cluster');
|
|
|
|
navSubMenu('remove');
|
2016-07-20 17:41:43 +00:00
|
|
|
document.location = '';
|
2016-07-13 14:58:39 +00:00
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* (6) On gere la "suppression" d'un groupe */
|
2016-07-20 15:33:38 +00:00
|
|
|
for( i = 0 ; i < section.view.group.rem.length ; i++ ){
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
section.view.group.rem[i].addEventListener('click', function(e){
|
2016-07-20 15:33:38 +00:00
|
|
|
var prefix = e.target.getData('cluster')[0];
|
|
|
|
var cluster = e.target.getData('cluster').slice(1);
|
|
|
|
console.log(e.target);
|
2016-07-15 12:55:59 +00:00
|
|
|
|
2016-07-13 14:58:39 +00:00
|
|
|
// {1} On rédige la requête //
|
2016-07-15 12:55:59 +00:00
|
|
|
var request = {};
|
2016-07-20 15:33:38 +00:00
|
|
|
request.path = (prefix=='u') ? 'userDefault/unlink' : 'machineDefault/unlink';
|
|
|
|
request.id_cluster = cluster;
|
2016-07-15 12:55:59 +00:00
|
|
|
|
2016-07-20 15:33:38 +00:00
|
|
|
if( prefix == 'u' ) request.id_user = e.target.getData('member');
|
|
|
|
else request.id_machine = e.target.getData('member');
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
// {2} On envoie la requête //
|
|
|
|
api.send(request, function(response){
|
|
|
|
|
|
|
|
// {3} Si erreur, on ne fait rien //
|
|
|
|
if( response.ModuleError != 0 )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
|
|
// {4} Si tout s'est bien passé //
|
|
|
|
e.target.parentNode.parentNode.removeChild( e.target.parentNode );
|
|
|
|
});
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-07-20 14:50:41 +00:00
|
|
|
/* (7) On gere la "modification" des membres d'un groupe */
|
2016-07-20 15:33:38 +00:00
|
|
|
for( i = 0 ; i < section.view.group.add.length ; i++ ){
|
2016-07-14 08:16:11 +00:00
|
|
|
|
|
|
|
section.view.group.add[i].addEventListener('click', function(e){
|
|
|
|
|
2016-07-14 08:52:04 +00:00
|
|
|
pageManager.vars[1] = e.target.getData('cluster');
|
2016-07-20 14:50:41 +00:00
|
|
|
navSubMenu('members');
|
2016-07-14 08:52:04 +00:00
|
|
|
document.location = '';
|
2016-07-14 08:16:11 +00:00
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* GESTION DE LA CREATION D'UNE MACHINE
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
if( section.create.element != null ){
|
|
|
|
|
|
|
|
// On recupere tous les champs
|
|
|
|
section.create.input = {
|
|
|
|
name: document.querySelector(section.create.text + '#create_name'),
|
|
|
|
class: document.querySelector(section.create.text + '#create_class'),
|
|
|
|
submit: document.querySelector(section.create.text + '#create_submit')
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* (n) Gestion de l'envoi du formulaire */
|
|
|
|
section.create.input.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
var request = {
|
|
|
|
path: 'clusterDefault/create', // On veut creer un utilisateur
|
|
|
|
name: section.create.input.name.value,
|
|
|
|
class: section.create.input.class.value
|
|
|
|
};
|
|
|
|
|
|
|
|
api.send(request, function(answer){
|
|
|
|
if( answer.ModuleError == 0 ){ // Tout s'est bien deroule
|
|
|
|
console.log('Groupe cree!');
|
|
|
|
|
2016-07-18 22:15:25 +00:00
|
|
|
// On redirige sur le cluster
|
2016-07-20 17:46:57 +00:00
|
|
|
pageManager.vars[1] = ((request.class==0)?'u':'m') + answer.id_cluster;
|
|
|
|
navSubMenu('view');
|
|
|
|
document.location = '';
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
section.create.input.submit.anim('active', 1500);
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [3] remove -> Suppression de cluster
|
|
|
|
=========================================================*/
|
|
|
|
if( section.remove.element != null ){
|
|
|
|
|
|
|
|
/* (1) Definition des champs */
|
|
|
|
section.remove.input = {
|
|
|
|
search: {
|
|
|
|
view: document.querySelector(section.remove.text + '.remove_search_view'),
|
2016-07-20 16:16:36 +00:00
|
|
|
num: document.querySelector(section.remove.text + '.remove_search_num'),
|
|
|
|
sum: document.querySelector(section.remove.text + '.remove_search_sum'),
|
2016-07-13 14:58:39 +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')
|
|
|
|
},
|
|
|
|
|
|
|
|
name: document.querySelector(section.remove.text + '#remove_name'),
|
2016-07-20 16:16:36 +00:00
|
|
|
class: document.querySelector(section.remove.text + '#remove_class'),
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
submit: document.querySelector(section.remove.text + '#remove_submit')
|
|
|
|
};
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
var lastkeywords_remove = '';
|
|
|
|
var found_remove = [];
|
|
|
|
var searchindex_remove = 0;
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
/* (2) Gestion de l'auto-remplissage par lien
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
function autofill_remove(){
|
|
|
|
/* (0) Valeurs par défaut */
|
2016-07-13 14:58:39 +00:00
|
|
|
var cluster_data = {
|
2016-07-13 15:15:26 +00:00
|
|
|
id_cluster: '',
|
2016-07-20 16:16:36 +00:00
|
|
|
class: '',
|
2016-07-13 15:15:26 +00:00
|
|
|
name: '',
|
|
|
|
disable_input: true
|
2016-07-13 14:58:39 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// {1} Si aucun résultat //
|
|
|
|
if( found_remove[searchindex_remove] == null ){
|
|
|
|
|
|
|
|
|
|
|
|
// Mise a jour des indices des resultats
|
|
|
|
section.remove.input.search.num.innerHTML = 0;
|
|
|
|
searchindex_remove = 0;
|
|
|
|
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// {2} Si au moins 1 résultat //
|
|
|
|
}else{
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-20 16:16:36 +00:00
|
|
|
var tmpIdCluster, clusterClass;
|
|
|
|
|
|
|
|
// Si groupe utilisateur
|
|
|
|
if( found_remove[searchindex_remove].hasOwnProperty('id_user_cluster') ){
|
|
|
|
tmpIdCluster = found_remove[searchindex_remove].id_user_cluster;
|
|
|
|
clusterClass = 0;
|
|
|
|
// Sinon groupe machine
|
|
|
|
}else{
|
|
|
|
tmpIdCluster = found_remove[searchindex_remove].id_machine_cluster;
|
|
|
|
clusterClass = 1;
|
|
|
|
}
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// On recupere les données de la user selectionnee
|
|
|
|
cluster_data = {
|
2016-07-20 16:16:36 +00:00
|
|
|
id_cluster: tmpIdCluster,
|
|
|
|
class: clusterClass,
|
2016-07-13 15:15:26 +00:00
|
|
|
name: found_remove[searchindex_remove]['name'],
|
|
|
|
disable_input: false
|
|
|
|
};
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
// Mise a jour des indices des resultats
|
|
|
|
section.remove.input.search.num.innerHTML = searchindex_remove+1;
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// {3} On auto-remplit le formulaire //
|
|
|
|
// On enregistre l'UID du groupe
|
|
|
|
section.remove.input.search.id.value = cluster_data.id_cluster;
|
|
|
|
|
|
|
|
// Auto-remplissage du formulaire
|
|
|
|
section.remove.input.name.value = cluster_data.name;
|
2016-07-20 16:16:36 +00:00
|
|
|
section.remove.input.class.value = cluster_data.class == 0 ? 'utilisateur' : 'machine';
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
// On gere le caractere "inactif" du submit
|
|
|
|
section.remove.input.submit.disabled = cluster_data.disable_input;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Gestion automatique au chargement de la page si ID_CLUSTER dans url "/users/remove/:id_cluster:"
|
2016-07-20 16:41:24 +00:00
|
|
|
if( pageManager.vars.length >= 2 && /^(u|m)\d+$/.test(pageManager.vars[1]) ){
|
2016-07-20 16:16:36 +00:00
|
|
|
var prefix = pageManager.vars[1][0];
|
|
|
|
var cluster = pageManager.vars[1].slice(1);
|
|
|
|
|
|
|
|
var request = {
|
|
|
|
path: 'clusterDefault/getById',
|
|
|
|
id_cluster: cluster,
|
|
|
|
class: (prefix=='u') ? 0 : 1
|
|
|
|
};
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
// On récupère la user d'uid donné dans l'URL
|
2016-07-20 16:16:36 +00:00
|
|
|
api.send(request, function(response){
|
2016-07-13 15:15:26 +00:00
|
|
|
// 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
|
|
|
|
}
|
2016-07-13 14:58:39 +00:00
|
|
|
});
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
}
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
/* (3) Gestion de la recherche
|
|
|
|
---------------------------------------------------------*/
|
2016-07-13 14:58:39 +00:00
|
|
|
section.remove.input.search.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
/* (1) Si le champ n'est pas vide */
|
2016-07-13 14:58:39 +00:00
|
|
|
if( section.remove.input.search.keyword.value != '' ){
|
|
|
|
|
2016-07-13 15:15:26 +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-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// on affiche le prochain (decalage cyclique)
|
|
|
|
searchindex_remove = (searchindex_remove+1) % found_remove.length;
|
|
|
|
// On met à jour l'auto-remplissage
|
|
|
|
autofill_remove();
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
/* (3) Nouveaux mots-clés, on lance la recherche */
|
|
|
|
}else{
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
/* (4) Redaction de la requete */
|
|
|
|
var getClusters = {
|
|
|
|
path: 'clusterDefault/search',
|
2016-07-20 16:16:36 +00:00
|
|
|
keywords: section.remove.input.search.keyword.value
|
2016-07-13 15:15:26 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/* (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 */
|
2016-07-20 16:16:36 +00:00
|
|
|
searchindex_remove = 0;
|
|
|
|
found_remove = getClustersResponse.clusters;
|
2016-07-13 15:15:26 +00:00
|
|
|
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;
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* (n) Gestion de l'envoi du formulaire */
|
|
|
|
section.remove.input.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
// Si l'id est defini
|
|
|
|
if( section.remove.input.search.id.value != '' ){
|
|
|
|
|
2016-07-20 17:46:57 +00:00
|
|
|
var clusterClass = (found_remove[searchindex_remove].hasOwnProperty('id_user_cluster')) ? 0 : 1;
|
|
|
|
|
2016-07-13 14:58:39 +00:00
|
|
|
/* (2) On supprime la cluster */
|
|
|
|
var request = {
|
2016-07-20 17:46:57 +00:00
|
|
|
path: 'clusterDefault/delete', // On veut supprimer cet utilisateur
|
|
|
|
id_cluster: section.remove.input.search.id.value,
|
|
|
|
class: clusterClass
|
2016-07-13 14:58:39 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
api.send(request, function(answer){
|
|
|
|
if( answer.ModuleError == 0 && answer.status == true ){ // Tout s'est bien deroule
|
|
|
|
console.log('Groupe supprimee!');
|
|
|
|
|
|
|
|
section.remove.input.submit.anim('active', 1500);
|
2016-07-20 17:46:57 +00:00
|
|
|
|
|
|
|
pageManager.vars[1] = '';
|
|
|
|
navSubMenu('view');
|
|
|
|
document.location = '';
|
2016-07-13 14:58:39 +00:00
|
|
|
}else // Erreur
|
|
|
|
console.error('ModuleError::'+answer.ModuleError);
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [4] edit -> Modification de cluster
|
|
|
|
=========================================================*/
|
|
|
|
if( section.edit.element != null ){
|
|
|
|
|
|
|
|
// Definition des champs
|
|
|
|
section.edit.input = {
|
|
|
|
search: {
|
|
|
|
view: document.querySelector(section.edit.text + '.edit_search_view'),
|
|
|
|
num: document.querySelector(section.edit.text + '.edit_search_num'),
|
|
|
|
sum: document.querySelector(section.edit.text + '.edit_search_sum'),
|
|
|
|
|
|
|
|
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')
|
|
|
|
},
|
|
|
|
|
|
|
|
name: document.querySelector(section.edit.text + '#edit_name'),
|
2016-07-20 17:41:43 +00:00
|
|
|
class: document.querySelector(section.edit.text + '#edit_class'),
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
submit: document.querySelector(section.edit.text + '#edit_submit')
|
|
|
|
};
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
var lastkeywords_edit = '';
|
|
|
|
var found_edit = [];
|
|
|
|
var searchindex_edit = 0;
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
/* (2) Gestion de l'auto-remplissage par lien
|
|
|
|
---------------------------------------------------------*/
|
|
|
|
function autofill_edit(){
|
|
|
|
/* (0) Valeurs par défaut */
|
2016-07-13 14:58:39 +00:00
|
|
|
var cluster_data = {
|
2016-07-13 15:15:26 +00:00
|
|
|
id_cluster: '',
|
2016-07-20 17:41:43 +00:00
|
|
|
class: '',
|
2016-07-13 15:15:26 +00:00
|
|
|
name: '',
|
|
|
|
disable_input: true
|
2016-07-13 14:58:39 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// {1} Si aucun résultat //
|
|
|
|
if( found_edit[searchindex_edit] == null ){
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// Mise a jour des indices des resultats
|
|
|
|
section.edit.input.search.num.innerHTML = 0;
|
|
|
|
searchindex_edit = 0;
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// {2} Si au moins 1 résultat //
|
|
|
|
}else{
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-20 17:41:43 +00:00
|
|
|
var tmpIdCluster, clusterClass;
|
|
|
|
|
|
|
|
// Si groupe utilisateur
|
|
|
|
if( found_edit[searchindex_remove].hasOwnProperty('id_user_cluster') ){
|
|
|
|
tmpIdCluster = found_edit[searchindex_remove].id_user_cluster;
|
|
|
|
clusterClass = 0;
|
|
|
|
// Sinon groupe machine
|
|
|
|
}else{
|
|
|
|
tmpIdCluster = found_edit[searchindex_remove].id_machine_cluster;
|
|
|
|
clusterClass = 1;
|
|
|
|
}
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// On recupere les données de la user selectionnee
|
|
|
|
cluster_data = {
|
2016-07-20 17:41:43 +00:00
|
|
|
id_cluster: tmpIdCluster,
|
|
|
|
class: clusterClass,
|
|
|
|
name: found_edit[searchindex_remove]['name'],
|
2016-07-13 15:15:26 +00:00
|
|
|
disable_input: false
|
|
|
|
};
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// Mise a jour des indices des resultats
|
|
|
|
section.edit.input.search.num.innerHTML = searchindex_edit+1;
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// {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;
|
2016-07-20 17:41:43 +00:00
|
|
|
section.edit.input.class.value = (clusterClass==0) ? 'utilisateur' : 'machine';
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
// On gere le caractere "inactif" du submit
|
|
|
|
section.edit.input.submit.disabled = cluster_data.disable_input;
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
}
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// Gestion automatique au chargement de la page si ID_CLUSTER dans url "/users/edit/:id_cluster:"
|
2016-07-20 17:41:43 +00:00
|
|
|
if( pageManager.vars.length >= 2 && /^(u|m)\d+$/.test(pageManager.vars[1]) ){
|
|
|
|
console.log('bla');
|
|
|
|
var prefix = pageManager.vars[1][0];
|
|
|
|
var cluster = pageManager.vars[1].slice(1);
|
|
|
|
|
|
|
|
var request = {
|
|
|
|
path: 'clusterDefault/getById',
|
|
|
|
id_cluster: cluster,
|
|
|
|
class: (prefix=='u') ? 0 : 1
|
|
|
|
};
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// On récupère la user d'uid donné dans l'URL
|
2016-07-20 17:41:43 +00:00
|
|
|
api.send(request, function(response){
|
2016-07-13 15:15:26 +00:00
|
|
|
// 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
|
|
|
|
}
|
|
|
|
});
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
}
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
/* (3) Gestion de la recherche
|
|
|
|
---------------------------------------------------------*/
|
2016-07-13 14:58:39 +00:00
|
|
|
section.edit.input.search.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
|
|
|
|
/* (1) Si le champ n'est pas vide */
|
2016-07-13 14:58:39 +00:00
|
|
|
if( section.edit.input.search.keyword.value != '' ){
|
|
|
|
|
2016-07-13 15:15:26 +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-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
/* (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 */
|
2016-07-13 14:58:39 +00:00
|
|
|
searchindex_edit = 0;
|
2016-07-13 15:15:26 +00:00
|
|
|
found_edit = getClustersResponse.clusters;
|
|
|
|
section.edit.input.search.sum.innerHTML = found_edit.length;
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// On met à jour l'auto-remplissage
|
|
|
|
autofill_edit();
|
|
|
|
}
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
// On met à jour la dernière recherche
|
|
|
|
lastkeywords_edit = getClusters.keywords;
|
|
|
|
});
|
2016-07-13 14:58:39 +00:00
|
|
|
|
2016-07-13 15:15:26 +00:00
|
|
|
}
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* (n) Gestion de l'envoi du formulaire */
|
|
|
|
section.edit.input.submit.addEventListener('click', function(e){
|
|
|
|
// On annule l'envoi de base (PHP)
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
// Si l'id est defini
|
|
|
|
if( section.edit.input.search.id.value != '' ){
|
|
|
|
|
2016-07-20 17:41:43 +00:00
|
|
|
var clusterClass = (found_edit[searchindex_edit].hasOwnProperty('id_user_cluster')) ? 0 : 1;
|
|
|
|
|
2016-07-13 14:58:39 +00:00
|
|
|
var request = {
|
|
|
|
path: 'clusterDefault/edit', // On veut creer une cluster
|
|
|
|
id_cluster: section.edit.input.search.id.value,
|
2016-07-20 17:41:43 +00:00
|
|
|
name: section.edit.input.name.value,
|
|
|
|
class: clusterClass
|
2016-07-13 14:58:39 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
api.send(request, function(answer){
|
|
|
|
if( answer.ModuleError == 0 && answer.status == true ){ // Tout s'est bien deroule
|
|
|
|
console.log('Groupe modifiee!');
|
|
|
|
|
|
|
|
section.edit.input.submit.anim('active', 1500);
|
2016-07-20 17:41:43 +00:00
|
|
|
|
|
|
|
// On met a jour le cluster
|
|
|
|
pageManager.vars[1] = ((clusterClass==0)?'u':'m') + request.id_cluster;
|
|
|
|
navSubMenu('view');
|
|
|
|
document.location = '';
|
2016-07-13 14:58:39 +00:00
|
|
|
|
|
|
|
}else // Erreur
|
|
|
|
console.error('ModuleError::'+answer.ModuleError);
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2016-07-14 08:52:04 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-16 10:41:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* GESTION DU CHOIX DU GROUPE AUQUEL MODIFIER LA COMPOSITION DES MEMBRES
|
|
|
|
*
|
|
|
|
*/
|
2016-07-20 14:50:41 +00:00
|
|
|
if( section.members.element != null && section.members.chooser.element != null ){
|
2016-07-16 10:41:21 +00:00
|
|
|
|
|
|
|
/* [1] Initialisation et gestion statique
|
|
|
|
=========================================================*/
|
|
|
|
/* (1) On initialise le deflater */
|
2016-07-20 14:50:41 +00:00
|
|
|
section.members.chooser.deflater = new FormDeflater(
|
|
|
|
section.members.chooser.element,
|
2016-07-16 10:41:21 +00:00
|
|
|
['select'],
|
|
|
|
['data-name']
|
|
|
|
);
|
|
|
|
|
|
|
|
/* (2) On récupère le bouton */
|
2016-07-20 14:50:41 +00:00
|
|
|
section.members.chooser.submit = document.querySelector(section.members.chooser.text+'#choose-cluster');
|
2016-07-16 10:41:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [2] Gestion de l'évènement
|
|
|
|
=========================================================*/
|
2016-07-20 14:50:41 +00:00
|
|
|
section.members.chooser.submit.addEventListener('click', function(e){
|
2016-07-16 10:41:21 +00:00
|
|
|
|
|
|
|
/* (0) On annule l'action par défaut (PHP) */
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
|
|
/* (1) On récupère les données */
|
2016-07-20 14:50:41 +00:00
|
|
|
var data = section.members.chooser.deflater.deflate()['cluster'];
|
2016-07-16 10:41:21 +00:00
|
|
|
|
|
|
|
// Vérification du type
|
2016-07-20 16:41:24 +00:00
|
|
|
if( !/^(u|m)\d+$/.test(data) )
|
2016-07-16 10:41:21 +00:00
|
|
|
return;
|
|
|
|
|
|
|
|
/* (2) Redirection */
|
|
|
|
pageManager.vars[1] = data;
|
|
|
|
pageManager.refresh();
|
|
|
|
document.location = '';
|
|
|
|
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-14 08:52:04 +00:00
|
|
|
/* GESTION DE LA MODIFICATION DES MEMBRES
|
|
|
|
*
|
|
|
|
*/
|
2016-07-20 14:50:41 +00:00
|
|
|
if( section.members.element != null && section.members.chooser.element == null ){
|
2016-07-14 08:52:04 +00:00
|
|
|
|
2016-07-20 23:13:48 +00:00
|
|
|
|
|
|
|
// Gestion automatique au chargement de la page si ID_CLUSTER dans url "/users/remove/:id_cluster:"
|
|
|
|
if( pageManager.vars.length >= 2 && /^(u|m)\d+$/.test(pageManager.vars[1]) ){
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-07-15 12:48:18 +00:00
|
|
|
/* (1) On initialise le Deflater() */
|
2016-07-20 14:50:41 +00:00
|
|
|
section.members.deflater = new FormDeflater(
|
|
|
|
section.members.element,
|
2016-07-15 12:48:18 +00:00
|
|
|
['input'],
|
|
|
|
['data-name']
|
|
|
|
);
|
|
|
|
|
|
|
|
/* (2) On enregistre les données initiales */
|
2016-07-20 14:50:41 +00:00
|
|
|
section.members.baseData = section.members.deflater.deflate()['members'];
|
2016-07-15 12:48:18 +00:00
|
|
|
|
|
|
|
/* (3) On enregistre les données in-HTML */
|
2016-07-20 14:50:41 +00:00
|
|
|
section.members.class = document.querySelector('#members-member-class').value;
|
|
|
|
section.members.idcluster = document.querySelector('#members-member-idcluster').value;
|
2016-07-15 12:48:18 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* [1] Dès qu'une valeur est modifiée dans le formulaire
|
2016-07-14 08:52:04 +00:00
|
|
|
=========================================================*/
|
2016-07-20 14:50:41 +00:00
|
|
|
section.members.element.addEventListener('click', function(e){
|
2016-07-14 08:52:04 +00:00
|
|
|
|
2016-07-15 12:48:18 +00:00
|
|
|
/* (0) On récupère les données + initialise les variables */
|
2016-07-20 15:33:38 +00:00
|
|
|
var i;
|
2016-07-15 12:48:18 +00:00
|
|
|
var linked = [];
|
|
|
|
var unlinked = [];
|
2016-07-14 08:52:04 +00:00
|
|
|
|
2016-07-20 14:50:41 +00:00
|
|
|
var data = section.members.deflater.deflate()['members'];
|
2016-07-15 12:48:18 +00:00
|
|
|
// Si c'est pas un tableau, on le met en tableau
|
|
|
|
if( !(data instanceof Array) )
|
|
|
|
data = [data];
|
2016-07-14 08:52:04 +00:00
|
|
|
|
2016-07-15 12:48:18 +00:00
|
|
|
/* (1) Si on a ajouté des liens */
|
2016-07-20 15:33:38 +00:00
|
|
|
for( i = 0 ; i < data.length ; i++ )
|
2016-07-20 14:50:41 +00:00
|
|
|
if( section.members.baseData.indexOf(data[i]) == -1 ) // Si pas dans les données initiales, on ajoute
|
2016-07-15 12:48:18 +00:00
|
|
|
linked.push( data[i] );
|
|
|
|
|
|
|
|
/* (2) Si on a supprimé des liens */
|
2016-07-20 15:33:38 +00:00
|
|
|
for( i = 0 ; i < section.members.baseData.length ; i++ )
|
2016-07-20 14:50:41 +00:00
|
|
|
if( data.indexOf(section.members.baseData[i]) == -1 ) // Si pas dans les données modifiées, on ajoute
|
|
|
|
unlinked.push( section.members.baseData[i] );
|
2016-07-15 12:48:18 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* (3) Gestion de l'ajout de liens */
|
2016-07-20 15:33:38 +00:00
|
|
|
for( i = 0 ; i < linked.length ; i++ ){
|
2016-07-15 12:48:18 +00:00
|
|
|
// {1} On rédige la requête //
|
|
|
|
var linkReq = {};
|
2016-07-20 14:50:41 +00:00
|
|
|
linkReq.path = (section.members.class==0) ? 'userDefault/link' : 'machineDefault/link';
|
|
|
|
linkReq.id_cluster = section.members.idcluster;
|
2016-07-15 12:48:18 +00:00
|
|
|
|
2016-07-20 14:50:41 +00:00
|
|
|
if( section.members.class == 0 ) linkReq.id_user = linked[i];
|
2016-07-15 12:48:18 +00:00
|
|
|
else linkReq.id_machine = linked[i];
|
|
|
|
|
|
|
|
// {2} On envoie la requête //
|
|
|
|
api.send(linkReq, function(linkRes){
|
|
|
|
if( linkRes.ModuleError != 0 )
|
|
|
|
console.error('Erreur d\'ajout de membre');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* (4) Gestion de la suppression de liens */
|
2016-07-20 15:33:38 +00:00
|
|
|
for( i = 0 ; i < unlinked.length ; i++ ){
|
2016-07-15 12:48:18 +00:00
|
|
|
// {1} On rédige la requête //
|
|
|
|
var unlinkReq = {};
|
2016-07-20 14:50:41 +00:00
|
|
|
unlinkReq.path = (section.members.class==0) ? 'userDefault/unlink' : 'machineDefault/unlink';
|
|
|
|
unlinkReq.id_cluster = section.members.idcluster;
|
2016-07-15 12:48:18 +00:00
|
|
|
|
2016-07-20 14:50:41 +00:00
|
|
|
if( section.members.class == 0 ) unlinkReq.id_user = unlinked[i];
|
2016-07-15 12:48:18 +00:00
|
|
|
else unlinkReq.id_machine = unlinked[i];
|
|
|
|
|
|
|
|
// {2} On envoie la requête //
|
|
|
|
api.send(unlinkReq, function(unlinkRes){
|
|
|
|
if( unlinkRes.ModuleError != 0 )
|
|
|
|
console.error('Erreur d\'ajout de membre');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* (5) On met à jour les données initiales */
|
2016-07-20 14:50:41 +00:00
|
|
|
section.members.baseData = data;
|
2016-07-15 12:48:18 +00:00
|
|
|
|
|
|
|
|
|
|
|
}, false);
|
2016-07-14 08:52:04 +00:00
|
|
|
|
|
|
|
}
|