// STRUCTURE DU localStorage // subject -> contient les données du sujet // contacts -> contient les données de tous les contacts // mini-fiches -> contient les données de toutes les mini fiches // fiches -> contient les données de toutes les fiches /* [1] Initialisation des utilitaires et variables =========================================================*/ /* (1) Input de type fichier pour l'import */ var importCallLog = $('input#call_log-import[type="file"]'); /* (2) Initialisation des managers */ var subjectManager; var contactManager; var miniManager; var ficheManager; /* (3) Fonctions utiles */ function dynamicUpdate(){ console.log('DYNAMIC UPDATE: UPDATING'); /* (1) On enregistre les MINI fiches relation */ miniManager.fieldsToStorage(); /* (2) On enregister les FICHES relation */ ficheManager.fieldsToStorage(); /* (3) On enregistre les CONTACTS */ contactManager.fieldsToStorage(); /* (4) On synchronise les MINI avec les CONTACTS */ miniManager.sync(); /* (5) On synchronise les FICHE avec les CONTACTS */ ficheManager.sync(); /* (6) On affiche le tout */ miniManager.storageToFields(); ficheManager.storageToFields(); contactManager.storageToFields(); } // Vérifie qu'une seule valeur vaut TRUE et les autres false function checkRadioValue(selectData){ var nbTrue = 0; for( var i = 0 ; i < selectData.length ; i++ ) if( selectData[i].status === true ) nbTrue++; if( nbTrue != 1 ) return false; else return true; } /* [2] Inclusion des scripts externes et lancement =========================================================*/ include('/js/includes/input-phone-subject.js', function(){ include('/js/includes/input-phone-contact.js', function(){ include('/js/includes/input-phone-mini.js', function(){ include('/js/includes/input-phone-fiche.js', function(){ /* [3] Gestion du formulaire du sujet =========================================================*/ /* (1) On crée une instance du manager du sujet */ subjectManager = new inputPhoneSubject( $('article.subject-panel [data-name="number"]'), $('article.subject-panel [data-name="username"]'), $('article.subject-panel [data-name="firstname"]'), $('article.subject-panel [data-name="lastname"]'), $('article.subject-panel [data-name="submit"]') ); /* (2) On le démarre */ subjectManager.attach(); /* [4] Gestion des formulaires de contact =========================================================*/ /* (1) On crée une instance du gestionnaire des CONTACTS */ contactManager = new inputPhoneContact( $('article.contact-panel'), $('h4.add-contact') ); /* (2) On le démarre */ contactManager.attach(dynamicUpdate); /* [5] Gestion des mini fiches relation =========================================================*/ /* (1) On crée une instance du gestionnaire des mini fiches relation */ miniManager = new inputPhoneMini( $('article.mini-relation-panel'), $('#nav-mini') ); /* (2) On le démarre */ miniManager.attach(dynamicUpdate); /* [6] Gestion des fiches relation =========================================================*/ /* (1) On crée une instance du gestionnaire des fiches relation */ ficheManager = new inputPhoneFiche( $('article.relation-panel'), $('#nav-fiche') ); /* (2) On le démarre */ ficheManager.attach(dynamicUpdate); /* [6] 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(uploadResponse){ console.log(uploadResponse); // Si tout est bon, on met l'input en bleu if( uploadResponse.ModuleError == 0 ){ importCallLog.addClass('active'); /* (3) On rédige la requête pour récupérer les données du fichier */ var getCallLogRequest = { path: 'call_log/unserialize', phone_number: $('#subject_phone_number').value }; /* (4) On effectue la récupération d'informations */ api.send(getCallLogRequest, function(dataResponse){ console.log(dataResponse); // Si tout est ok, on ajoute les données if( dataResponse.ModuleError == 0 ){ /* (5) Pour chaque contact de l'annuaire, on ajoute un contact */ for( var i = 0 ; i < dataResponse.directory.length && i < 20 ; i++ ){ lsi.set('contacts', 'form'+i, { uid: i, number: dataResponse.directory[i].number, username: dataResponse.directory[i].name, firstname: '', lastname: '' }); } /* (6) On met à jour l'affichage */ dynamicUpdate(); } }); } }); }, false); }) }) }) }); // ETAPE 1 : INITIALISATION (ON RESTAURE LES DONNEES) // 1. contact.storageToFields(); // 2. contact.add(); // 3. mini.storageToFields(); // 4. fiche.storageToFields(); // ETAPE 2 : ENREGISTREMENT + MISE À JOUR // 1. mini.fieldsToStorage(); // 2. fiche.fieldsToStorage(); // 3. contact.fieldsToStorage(); // 4. mini.sync(); // 5. fiche.sync(); // 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);