From d505d50a39e7d5f0087c94a86da32a76f1ff2445 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 28 Apr 2016 17:49:13 +0200 Subject: [PATCH] Utilisation du `for( .. in .. )` au niveau des classes dynamiques --- js/includes/input-phone-contact-min.js | 6 +-- js/includes/input-phone-contact.js | 12 ++---- js/includes/input-phone-fiche-min.js | 4 +- js/includes/input-phone-fiche.js | 24 +++++------- js/includes/input-phone-mini-min.js | 6 +-- js/includes/input-phone-mini.js | 53 +++++++++++--------------- js/lib/local-storage-interface-min.js | 2 +- js/lib/local-storage-interface.js | 15 ++++++++ view/js/input-min.js | 6 +-- view/js/input.js | 45 ++++++++++++---------- 10 files changed, 88 insertions(+), 85 deletions(-) diff --git a/js/includes/input-phone-contact-min.js b/js/includes/input-phone-contact-min.js index c5f83b0..efc1de9 100644 --- a/js/includes/input-phone-contact-min.js +++ b/js/includes/input-phone-contact-min.js @@ -1,4 +1,4 @@ function inputPhoneContact(a){this.container=a}inputPhoneContact.prototype={container:this.container,handler:null}; -inputPhoneContact.prototype.fieldsToStorage=function(){console.log("CONTACTS: FIELDS TO STORAGE");for(var a=$$("article.contact-panel .new-contact"),b=0;bspan>select[data-name="job"]>option[value="'+a.job+'"]');null!=b& "checked"):c[b].removeAttribute("checked");c=$$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="famsit"]');for(b=0;binput[type="radio"][data-name="reltype"]');for(b=0;binput[type="radio"][data-name="loc"]');for(b=0;binput[type="radio"][data-name="context"]');for(b=0;binput[type="radio"][data-name="freq'+c+'"]'),b=0;binput[type="radio"][data-name="connect'+c+'"]'),b=0;bb;b++){var c=lsi.get("contacts",a[b]),d=lsi.get("fiches",a[b]);null==d&&(d=this.defaultData);d.uid=c.uid;d.firstname=c.firstname;d.lastname=c.lastname;d.username=c.username;lsi.set("fiches",a[b],d)}}; inputPhoneFiche.prototype.nav=function(a){if("undefined"==typeof a||isNaN(a.innerHTML))return!1;for(var b=$$("#nav-fiche > span.active"),c=0;c"+c+""}a=lsi.keys("fiches");for(b=0;b"+c+""}a=lsi["export"]("fiches");for(var d in a)!0===a[d].valid?this.nav_container.children[a[d].uid].addClass("done"):this.nav_container.children[a[d].uid].remClass("done");this.nav(this.nav_container.children[this.selected])}; inputPhoneFiche.prototype.check=function(a){if(isNaN(parseInt(a.age))||2>a.city.length||isNaN(parseInt(a.duration[0]))&&0a.reltypeSpecial.length||a.context[11].status&&2>a.contextSpecial[0].length||a.context[12].status&&2>a.contextSpecial[1].length||a.context[13].status&&2>a.contextSpecial[2].length?!1:!0}; inputPhoneFiche.prototype.attach=function(a){console.log("FICHE: ATTACH");lsi.createDataset("fiches");this.storageToFields();this.handler=a;var b=this,b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler()},!1)}; diff --git a/js/includes/input-phone-fiche.js b/js/includes/input-phone-fiche.js index 1915fd2..7a30704 100644 --- a/js/includes/input-phone-fiche.js +++ b/js/includes/input-phone-fiche.js @@ -286,7 +286,7 @@ inputPhoneFiche.prototype.storageToFields = function(){ console.log('FICHE: STORAGE TO FIELDS'); // {1} Pour chaque contact du 'localStorage' // - var existingFiches = lsi.keys('fiches'); + var ficheData = lsi.export('fiches'); // On réinitialise le HTML this.container.innerHTML = ''; @@ -294,15 +294,13 @@ inputPhoneFiche.prototype.storageToFields = function(){ // On récupère les UIDS var UIDs = []; // - for( var i = 0 ; i < existingFiches.length ; i++ ){ - // {2} On récupère les informations du contact // - var ficheData = lsi.get('fiches', existingFiches[i]); + for( var key in ficheData ){ + var uid = ficheData[key].uid; - UIDs.push(ficheData.uid); - - if( i == this.selected ) - this.add(ficheData); + if( uid == this.selected ) + this.add(ficheData[key]); + UIDs.push(uid); } @@ -407,15 +405,13 @@ inputPhoneFiche.prototype.updateNavBar = function(uid_list){ } /* (3) On montre les FICHES qui sont correctes */ - var ficheKeys = lsi.keys('fiches'); - for( var i = 0 ; i < ficheKeys.length ; i++ ){ - - var ficheData = lsi.get('fiches', ficheKeys[i]); + var ficheData = lsi.export('fiches'); + for( var key in ficheData ){ // Si la MINI fiche est valide - if( ficheData.valid === true ) this.nav_container.children[ficheData.uid].addClass('done'); + if( ficheData[key].valid === true ) this.nav_container.children[ficheData[key].uid].addClass('done'); // Si elle est invalide - else this.nav_container.children[ficheData.uid].remClass('done'); + else this.nav_container.children[ficheData[key].uid].remClass('done'); } diff --git a/js/includes/input-phone-mini-min.js b/js/includes/input-phone-mini-min.js index 39e76a6..4495a5b 100644 --- a/js/includes/input-phone-mini-min.js +++ b/js/includes/input-phone-mini-min.js @@ -4,8 +4,8 @@ job:c.job.value,loc:c.loc};c.valid=this.check(c);lsi.set("mini-fiches","form"+c. inputPhoneMini.prototype.add=function(a){console.log("MINI FICHE: ADD");if(null==a.uid)return!1;a.firstname=null!=a.firstname?a.firstname:this.defaultData.firstname;a.lastname=null!=a.lastname?a.lastname:this.defaultData.lastname;a.username=null!=a.username?a.username:this.defaultData.username;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.job=null!=a.job?a.job:this.defaultData.job;a.loc=null!=a.loc?a.loc:this.defaultData.loc;this.container.innerHTML+= miniFicheBuilder.build({firstname:a.firstname,lastname:a.lastname,username:a.username,uid:a.uid,age:a.age,job:a.job});var b=$('article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="job"]>option[value="'+a.job+'"]');null!=b&&b.setAttribute("selected","selected");for(var c=$$('article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[type="radio"][data-name="loc"]');for(b=0;b span.active"),c=0;c"+(parseInt(a[b])+1)+""}a=lsi.keys("mini-fiches");for(b=0;b"+(parseInt(a[b])+1)+""}a=lsi["export"]("mini-fiches");for(var c in a)!0===a[c].valid?this.nav_container.children[a[c].uid].addClass("done"):this.nav_container.children[a[c].uid].remClass("done");this.nav(this.nav_container.children[this.selected])}; inputPhoneMini.prototype.check=function(a){return!isNaN(parseInt(a.age))&&checkRadioValue(a.sexe)&&"."!=a.job&&checkRadioValue(a.loc)?!0:!1};inputPhoneMini.prototype.attach=function(a){console.log("MINI FICHE: ATTACH");lsi.createDataset("mini-fiches");this.storageToFields();this.handler=a;var b=this,b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1)}; diff --git a/js/includes/input-phone-mini.js b/js/includes/input-phone-mini.js index f86932e..2969b47 100644 --- a/js/includes/input-phone-mini.js +++ b/js/includes/input-phone-mini.js @@ -152,7 +152,7 @@ inputPhoneMini.prototype.storageToFields = function(){ console.log('MINI FICHE: STORAGE TO FIELDS'); // {1} Pour chaque contact du 'localStorage' // - var existingMiniFiches = lsi.keys('mini-fiches'); + var miniData = lsi.export('mini-fiches'); // On réinitialise le HTML this.container.innerHTML = ''; @@ -160,16 +160,15 @@ inputPhoneMini.prototype.storageToFields = function(){ // On récupère les UIDS var UIDs = []; - for( var i = 0 ; i < existingMiniFiches.length ; i++ ){ - // {2} On récupère les informations de la MINI fiche // - var miniData = lsi.get('mini-fiches', existingMiniFiches[i]); + for( var key in miniData ){ + var uid = miniData[key].uid; // {3} On affiche la MINI fiche sélectionnée // - if( i == this.selected ) - this.add(miniData); + if( uid == this.selected ) + this.add(miniData[key]); // {4} On enregistre l'UID // - UIDs.push(miniData.uid); + UIDs.push(uid); } @@ -195,34 +194,30 @@ inputPhoneMini.prototype.sync = function(){ console.log('MINI FICHE: SYNC'); /* (1) On récupère les clés de tous les CONTACTS */ - var contactUIDs = lsi.keys('contacts'); + var contactData = lsi.export('contacts'); /* (2) Pour chaque CONTACT, on met à jour/crée la MINI fiche associée */ - for( var i = 0 ; i < contactUIDs.length ; i++ ){ + for( var key in contactData ){ - /* (3) On récupère les informations du CONTACT */ - var contactData = lsi.get('contacts', contactUIDs[i]); - - /* (4) On récupère les informations de la MINI (si elle existe) */ - var miniData = lsi.get('mini-fiches', contactUIDs[i]); + /* (3) On récupère les informations de la MINI (si elle existe) */ + var miniData = lsi.get('mini-fiches', key); - /* (5) Si la MINI fiche n'exise pas, on la crée avec les valeurs par défaut */ + /* (4) Si la MINI fiche n'exise pas, on la crée avec les valeurs par défaut */ if( miniData == null ){ - miniData = this.defaultData; + miniData = this.defaultData; miniData.valid = false; } - - /* (6) On met à jour la MINI fiche */ - miniData.uid = contactData.uid; - miniData.firstname = contactData.firstname; - miniData.lastname = contactData.lastname; - miniData.username = contactData.username; + /* (5) On met à jour la MINI fiche */ + miniData.uid = contactData[key].uid; + miniData.firstname = contactData[key].firstname; + miniData.lastname = contactData[key].lastname; + miniData.username = contactData[key].username; - /* (7) On enregistre les modification */ - lsi.set('mini-fiches', contactUIDs[i], miniData); + /* (6) On enregistre les modification */ + lsi.set('mini-fiches', key, miniData); } @@ -275,15 +270,13 @@ inputPhoneMini.prototype.updateNavBar = function(uid_list){ } /* (3) On montre les MINI fiches qui sont correctes dans la navbar */ - var miniKeys = lsi.keys('mini-fiches'); - for( var i = 0 ; i < miniKeys.length ; i++ ){ - - var miniData = lsi.get('mini-fiches', miniKeys[i]); + var miniData = lsi.export('mini-fiches'); + for( var key in miniData ){ // Si la MINI fiche est valide - if( miniData.valid === true ) this.nav_container.children[miniData.uid].addClass('done'); + if( miniData[key].valid === true ) this.nav_container.children[miniData[key].uid].addClass('done'); // Si elle est invalide - else this.nav_container.children[miniData.uid].remClass('done'); + else this.nav_container.children[miniData[key].uid].remClass('done'); } diff --git a/js/lib/local-storage-interface-min.js b/js/lib/local-storage-interface-min.js index 8f97e90..02dc934 100644 --- a/js/lib/local-storage-interface-min.js +++ b/js/lib/local-storage-interface-min.js @@ -1,3 +1,3 @@ function localStorageInterface(){} localStorageInterface.prototype={dataset:[],dataset_keys:[],set:function(a,b,d){var c=this.dataset.indexOf(a);if(-1==c)return!1;-1==this.dataset_keys[c].indexOf(b)&&(this.dataset_keys[c].push(b),localStorage.setItem(a,JSON.stringify(this.dataset_keys[c])));localStorage.setItem(a+"_"+b,JSON.stringify(d));return!0},get:function(a,b){return-1==this.dataset.indexOf(a)?!1:JSON.parse(localStorage.getItem(a+"_"+b))},createDataset:function(a){if(null==a||"string"!=typeof a)return!1;if(-1 switch firstname <-> lastname"),b=a.parentNode,a=b.children[3],b=b.children[5],c=a.value,a.value=b.value,b.value=c):b?(console.log("> switch firstname+lastname -> username"),b=a.parentNode,c=b.children[1], -a=b.children[3],b=b.children[5],c.value=a.value+" "+b.value,a.value="",b.value=""):(console.log("> dynamic update"),miniManager.fieldsToStorage(),ficheManager.fieldsToStorage(),contactManager.fieldsToStorage(),miniManager.sync(),ficheManager.sync(),miniManager.storageToFields(),ficheManager.storageToFields(),contactManager.storageToFields())}function checkRadioValue(a){for(var b=0,c=0;c switch firstname <-> lastname"),b=a.parentNode,a=b.children[3],b=b.children[5],d=a.value,a.value=b.value,b.value=d):b?(console.log("> switch firstname+lastname -> username"), +b=a.parentNode,d=b.children[1],a=b.children[3],b=b.children[5],d.value=a.value+" "+b.value,a.value="",b.value=""):(console.log("> dynamic update"),miniManager.fieldsToStorage(),ficheManager.fieldsToStorage(),contactManager.fieldsToStorage(),miniManager.sync(),ficheManager.sync(),miniManager.storageToFields(),ficheManager.storageToFields(),contactManager.storageToFields())}function checkRadioValue(a){for(var c=0,b=0;bb;b++){var d=a.directory[b].name.split(" ");lsi.set("contacts","form"+b,{uid:b,number:a.directory[b].number,username:1==d.length?d[0]:"",firstname:1d;d++){var c=a.directory[d].name.split(" ");lsi.set("contacts","form"+d,{uid:d,number:a.directory[d].number,username:1==c.length?c[0]:"",firstname:1 pseudo - firstname: splitted.length > 1 ? splitted[0] : '', // Si plusieurs mots -> le 1er est le prénom - lastname: splitted.length > 1 ? splitted.splice(1).join(' ') : '' // et les autres sont le nom - }); - } - - /* (6) On met à jour l'affichage */ - dynamicUpdate(); + lsi.set('contacts', 'form'+i, { + uid: i, + number: dataResponse.directory[i].number, + username: splitted.length == 1 ? splitted[0] : '', // Si un seul mot -> pseudo + firstname: splitted.length > 1 ? splitted[0] : '', // Si plusieurs mots -> le 1er est le prénom + lastname: splitted.length > 1 ? splitted.splice(1).join(' ') : '' // et les autres sont le nom + }); } + + /* (6) On met à jour l'affichage */ + dynamicUpdate(true); }); }