diff --git a/automate.php b/automate.php index 746f35c..c787f0c 100755 --- a/automate.php +++ b/automate.php @@ -69,17 +69,17 @@ /* [3] Test de la vérification du format de fichier pour l'upload =========================================================*/ - // ?> + ?> - '01 02 03 04 05') ); // $response = $request->dispatch(); // var_dump( ManagerError::explicit($response->error) ); // diff --git a/doc/sample.xml b/doc/sample.xml index d18fde5..be43a5a 100644 --- a/doc/sample.xml +++ b/doc/sample.xml @@ -1,23 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/includes/input-html-data-min.js b/js/includes/input-html-data-min.js index fe51ce7..41b41b3 100644 --- a/js/includes/input-html-data-min.js +++ b/js/includes/input-html-data-min.js @@ -1,3 +1,3 @@ var contactBuilder=new HTMLBuilder;contactBuilder.setLayout("

\n\t\n\t\n\t\n\t\n\t\n\t \n\t \n\t \n\t \n\t \n\t \n\t\n

\n\n"); -var miniFicheBuilder=new HTMLBuilder;miniFicheBuilder.setLayout("
\n\t\n\t\n\t\n\t\n\t\n\t

@firstname @lastname @username

\n\t
\t\t@countcall appels\t
\t
\t\t@countsms sms\t
\t
\n\t\t\n\t\t   \n\t
\n\t
\n\t\t\n\t
\n\t
\n\t\t\n\t
\n\t

Type de relation

\n\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\tO\u00f9 habite t-elle/il\u00a0?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n
"); -var ficheBuilder=new HTMLBuilder;ficheBuilder.setLayout("
\n\t\n\t\n\t\n\t\n\t\n\t

@firstname @lastname @username

\n\t
\t\t@countcall appels\t
\t
\t\t@countsms sms\t
\t
\n\t\t\n\t\t   \n\t
\n\t
\n\t\t\n\t
\n\t
\n\t\t\n\t
\n\t
\n\t\tSituation familiale:
\n\t\t
\n\t\t   
\n\t\t   
\n\t\t   \n\t
\n\t
\n\t\t\n\t
\n\t

Type de relation

\n\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t

O\u00f9 habite t-elle/il\u00a0?

\n\t
\n\t\t\n\t\t\n\t
\n\t
\n\t\tO\u00f9 habite t-elle/il\u00a0?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\tDepuis quand connaissez-vous cette personne ?

\n\t\tmois\n\t\tet    ans.\n\t
\n\t

Contexte de rencontre

\n\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t

Avec quelle fr\u00e9quence discutez-vous avec cette personne\u00a0?

\n\t
\n\t\tFace \u00e0 face
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t
\n\t\tT\u00e9l\u00e9phone ou skype et \u00e9quivalent
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t
\n\t\tSMS, et \u00e9quivalents
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t
\n\t\tCourrier \u00e9lectronique
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t
\n\t\tFacebook ou autre r\u00e9seau social
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t

Comment \u00eates-vous \u00ab\u00a0connect\u00e9\u00a0\u00bb \u00e0 cette personne\u00a0?

\n\t
\n\t\tSes coordonn\u00e9es sont dans votre carnet d\u2019adresse
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tSon num\u00e9ro de mobile est enregistr\u00e9 sur votre mobile (ou vous-m\u00eames \u00eates sur le sien)
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif r\u00e9guli\u00e8rement
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous le suivez sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez avec cette personne sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez dans autre r\u00e9seau social : \n\t
\n\t
\n\t\tVous communiquez dans un autre dispositif (blogs, jeu vid\u00e9o ou autre) : \n\t
\n
\n"); +var miniFicheBuilder=new HTMLBuilder;miniFicheBuilder.setLayout("
\n\t\n\t\n\t

@name

\n\t
\t\t@countcall appels\t
\t
\t\t@countsms sms\t
\t
\n\t\t\n\t\t   \n\t
\n\t
\n\t\t\n\t
\n\t
\n\t\t\n\t
\n\t

Type de relation

\n\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\tO\u00f9 habite t-elle/il\u00a0?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n
"); +var ficheBuilder=new HTMLBuilder;ficheBuilder.setLayout("
\n\t\n\t\n\t

@name

\n\t
\t\t@countcall appels\t
\t
\t\t@countsms sms\t
\t
\n\t\t\n\t\t   \n\t
\n\t
\n\t\t\n\t
\n\t
\n\t\t\n\t
\n\t
\n\t\tSituation familiale:
\n\t\t
\n\t\t   
\n\t\t   
\n\t\t   \n\t
\n\t
\n\t\t\n\t
\n\t

Type de relation

\n\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t

O\u00f9 habite t-elle/il\u00a0?

\n\t
\n\t\t\n\t\t\n\t
\n\t
\n\t\tO\u00f9 habite t-elle/il\u00a0?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\tDepuis quand connaissez-vous cette personne ?

\n\t\tmois\n\t\tet    ans.\n\t
\n\t

Contexte de rencontre

\n\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t

Avec quelle fr\u00e9quence discutez-vous avec cette personne\u00a0?

\n\t
\n\t\tFace \u00e0 face
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t
\n\t\tT\u00e9l\u00e9phone ou skype et \u00e9quivalent
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t
\n\t\tSMS, et \u00e9quivalents
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t
\n\t\tCourrier \u00e9lectronique
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t
\n\t\tFacebook ou autre r\u00e9seau social
\n\t\t   \n\t\t   \n\t\t   \n\t\t   \n\t
\n\t

Comment \u00eates-vous \u00ab\u00a0connect\u00e9\u00a0\u00bb \u00e0 cette personne\u00a0?

\n\t
\n\t\tSes coordonn\u00e9es sont dans votre carnet d\u2019adresse
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tSon num\u00e9ro de mobile est enregistr\u00e9 sur votre mobile (ou vous-m\u00eames \u00eates sur le sien)
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif r\u00e9guli\u00e8rement
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous le suivez sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez avec cette personne sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez dans autre r\u00e9seau social : \n\t
\n\t
\n\t\tVous communiquez dans un autre dispositif (blogs, jeu vid\u00e9o ou autre) : \n\t
\n
\n"); diff --git a/js/includes/input-html-data.js b/js/includes/input-html-data.js index 5d5dd5a..3680cce 100644 --- a/js/includes/input-html-data.js +++ b/js/includes/input-html-data.js @@ -46,12 +46,9 @@ miniFicheBuilder.setLayout( "
\n"+ "\t\n"+ - "\t\n"+ - "\t\n"+ - "\t\n"+ "\t\n"+ - "\t

@firstname @lastname @username

\n"+ + "\t

@name

\n"+ "\t
"+ "\t\t@countcall appels"+ @@ -200,11 +197,8 @@ ficheBuilder.setLayout( "\t\n"+ "\t\n"+ - "\t\n"+ - "\t\n"+ - "\t\n"+ - "\t

@firstname @lastname @username

\n"+ + "\t

@name

\n"+ "\t
"+ "\t\t@countcall appels"+ diff --git a/js/includes/input-phone-fiche-min.js b/js/includes/input-phone-fiche-min.js index b8a133e..31a153e 100644 --- a/js/includes/input-phone-fiche-min.js +++ b/js/includes/input-phone-fiche-min.js @@ -1,15 +1,15 @@ function inputPhoneFiche(a,b){this.container=a;this.nav_container=b}inputPhoneFiche.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{sexe:"H",age:".",job:".",famsit:"0",studies:".",reltype:"0",reltypeSpecial:"",city:"",cp:"",loc:"0",duration:["",""],context:"0",contextSpecial:["","",""],freq:["0","4","8","12","16"],connect:"1 3 5 7 9 11".split(" "),connectSpecial:["",""],timestamp:0,valid:!1}}; inputPhoneFiche.prototype.fieldsToStorage=function(){console.log("FICHE: FIELDS TO STORAGE");for(var a=$$("article.relation-panel .fiche-relation"),b=0;b FICHE UPDATE"),c.timestamp=Date.now());lsi.set("fiches",c.uid,c)}}}; -inputPhoneFiche.prototype.add=function(a){console.log("FICHE: ADD");if(null==a.uid||null==a.contact)return!1;a.city=null!=a.city?a.city:this.defaultData.city;a.cp=null!=a.cp?a.cp:this.defaultData.cp;a.duration[0]=null!=a.duration[0]?a.duration[0]:this.defaultData.duration[0];a.duration[1]=null!=a.duration[1]?a.duration[1]:this.defaultData.duration[1];a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;a.contextSpecial[0]=null!=a.contextSpecial[0]?a.contextSpecial[0]: -this.defaultData.contextSpecial[0];a.contextSpecial[1]=null!=a.contextSpecial[1]?a.contextSpecial[1]:this.defaultData.contextSpecial[1];a.contextSpecial[2]=null!=a.contextSpecial[2]?a.contextSpecial[2]:this.defaultData.contextSpecial[2];a.connectSpecial[0]=null!=a.connectSpecial[0]?a.connectSpecial[0]:this.defaultData.connectSpecial[0];a.connectSpecial[1]=null!=a.connectSpecial[1]?a.connectSpecial[1]:this.defaultData.connectSpecial[1];a.job=null!=a.job?a.job:this.defaultData.job;a.studies=null!=a.studies? -a.studies:this.defaultData.studies;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.famsit=null!=a.famsit?a.famsit:this.defaultData.famsit;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.loc=null!=a.loc?a.loc:this.defaultData.loc;a.context=null!=a.context?a.context:this.defaultData.context;a.freq=null!=a.freq?a.freq:this.defaultData.freq;a.connect=null!=a.connect?a.connect:this.defaultData.connect;var b=lsi.get("contacts",a.contact);if(!1=== -b)return!1;this.container.innerHTML+=ficheBuilder.build({firstname:b.firstname,lastname:b.lastname,username:0==b.username.length?"":"("+b.username+")",countcall:b.countcall,countsms:b.countsms,uid:a.uid,contact:a.contact,city:a.city,cp:a.cp,duration0:a.duration[0],duration1:a.duration[1],reltypespecial:a.reltypeSpecial,contextspecial0:a.contextSpecial[0],contextspecial1:a.contextSpecial[1],contextspecial2:a.contextSpecial[2],connectspecial0:a.connectSpecial[0],connectspecial1:a.connectSpecial[1]}); -b=$('article.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");b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!= -b&&b.setAttribute("selected","selected");for(var c=$$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[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"]');for(b=0;binput[type="radio"][data-name="connect"]'); -for(b=0;bspan>select[data-name="job"]>option[value="'+a.job+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!=b&&b.setAttribute("selected","selected");for(var c=$$('article.fiche-relation input[data-name="uid"][value="'+ +a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[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"]');for(b=0;binput[type="radio"][data-name="connect"]');for(b=0;bb.length)for(c in a){for(a=0;-1a;)a++;b.push(a);d=lsi.get("fiches", a);null==d&&(d=this.defaultData);d.uid=a;d.contact=parseInt(c);lsi.set("fiches",a,d);if(20<=b.length)break}for(var f in d)b=lsi.get("contacts",d[f].contact),null!=b&&-1!=b.sms&&-1!=b.call&&(b=10>parseInt(f)?10+b.sms:b.call,b=d[b],b.timestamp>=d[f].timestamp||(c=d[f],c.uid=b.uid,lsi.set("fiches",b.uid,c)))}; inputPhoneFiche.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"nav-fiche"!=a.parentNode.id)return!1;for(var b=$$("#nav-fiche > span.active"),c=0;c";for(c=0;c";0',a+=e.firstname+" "+e.lastname,a+=0",a+='',a+=f.firstname+" "+f.lastname,a+=0"):a+="";a+=""}a+=""}this.container.innerHTML= -a+""};inputPhoneMatrice.prototype.attach=function(){console.log("MATRICE: ATTACH");lsi.createDataset("matrice");this.storageToFields();var a=this;this.container.addEventListener("click",function(d){a.fieldsToStorage();a.storageToFields()},!1)}; +inputPhoneMatrice.prototype.fieldsToStorage=function(){console.log("MATRICE: FIELDS TO STORAGE");var a=(new FormDeflater(this.container,["input"],["data-name"])).deflate();crc32(JSON.stringify(a));var d={},b;for(b in a)if(a[b]instanceof Array)for(var e in a[b])null==d[b]&&(d[b]=[]),d[b].push(parseInt(a[b][e]));else null!==a[b]&&(null==d[b]&&(d[b]=[]),d[b].push(parseInt(a[b])));lsi.set("matrice",0,d)}; +inputPhoneMatrice.prototype.storageToFields=function(){console.log("MATRICE: STORAGE TO FIELDS");var a=lsi["export"]("fiches"),d=lsi.get("matrice",0),b=lsi["export"]("contacts"),e=[],c;for(c in a)-1==e.indexOf(a[c].contact)&&e.push(a[c].contact);a="";for(c=0;c";0',a+=readableName(f.username,f.firstname,f.lastname),a+=""):a+="";for(var h=0;h",a+='',a+=readableName(g.username,g.firstname,g.lastname),a+=""):h",a+=""):a+=""}a+=""}this.container.innerHTML=a+"
"}; +inputPhoneMatrice.prototype.attach=function(){console.log("MATRICE: ATTACH");lsi.createDataset("matrice");this.storageToFields();var a=this;this.container.addEventListener("click",function(d){a.fieldsToStorage();a.storageToFields()},!1)}; diff --git a/js/includes/input-phone-matrice.js b/js/includes/input-phone-matrice.js index 0337fb7..555f0ed 100644 --- a/js/includes/input-phone-matrice.js +++ b/js/includes/input-phone-matrice.js @@ -108,8 +108,7 @@ inputPhoneMatrice.prototype.storageToFields = function(){ if( A > 0 ){ // Noms sur la première ligne (abscisses) matrice_html += ''; - matrice_html += conA.firstname+' '+conA.lastname - matrice_html += (conA.username.length>0) ? ' ('+conA.username+')' : ''; + matrice_html += readableName(conA.username, conA.firstname, conA.lastname); matrice_html += ''; }else // Sinon, matrice_html += ''; @@ -122,8 +121,7 @@ inputPhoneMatrice.prototype.storageToFields = function(){ if( A == 0 ){ matrice_html += ''; matrice_html += ''; - matrice_html += conB.firstname+' '+conB.lastname; - matrice_html += (conB.username.length>0) ? ' ('+conB.username+')' : ''; + matrice_html += readableName(conB.username, conB.firstname, conB.lastname), matrice_html += ''; // {4} Valeurs des relations (boutons) // diff --git a/js/includes/input-phone-mini-min.js b/js/includes/input-phone-mini-min.js index 9e23333..55d860d 100644 --- a/js/includes/input-phone-mini-min.js +++ b/js/includes/input-phone-mini-min.js @@ -1,11 +1,11 @@ function inputPhoneMini(a,b){this.container=a;this.nav_container=b}inputPhoneMini.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{sexe:"H",age:".",studies:".",loc:"0",reltype:"0",reltypeSpecial:"",timestamp:0,valid:!1}}; -inputPhoneMini.prototype.fieldsToStorage=function(){console.log("MINI FICHE: FIELDS TO STORAGE");for(var a=$$("article.mini-relation-panel .mini-fiche-relation"),b=0;b MINI UPDATE");c={uid:parseInt(c.uid),firstname:d.firstname,lastname:d.lastname,username:d.username,sexe:c.sexe,age:c.age,studies:c.studies, -reltype:c.reltype,reltypeSpecial:c.reltypeSpecial,loc:c.loc,hash:e};c.valid=this.check(c);0 FICHE UPDATE"),c.timestamp=Date.now());lsi.set("mini-fiches",c.uid,c)}}}; +inputPhoneMini.prototype.fieldsToStorage=function(){console.log("MINI FICHE: FIELDS TO STORAGE");for(var a=$$("article.mini-relation-panel .mini-fiche-relation"),b=0;b MINI UPDATE");c={uid:parseInt(c.uid),sexe:c.sexe,age:c.age,studies:c.studies,reltype:c.reltype,reltypeSpecial:c.reltypeSpecial, +loc:c.loc,hash:e};c.valid=this.check(c);0 FICHE UPDATE"),c.timestamp=Date.now());lsi.set("mini-fiches",c.uid,c)}}}; inputPhoneMini.prototype.add=function(a){console.log("MINI FICHE: ADD");if(null==a||null==a.uid)return!1;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.studies=null!=a.studies?a.studies:this.defaultData.studies;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;a.loc=null!=a.loc?a.loc:this.defaultData.loc;var b=lsi.get("contacts",a.uid);if(!1===b)return!1; -this.container.innerHTML+=miniFicheBuilder.build({firstname:b.firstname,lastname:b.lastname,username:0==b.username.length?"":"("+b.username+")",countcall:b.countcall,countsms:b.countsms,uid:a.uid,reltypespecial:a.reltypeSpecial});b=$('article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+ +this.container.innerHTML+=miniFicheBuilder.build({name:readableName(b.username,b.firstname,b.lastname),countcall:b.countcall,countsms:b.countsms,uid:a.uid,reltypespecial:a.reltypeSpecial});b=$('article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+ a.age+'"]');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="reltype"]');for(b=0;binput[type="radio"][data-name="loc"]');for(b=0;binput[type="radio"][data-name="loc"]');for(b=0;b span.active"),c=0;c'+ ++b+"
";for(c in a)b=$('#nav-mini [data-n="'+a[c].uid+'"]'),null!=b&&(!0===a[c].valid?b.addClass("done"):b.remClass("done"));this.nav($('#nav-mini [data-n="'+this.selected+'"]'))}; +inputPhoneMini.prototype.updateNavBar=function(){var a=lsi["export"]("mini-fiches");this.nav_container.innerHTML="";var b=0,c;for(c in a)isNaN(c)||(this.nav_container.innerHTML+=''+ ++b+"");for(c in a)isNaN(c)||(b=$('#nav-mini [data-n="'+a[c].uid+'"]'),null!=b&&(!0===a[c].valid?b.addClass("done"):b.remClass("done")));this.nav($('#nav-mini [data-n="'+this.selected+'"]'))}; inputPhoneMini.prototype.check=function(a){return""==a.sexe||"."==a.studies||"."==a.age||""==a.loc||""==a.reltype||"8"==a.reltype&&2>a.reltypeSpecial.length?!1:!0};inputPhoneMini.prototype.attach=function(a){console.log("MINI FICHE: ATTACH");lsi.createDataset("mini-fiches");this.storageToFields();this.handler=a;var 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 fc6a8fa..06cbcf5 100644 --- a/js/includes/input-phone-mini.js +++ b/js/includes/input-phone-mini.js @@ -63,9 +63,6 @@ inputPhoneMini.prototype.fieldsToStorage = function(){ var obj = { uid: parseInt(deflated.uid), - firstname: existingData.firstname, - lastname: existingData.lastname, - username: existingData.username, sexe: deflated.sexe, // [0] Homme, [1] Femme age: deflated.age, studies: deflated.studies, @@ -133,9 +130,7 @@ inputPhoneMini.prototype.add = function(objectData){ // {2} Création physique // this.container.innerHTML += miniFicheBuilder.build({ - firstname: associatedContact.firstname, - lastname: associatedContact.lastname, - username: (associatedContact.username.length==0) ? '' : '('+associatedContact.username+')', + name: readableName(associatedContact.username, associatedContact.firstname, associatedContact.lastname), countcall: associatedContact.countcall, countsms: associatedContact.countsms, uid: objectData.uid, @@ -190,6 +185,12 @@ inputPhoneMini.prototype.storageToFields = function(){ // {1} Pour chaque contact du 'localStorage' // var miniData = lsi.get('mini-fiches', this.selected); + // Si on a rien trouvé, on ne fait rien + if( miniData == null ){ + this.updateNavBar(); + return false; + } + // On réinitialise le HTML this.container.innerHTML = ''; @@ -237,17 +238,25 @@ inputPhoneMini.prototype.sync = function(){ lsi.del('mini-fiches', key); continue; } - console.warn(key, ignoredContacts, ignoredContacts.indexOf(parseInt(key)), lsi.export('mini-fiches')); + /* (5) Si le contact n'a aucun nominatif, on met inconnu par défaut, mais on ne l'affiche pas */ + var noName = contactData[key].username.length+contactData[key].firstname.length+contactData[key].lastname.length == 0; + + // On rajoute un '.' après pour dire qu'on affichera pas + var uid = noName ? key.toString()+'-' : key; /* (5) On récupère les informations de la MINI (si elle existe) */ - var miniData = lsi.get('mini-fiches', key); + var miniData = lsi.get('mini-fiches', uid); /* (6) Si la MINI fiche n'exise pas, on la crée avec les valeurs par défaut */ if( miniData == null ){ miniData = this.defaultData; miniData.valid = false; + + // Si aucun nom, on met 'inconnu' par défaut pour la fiche de relation + if( isNaN(uid) ) + miniData.reltype = '9'; } /* (7) On met à jour la MINI fiche */ @@ -255,7 +264,7 @@ inputPhoneMini.prototype.sync = function(){ /* (8) On enregistre les modification */ - lsi.set('mini-fiches', key, miniData); + lsi.set('mini-fiches', uid, miniData); } @@ -297,7 +306,6 @@ inputPhoneMini.prototype.nav = function(element){ =========================================================*/ inputPhoneMini.prototype.updateNavBar = function(){ var miniData = lsi.export('mini-fiches'); - var len = Object.keys(miniData).length; /* (1) On vide et remplit la barre de nav, si elle n'est pas à jour */ @@ -305,12 +313,17 @@ inputPhoneMini.prototype.updateNavBar = function(){ var i = 0; for( var key in miniData ) - this.nav_container.innerHTML += ''+(++i)+''; + if( !isNaN(key) ) // On affiche que les clés numériques + this.nav_container.innerHTML += ''+(++i)+''; /* (2) On montre les MINI fiches qui sont correctes dans la navbar */ for( var key in miniData ){ + // Si la clé n'est pas numérique, on ne gère pas + if( isNaN(key) ) + continue; + var currentElement = $('#nav-mini [data-n="'+miniData[key].uid+'"]'); if( currentElement == null ) diff --git a/src/upload/call_log/xdrm.xml b/src/upload/call_log/xdrm.xml index 8757312..d18fde5 100755 --- a/src/upload/call_log/xdrm.xml +++ b/src/upload/call_log/xdrm.xml @@ -1,1001 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/js/input-min.js b/view/js/input-min.js index d7a31e4..155d155 100644 --- a/view/js/input-min.js +++ b/view/js/input-min.js @@ -1,15 +1,15 @@ var subjectManager,contactManager,miniManager,ficheManager,matriceManager; -function dynamicUpdate(a){var b=a instanceof Element,f=b&&"SPAN"==a.tagName&&"switch-left"==a.className,e=b&&"SPAN"==a.tagName&&"switch-both"==a.className,g=b&&"INPUT"==a.tagName&&"submit"==a.type,c=b&&"SPAN"==a.tagName&&("nav-mini"==a.parentNode.id||"nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"nav-contact"==a.parentNode.id;if(!(e||f||g||c||b)&&!0!==a)return!1;if(e)console.log("> switch firstname <-> lastname"),f=a.parentNode,a=f.children[8],f=f.children[10],e=a.value,a.value=f.value,f.value= -e;else if(f){console.log("> switch firstname+lastname -> username");f=a.parentNode;e=f.children[6];a=f.children[8];f=f.children[10];if(0 dynamic update"),miniManager.fieldsToStorage(),ficheManager.fieldsToStorage(),contactManager.fieldsToStorage(),matriceManager.fieldsToStorage(),ficheManager.sync(),miniManager.sync(),miniManager.storageToFields(),ficheManager.storageToFields(), -matriceManager.storageToFields(),(g||b)&&contactManager.storageToFields()} +function dynamicUpdate(b){var a=b instanceof Element,e=a&&"SPAN"==b.tagName&&"switch-left"==b.className,f=a&&"SPAN"==b.tagName&&"switch-both"==b.className,g=a&&"INPUT"==b.tagName&&"submit"==b.type,c=a&&"SPAN"==b.tagName&&("nav-mini"==b.parentNode.id||"nav-fiche"==b.parentNode.id),a=a&&"SPAN"==b.tagName&&"nav-contact"==b.parentNode.id;if(!(f||e||g||c||a)&&!0!==b)return!1;if(f)console.log("> switch firstname <-> lastname"),e=b.parentNode,b=e.children[8],e=e.children[10],f=b.value,b.value=e.value,e.value= +f;else if(e){console.log("> switch firstname+lastname -> username");e=b.parentNode;f=e.children[6];b=e.children[8];e=e.children[10];if(0 dynamic update"),miniManager.fieldsToStorage(),ficheManager.fieldsToStorage(),contactManager.fieldsToStorage(),matriceManager.fieldsToStorage(),ficheManager.sync(),miniManager.sync(),miniManager.storageToFields(),ficheManager.storageToFields(), +matriceManager.storageToFields(),(g||a)&&contactManager.storageToFields()}function readableName(b,a,e){var f=a.length,g=e.length;return 0sujet avant d'exporter son journal d'appel"):Notification.error("Erreur", -b.ModuleError);else{for(var a=Notification.info("Info","Chargement du journal d'appel"),e=0,g=[],c=0;cc;c++)g.push(b.calls[c].number);for(c=0;cc;c++)h.push(b.sms[c].number); -for(c=0;c GATHERING ALL DATA"); -subjectManager.fieldsToStorage();contactManager.fieldsToStorage();miniManager.fieldsToStorage();ficheManager.fieldsToStorage();if(!subjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("mini-fiches");for(var b in a)if(!a[b].valid)return Notification.warning("Attention","La fiche rapide "+(parseInt(b)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;a=lsi["export"]("fiches");for(b in a)if(!a[b].valid)return Notification.warning("Attention", -"La fiche compl\u00e8te "+(parseInt(b)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;b={path:"input/phone",subject:lsi["export"]("subject")[0],contacts:lsi["export"]("contacts"),mini:lsi["export"]("mini-fiches"),fiches:lsi["export"]("fiches"),matrice:lsi["export"]("matrice")[0]};api.send(b,function(a){if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;console.log(a)},!1)},!1)})})})})}); +$('input#call_log-import[type="file"]').addEventListener("click",function(b){b.target.value=null},!1);$('input#call_log-import[type="file"]').addEventListener("change",function(b){b={path:"upload/call_log",phone_number:$("#subject_phone_number").value,file:b.target.files[0]};api.send(b,function(a){console.log(a);var b=null;if(0!=a.ModuleError)9==a.ModuleError?Notification.error("Erreur","Il est n\u00e9cessaire de saisir les informations du sujet avant d'exporter son journal d'appel"):Notification.error("Erreur", +a.ModuleError);else{for(var b=Notification.info("Info","Chargement du journal d'appel"),f=0,g=[],c=0;cc;c++)g.push(a.calls[c].number);for(c=0;cc;c++)h.push(a.sms[c].number); +for(c=0;c GATHERING ALL DATA");subjectManager.fieldsToStorage();contactManager.fieldsToStorage();miniManager.fieldsToStorage();ficheManager.fieldsToStorage();if(!subjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;b=lsi["export"]("mini-fiches");for(var a in b)if(!b[a].valid)return Notification.warning("Attention","La fiche rapide "+(parseInt(a)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;b=lsi["export"]("fiches"); +for(a in b)if(!b[a].valid)return Notification.warning("Attention","La fiche compl\u00e8te "+(parseInt(a)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;a={path:"input/phone",subject:lsi["export"]("subject")[0],contacts:lsi["export"]("contacts"),mini:lsi["export"]("mini-fiches"),fiches:lsi["export"]("fiches"),matrice:lsi["export"]("matrice")[0]};api.send(a,function(a){if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;console.log(a)},!1)},!1)})})})})}); diff --git a/view/js/input.js b/view/js/input.js index 8c08d00..d79edef 100644 --- a/view/js/input.js +++ b/view/js/input.js @@ -113,6 +113,39 @@ function dynamicUpdate(target){ +/* AFFICHE UN NOM EXPLICITE A PARTIR DE @u username, @f firstname, et @l lastname +* +*/ +function readableName(u, f, l){ + /* (1) On calcule les tailles des chaines */ + var ul = u.length, + fl = f.length, + ll = l.length; + + /* (2) Si @username n'est pas vide */ + if( ul > 0 ){ + + /* (3) Si @username+(@firstname et/ou @lastname) -> username (firstname lastname) */ + if( fl+ll > 0 ) + return u+' ('+(f+' '+l).trim()+')'; + + /* (4) Si @username uniquement -> username */ + else + return u; + + /* (5) Si pas @username */ + }else{ + + /* (6) Si @firstname et/ou @lastname -> firstname lastname*/ + if( fl+ll > 0 ) + return (f+' '+l).trim(); + + /* (7) Si rien -> Inconnu */ + else + return 'Inconnu'; + + } +} @@ -128,6 +161,7 @@ function dynamicUpdate(target){ /* [2] Inclusion des scripts externes et lancement =========================================================*/ +// TODO: Mettre les versions minifiées include('/js/includes/input-phone-subject.js', function(){ include('/js/includes/input-phone-contact.js', function(){ include('/js/includes/input-phone-mini.js', function(){ @@ -270,6 +304,7 @@ include('/js/includes/input-phone-matrice.js', function(){ uid++; } + console.warn(1); @@ -289,14 +324,17 @@ include('/js/includes/input-phone-matrice.js', function(){ continue; } - var splittedName = response.directory[most_sms[i]].name.split(' '); + + var splittedName = ['']; + if( response.directory[most_sms[i]].name != null ) + splittedName = response.directory[most_sms[i]].name.split(' '); lsi.set('contacts', uid, { uid: uid, number: most_sms[i], - username: splittedName.length == 1 ? splittedName[0] : '', // Si un seul mot -> pseudo - firstname: splittedName.length > 1 ? splittedName[0] : '', // Si plusieurs mots -> le 1er est le prénom - lastname: splittedName.length > 1 ? splittedName.splice(1).join(' ') : '', // et les autres sont le nom + username: splittedName.length > 0 ? splittedName[0] : '', // Si un seul mot -> pseudo + firstname: splittedName.length > 0 ? splittedName[0] : '', // Si plusieurs mots -> le 1er est le prénom + lastname: splittedName.length > 1 ? splittedName.splice(1).join(' ') : '', // et les autres sont le nom countsms: response.directory[most_sms[i]].sms, // Nombre de sms countcall: response.directory[most_sms[i]].calls, // Nombre d'appels call: -1, // classement dans le top 10 des APPELS @@ -339,6 +377,7 @@ include('/js/includes/input-phone-matrice.js', function(){ uid++; } + console.warn(3); /* (8) On met à jour l'affichage */ contactManager.storageToFields();