NxTIC/view/js/input.js

234 lines
6.1 KiB
JavaScript

// 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);