NxTIC/view/js/machines.js

471 lines
13 KiB
JavaScript
Executable File

// On referencie toutes les sections
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"]')
}
};
/* GESTION DE L'AFFICHAGE DES MACHINES
*
*/
if( section.view.element != null ){
/* (1) On recupere tous les liens */
section.view.link = {
edit: document.querySelectorAll(section.view.text + '.link_edit[data-machine]'),
remove: document.querySelectorAll(section.view.text + '.link_remove[data-machine]')
};
/* (2) Gestion de la recherche instantannee */
section.view.searchbar.addEventListener('keyup', function(e){
var search = {
path: 'machineDefault/search',
data: [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.machines.length ; i++ )
uid_list.push( result.machines[i].id_machine);
// On recupere la liste des elements correspondants aux utilisateurs
var machine_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]');
// Pour chaque machine
for( var i = 0 ; i < machine_list.length ; i++ ){
// Si doit etre visible
if( uid_list.indexOf(machine_list[i].id) > -1 )
machine_list[i].remClass('hidden');
// Si ne doit pas etre visible
else
machine_list[i].addClass('hidden');
}
}
});
}, false);
/* (3) On gere la "redirection" vers la modification */
for( var i = 0 ; i < section.view.link.edit.length ; i++ ){
section.view.link.edit[i].addEventListener('click', function(e){
pageManager.vars[1] = e.target.getData('machine');
autofill_edit(pageManager.vars[1]);
navSubMenu('edit');
}, false);
}
/* (4) On gere la "redirection" vers la suppression */
for( var i = 0 ; i < section.view.link.remove.length ; i++ ){
section.view.link.remove[i].addEventListener('click', function(e){
pageManager.vars[1] = e.target.getData('machine');
autofill_remove(pageManager.vars[1]);
navSubMenu('remove');
}, false);
}
}
/* GESTION DE LA CREATION D'UNE MACHINE
*
*/
if( section.create.element != null ){
// On recupere tous les champs
section.create.input = {
code: document.querySelector(section.create.text + '#create_code'),
name: document.querySelector(section.create.text + '#create_name'),
submit: document.querySelector(section.create.text + '#create_submit')
}
// 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);
/* (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: 'machineDefault/create', // On veut creer un utilisateur
data: [
section.create.input.code.value,
section.create.input.name.value
]
};
api.send(request, function(answer){
if( answer.ModuleError == 0 ){ // Tout s'est bien deroule
console.log('Machine cree!');
section.create.input.submit.anim('active', 1500);
}else // Erreur
console.error('ModuleError::'+answer.ModuleError);
});
}, false);
}
/* [3] remove -> Suppression de machine
=========================================================*/
if( section.remove.element != null ){
/* (1) Definition des champs */
section.remove.input = {
search: {
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'),
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')
},
code: document.querySelector(section.remove.text + '#remove_code'),
name: document.querySelector(section.remove.text + '#remove_name'),
submit: document.querySelector(section.remove.text + '#remove_submit')
};
var lastsearch_remove = null;
var searchindex_remove = 0;
/* (2) Gestion de l'auto-remplissage par lien */
function autofill_remove(id_machine){
// On recupere le code + name de la machine selectionnee
var machine_data = machine_data = {
id_machine: '',
code: '',
name: '',
disable_input: true
};
api.send({path:'machineDefault/getById', data: [id_machine]}, function(answer){
if( answer.ModuleError == 0 ){ // Aucune erreur
machine_data = answer.machine;
machine_data.diable_input = false;
}
// On enregistre l'UID de la machine
section.remove.input.search.id.value = machine_data.id_machine;
// Auto-remplissage du formulaire
section.remove.input.code.value = machine_data.code;
section.remove.input.name.value = machine_data.name;
// On gere le caractere "inactif" du submit
section.remove.input.submit.disabled = machine_data.disable_input;
// Muse a jour des indices des resultats
section.remove.input.search.num.innerHTML = searchindex_remove+1;
});
}if( pageManager.vars.length >= 2 && !isNaN(pageManager.vars[1]) ) autofill_remove(pageManager.vars[1]);
/* (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
if( section.remove.input.search.keyword.value != '' ){
// Redaction de la requete
var getuid = {
path: 'machineDefault/search',
data: [section.remove.input.search.keyword.value]
};
// On envoie la requete
api.send(getuid, function(uidanswer){
if( uidanswer.ModuleError == 0 && uidanswer.machines.length > 0){ // si on a trouve qqch
section.remove.input.search.submit.anim('active', 1000);
// Si on trouve la meme machine que lors de la derniere recherche
if( lastsearch_remove == uidanswer.machines[searchindex_remove].id_machine )
searchindex_remove = (searchindex_remove+1) % uidanswer.machines.length; // on affiche le prochain (decalage cyclique)
lastsearch_remove = uidanswer.machines[searchindex_remove].id_machine;
section.remove.input.search.id.value = lastsearch_remove;
// Mise a jour des indices des resultats
section.remove.input.search.sum.innerHTML = uidanswer.machines.length;
// on auto-remplit le formulaire
autofill_remove(lastsearch_remove);
}else{
section.remove.input.search.sum.innerHTML = 0;
autofill_remove(null);
}
});
}
}, 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 != '' ){
/* (2) On supprime la machine */
var request = {
path: 'machineDefault/delete', // On veut supprimer cet utilisateur
data: [section.remove.input.search.id.value]
};
api.send(request, function(answer){
if( answer.ModuleError == 0 && answer.status == true ){ // Tout s'est bien deroule
console.log('Machine supprimee!');
section.remove.input.submit.anim('active', 1500);
// On vide le formulaire
autofill_remove(null);
}else // Erreur
console.error('ModuleError::'+answer.ModuleError);
});
}
}, false);
}
/* [4] edit -> Modification de machine
=========================================================*/
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')
},
code: document.querySelector(section.edit.text + '#edit_code'),
name: document.querySelector(section.edit.text + '#edit_name'),
submit: document.querySelector(section.edit.text + '#edit_submit')
};
var lastsearch_edit = null;
var searchindex_edit = 0;
// Gestion de l'auto-remplissage par lien
function autofill_edit(id_machine){
// On recupere le code + name de la machine selectionnee
var machine_data = {
id_machine: '',
code: '',
name: '',
disable_input: true
};
// Si @id_machine est un entier
if( !isNaN(id_machine) ){
api.send({path:'machineDefault/getById', data: [id_machine]}, function(answer){
if( answer.ModuleError == 0 ){ // Aucune erreur
machine_data = answer.machine;
machine_data.disable_input = false;
}
// On enregistre l'UID de la machine
section.edit.input.search.id.value = machine_data.id_machine;
// Auto-remplissage du formulaire
section.edit.input.code.value = machine_data.code;
section.edit.input.name.value = machine_data.name;
// On active ou pas le bouton "Modifier"
section.edit.input.submit.disabled = machine_data.disable_input;
// Mise a jour des indices des resultats
section.edit.input.search.num.innerHTML = searchindex_edit+1;
});
}else
section.edit.input.search.num.innerHTML = 0;
}if( pageManager.vars.length >= 2 && !isNaN(pageManager.vars[1]) ) autofill_edit(pageManager.vars[1]);
/* (2) Gestion de la recherche de la machine */
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
if( section.edit.input.search.keyword.value != '' ){
// Redaction de la requete
var getuid = {
path: 'machineDefault/search',
data: [section.edit.input.search.keyword.value]
};
// On envoie la requete
api.send(getuid, function(uidanswer){
if( uidanswer.ModuleError == 0 && uidanswer.machines.length > 0 ){ // si on a trouve qqch
section.edit.input.search.submit.anim('active', 1000);
// Si on trouve la meme machine que lors de la derniere recherche
if( lastsearch_edit == uidanswer.machines[searchindex_edit].id_machine )
searchindex_edit = (searchindex_edit+1) % uidanswer.machines.length; // on affiche le prochain (decalage cyclique)
else // si nouveau resultat, on remet l'indice a 0
searchindex_edit = 0;
lastsearch_edit = uidanswer.machines[searchindex_edit].id_machine;
section.edit.input.search.id.value = lastsearch_edit;
// Mise a jour des indices des resultats
section.edit.input.search.sum.innerHTML = uidanswer.machines.length;
// on auto-remplit le formulaire
autofill_edit(lastsearch_edit);
}else{
section.edit.input.search.sum.innerHTML = 0;
autofill_edit(null);
}
});
}
}, 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 != '' ){
var request = {
path: 'machineDefault/edit', // On veut creer une machine
data: [
section.edit.input.search.id.value,
section.edit.input.code.value,
section.edit.input.name.value
]
};
api.send(request, function(answer){
if( answer.ModuleError == 0 && answer.status == true ){ // Tout s'est bien deroule
console.log('Machine modifiee!');
section.edit.input.submit.anim('active', 1500);
// On met a jour la machine
autofill_edit(section.edit.input.search.id.value);
}else // Erreur
console.error('ModuleError::'+answer.ModuleError);
});
}
}, false);
}