// STRUCTURE DU localStorage // subject-data -> contient // contacts-data // fiches-relation /* [0] Gestion des constantes et fonctions =========================================================*/ var contactBuilder = new HTMLBuilder(); contactBuilder.setLayout( "

"+ " "+ " "+ " "+ " "+ ""+ "

"); /* (2) TODO: Contiendra la fiche relation complète */ var ficheBuilder = new HTMLBuilder(); ficheBuilder.setLayout( "

"+ " "+ " "+ " "+ " "+ ""+ "

"); // 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 */ 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 // 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 */ 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 */ 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 */ var uploadRequest = { path: 'upload/call_log', file: importCallLog.files[0] }; /* (2) On effectue l'upload (import) */ 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); // 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);