NxTIC/view/js/input.js

224 lines
6.2 KiB
JavaScript
Raw Normal View History

// STRUCTURE DU localStorage
// subject-data -> contient
// contacts-data
// fiches-relation
/* [0] Gestion des constantes et fonctions
=========================================================*/
var contactBuilder = new HTMLBuilder();
contactBuilder.setLayout(
"<h4 data-icon='p' class='new-contact'> "+
"<input type='text' data-name='number' placeholder='Numéro de téléphone' value='@number' > "+
"<input type='text' data-name='username' placeholder='Pseudo' value='@username' > "+
"<input type='text' data-name='firstname' placeholder='Prénom' value='@firstname' > "+
"<input type='text' data-name='lastname' placeholder='Nom' value='@lastname' > "+
"<input type='submit' class='primary sub-number' value='Enregistrer'>"+
"</h4>");
/* (2) TODO: Contiendra la fiche relation complète */
var ficheBuilder = new HTMLBuilder();
ficheBuilder.setLayout(
"<h4 data-icon='p' class='new-contact'> "+
"<input type='text' data-name='number' placeholder='Numéro de téléphone' value='@number' > "+
"<input type='text' data-name='username' placeholder='Pseudo' value='@username' > "+
"<input type='text' data-name='firstname' placeholder='Prénom' value='@firstname' > "+
"<input type='text' data-name='lastname' placeholder='Nom' value='@lastname' > "+
"<input type='submit' class='primary sub-number' value='Enregistrer'>"+
"</h4>");
// Fonction qui met à jour un élément et son listener
function updateListener(element, eventType, handler, newElement){
element.removeEventListener(eventType, handler);
newElement.addEventListener(eventType, handler);
return newElement;
}
/* [1] Initialisation des utilitaires
=========================================================*/
/* (1) Instanciation de inputChecker */
var ic = new inputChecker();
/* (2) Paramètres de FormDeflater */
var FormDeflaterP = { tags: ['input'], attr: ['data-name'] };
/* [2] Indexation des inputs
=========================================================*/
/* (1) Input de type fichier pour l'import */
2016-04-22 08:27:58 +00:00
var importCallLog = $('input#call_log-import[type="file"]');
/* (2) Contiendra les formulaires des contacts ajoutés */
var contactDeflaters = []; // Contiendra les deflaters de chaque formulaire d'ajout de contact
function contactForms(){
// {1} On récupère les formulaires //
2016-04-22 08:27:58 +00:00
var contactForms = $$('h4.new-contact');
// {2} Mise à jour des deflaters //
contactDeflaters = [];
for( var i = 0 ; i < contactForms.length ; i++ )
contactDeflaters.push( new FormDeflater( contactForms[i], FormDeflaterP.tags, FormDeflaterP.attr ));
// {3} On retourne la liste des formulaires //
return contactForms;
}
/* (3) Bouton d'ajout de contact */
2016-04-22 08:27:58 +00:00
var addContact = $('h4.add-contact');
/* (4) Bouton d'ajout de fiche */
var addFiche = $('h4.add-fiche');
/* [3] Gestion des formulaires de contact
=========================================================*/
/* (0) Conteneur de tous les formulaires */
2016-04-22 08:27:58 +00:00
var contactContainer = $('article.contact-panel');
/* (1) Fonction pour l'ajout d'un contact */
function addNewContact(number, username, firstname, lastname){
contactContainer.innerHTML += contactBuilder.build({
number: (typeof number != 'string') ? '' : number,
username: (typeof username != 'string') ? '' : username,
firstname: (typeof firstname != 'string') ? '' : firstname,
lastname: (typeof lastname != 'string') ? '' : lastname
});
}
// On ajoute le premier
addNewContact();
// Puis on attache l'évènement pour en ajouter d'autres manuellement
addContact.addEventListener('click', addNewContact, false);
/* [4] Gestion des fiches relation
=========================================================*/
/* (0) Conteneur de tous les formulaires */
var ficheContainer = $('article.contact-panel');
/* (1) Fonction pour l'ajout d'un contact */
function addNewFiche(number, username, firstname, lastname){
ficheContainer.innerHTML += contactBuilder.build({
number: (typeof number != 'string') ? '' : number,
username: (typeof username != 'string') ? '' : username,
firstname: (typeof firstname != 'string') ? '' : firstname,
lastname: (typeof lastname != 'string') ? '' : lastname
});
}
// On ajoute la première
// addNewFiche();
// Puis on attache l'évènement pour en ajouter d'autres manuellement
// addContact.addEventListener('click', addNewFiche, false);
/* [5] Gestion des deflaters (formulaires) de contact
=========================================================*/
/* [6] Gestion des deflaters (formulaires) de fiches
=========================================================*/
/* (4) Contiendra les formulaires de fiche relation */
var ficheDeflaters = []; // Contiendra les deflaters de chaque formulaire de fiche de fiche
function ficheForms(){
// {1} On récupère les formulaires //
var ficheForms = $$('h4.fiche-fiche');
// {2} Mise à jour des deflaters //
ficheDeflaters = [];
for( var i = 0 ; i < ficheForms.length ; i++ )
ficheDeflaters.push( new FormDeflater( ficheForms[i], FormDeflaterP.tags, FormDeflaterP.attr ));
// {3} On retourne la liste des formulaires //
return ficheForms;
}
/* [3] Gestion de l'import du fichier
=========================================================*/
importCallLog.addEventListener('change', function(e){
/* (1) On rédige la requête */
2016-04-20 13:46:19 +00:00
var uploadRequest = {
path: 'upload/call_log',
file: importCallLog.files[0]
};
/* (2) On effectue l'upload (import) */
2016-04-20 13:46:19 +00:00
api.send(uploadRequest, function(response){
console.log( response );
// Si tout est bon, on met l'input en bleu
if( response.ModuleError == 0 )
importCallLog.addClass('active');
// TODO: Gestion de l'ajout des fiches relation
});
}, false);
2016-04-22 08:27:58 +00:00
// var number = $('input.number[type="text"]');
// ic.append(number, format_number, '06 06 06 06 06');
// // format_number -> format pour les numéros de téléphones
//
// number.addEventListener('keyup', function(e){
// ic.correct(number, false);
// }, false);