NxTIC/view/js/input.js

203 lines
5.1 KiB
JavaScript

// STRUCTURE DU localStorage
// subject-data -> contient
// contacts-data
// fiches-relation
/* [0] Gestion des constantes et fonctions
=========================================================*/
/* (1) Contiendra le formulaire d'ajout de contact (numéro, pseudo, prénom, nom, submit) */
function newContactHTMLBuilder(number, username, firstname, lastname){
var root = document.createElement('h4');
root.dataset.icon = 'p';
root.className = 'new-contact';
var contentHTML = "<input type='text' data-name='number' placeholder='Numéro de téléphone' value='";
contentHTML += (typeof number != 'undefined') ? number : '';
contentHTML += "'> ";
contentHTML += "<input type='text' data-name='username' placeholder='Pseudo' value='";
contentHTML += (typeof username != 'undefined') ? username : '';
contentHTML += "'> ";
contentHTML += "<input type='text' data-name='firstname' placeholder='Prénom' value='";
contentHTML += (typeof firstname != 'undefined') ? firstname : '';
contentHTML += "'> ";
contentHTML += "<input type='text' data-name='lastname' placeholder='Nom' value='";
contentHTML += (typeof lastname != 'undefined') ? lastname : '';
contentHTML += "'> ";
contentHTML += "<input type='submit' class='primary sub-number' value='Enregistrer'>";
root.innerHTML = contentHTML;
return root;
}
/* (2) TODO: Contiendra la fiche relation complète */
var ficheRelationHTML = "";
// 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');
// Fonction pour l'ajout d'un contact
var contactContainer = $('article.contact-panel');
function addNewContact(){
console.log('adding New Contact');
// {1} On récupère les éléments (dont les contacts) //
var children = contactContainer.children;
var clen = children.length;
console.log( children );
// {2} On retire les 2 derniers enfants //
contactContainer.removeChild(addContact);
// {3} On ajoute le nouveau contact //
contactContainer.appendChild( newContactHTMLBuilder() );
// {4} On remet les enfants précédemment enlevés //
contactContainer.appendChild(addContact);
// {4} On met à jour notre listener //
// addContact = updateListener(addContact, 'click', addNewContact, $('h4.add-contact'));
}
addContact.addEventListener('click', addNewContact, false);
/* (4) Contiendra les formulaires de fiche relation */
var relationDeflaters = []; // Contiendra les deflaters de chaque formulaire de fiche de relation
function relationForms(){
// {1} On récupère les formulaires //
var relationForms = $$('h4.fiche-relation');
// {2} Mise à jour des deflaters //
relationDeflaters = [];
for( var i = 0 ; i < relationForms.length ; i++ )
relationDeflaters.push( new FormDeflater( relationForms[i], FormDeflaterP.tags, FormDeflaterP.attr ));
// {3} On retourne la liste des formulaires //
return relationForms;
}
/* [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);