From d1aed901466967219f91403fca942f835633488b Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 10 Oct 2016 10:58:44 +0200 Subject: [PATCH] Gestion du log propre --- js/includes/input-phone-contact.js | 13 +- js/includes/input-phone-fiche.js | 19 +- js/includes/input-phone-matrice.js | 13 +- js/includes/input-phone-mini.js | 18 +- js/includes/input-phone-subject.js | 14 +- js/includes/min/input-phone-contact.js | 8 +- js/includes/min/input-phone-fiche.js | 21 + js/includes/min/input-phone-matrice.js | 6 + js/includes/min/input-phone-mini.js | 13 + js/includes/min/input-phone-subject.js | 3 + view/js/input.js | 1885 ++++++++++++------------ view/js/min/input.js | 27 +- 12 files changed, 1064 insertions(+), 976 deletions(-) create mode 100644 js/includes/min/input-phone-fiche.js create mode 100644 js/includes/min/input-phone-matrice.js create mode 100644 js/includes/min/input-phone-mini.js create mode 100644 js/includes/min/input-phone-subject.js diff --git a/js/includes/input-phone-contact.js b/js/includes/input-phone-contact.js index 5d1ed3e..214a0d2 100644 --- a/js/includes/input-phone-contact.js +++ b/js/includes/input-phone-contact.js @@ -90,7 +90,7 @@ inputPhoneContact.prototype.check = function(deflated){ /* [3] Gestion de l'enregistrement des formulaires de contact =========================================================*/ inputPhoneContact.prototype.fieldsToStorage = function(){ - console.log('CONTACTS: FIELDS TO STORAGE'); + console.group('[phone.contact] fields to storage'); // {1} Pour chaque formulaire de contact présent // var visibleContacts = $$('[data-sublink="phone"] article.contact-panel .new-contact'); @@ -123,6 +123,7 @@ inputPhoneContact.prototype.fieldsToStorage = function(){ } + console.groupEnd('[phone.contact] fields to storage'); }; @@ -141,8 +142,6 @@ inputPhoneContact.prototype.fieldsToStorage = function(){ * */ inputPhoneContact.prototype.add = function(objectData){ - console.log('CONTACTS: ADD'); - // Si pas d'uid, on quitte if( objectData == null || objectData.uid == null || isNaN(objectData.uid) ) return false @@ -192,7 +191,7 @@ inputPhoneContact.prototype.add = function(objectData){ /* [5] Gestion de l'affichage depuis le 'localStorage' =========================================================*/ inputPhoneContact.prototype.storageToFields = function(){ - console.log('CONTACTS: STORAGE TO FIELDS'); + console.group('[phone.contact] storage to fields'); // {1} Pour chaque contact du 'localStorage' // var contactKeys = lsi.keys('p_contacts'); @@ -215,6 +214,8 @@ inputPhoneContact.prototype.storageToFields = function(){ /* (3) On met à jour la barre de navigation */ this.updateNavBar(); + + console.groupEnd('[phone.contact] storage to fields'); }; @@ -280,7 +281,7 @@ inputPhoneContact.prototype.updateNavBar = function(){ /* [8] Point d'amorçage de la gestion des contacts =========================================================*/ inputPhoneContact.prototype.attach = function(handler){ - console.log('CONTACTS: ATTACH'); + console.group('[phone.contact] attaching events'); /* (1) On initialise le jeu de données */ lsi.createDataset('p_contacts'); @@ -301,4 +302,6 @@ inputPhoneContact.prototype.attach = function(handler){ ptr.handler(e.target); }, false); + + console.groupEnd('[phone.contact] attaching events'); }; diff --git a/js/includes/input-phone-fiche.js b/js/includes/input-phone-fiche.js index 557638a..030b14b 100644 --- a/js/includes/input-phone-fiche.js +++ b/js/includes/input-phone-fiche.js @@ -39,7 +39,7 @@ inputPhoneFiche.prototype = { /* [2] Gestion de l'enregistrement des formulaires fiche fiches relation =========================================================*/ inputPhoneFiche.prototype.fieldsToStorage = function(){ - console.log('FICHE: FIELDS TO STORAGE'); + console.group('[phone.fiche] fields to storage'); // {1} Pour chaque formulaire de contact présent // var existingFiches = $$('[data-sublink="phone"] article.relation-panel .fiche-relation'); @@ -109,6 +109,9 @@ inputPhoneFiche.prototype.fieldsToStorage = function(){ /* (7) On enregistre les données dans le 'localStorage' */ lsi.set('p_fiches', obj.uid, obj); } + + + console.groupEnd('[phone.fiche] fields to storage'); }; @@ -127,7 +130,7 @@ inputPhoneFiche.prototype.fieldsToStorage = function(){ * */ inputPhoneFiche.prototype.add = function(objectData){ - console.log('FICHE: ADD'); + // console.log('FICHE: ADD'); // Si pas d'UID ou d'UID de contact, on retourne une erreur if( objectData.uid == null || isNaN(objectData.uid) || objectData.contact == null || isNaN(objectData.contact) ) @@ -317,7 +320,7 @@ inputPhoneFiche.prototype.add = function(objectData){ /* [4] Gestion de l'affichage depuis le 'localStorage' =========================================================*/ inputPhoneFiche.prototype.storageToFields = function(){ - console.log('FICHE: STORAGE TO FIELDS'); + console.group('[phone.fiche] storage to fields'); // {1} Pour chaque contact du 'localStorage' // var ficheData = lsi.export('p_fiches'); @@ -333,6 +336,8 @@ inputPhoneFiche.prototype.storageToFields = function(){ // {4} On met à jour la navigation // this.updateNavBar(); + + console.groupEnd('[phone.fiche] storage to fields'); }; @@ -348,7 +353,7 @@ inputPhoneFiche.prototype.storageToFields = function(){ /* [5] Synchronisation des CONTACT vers les MINI fiches =========================================================*/ inputPhoneFiche.prototype.sync = function(){ - console.log('FICHE: SYNC'); + console.group('[phone.fiche] Synchronisation'); /* (1) Initialisation ---------------------------------------------------------*/ @@ -448,6 +453,8 @@ inputPhoneFiche.prototype.sync = function(){ } + + console.groupEnd('[phone.fiche] Synchronisation'); }; @@ -623,7 +630,7 @@ inputPhoneFiche.prototype.check = function(ficheData){ /* [9] Point d'amorçage de la gestion des contacts =========================================================*/ inputPhoneFiche.prototype.attach = function(handler){ - console.log('FICHE: ATTACH'); + console.group('[phone.fiche] attaching events'); /* (1) On initialise le jeu de données */ lsi.createDataset('p_fiches'); @@ -644,4 +651,6 @@ inputPhoneFiche.prototype.attach = function(handler){ ptr.handler(e.target); }, false); + + console.groupEnd('[phone.fiche] attaching events'); }; diff --git a/js/includes/input-phone-matrice.js b/js/includes/input-phone-matrice.js index bf72826..c8d774b 100644 --- a/js/includes/input-phone-matrice.js +++ b/js/includes/input-phone-matrice.js @@ -14,7 +14,7 @@ inputPhoneMatrice.prototype = { /* [2] Gestion de l'enregistrement de la matrice =========================================================*/ inputPhoneMatrice.prototype.fieldsToStorage = function(){ - console.log('MATRICE: FIELDS TO STORAGE'); + console.group('[phone.matrice] fields to storage'); // {1} On initialise notre deflater pour récupérer les valeurs // @@ -59,6 +59,9 @@ inputPhoneMatrice.prototype.fieldsToStorage = function(){ // idB: [idX, idY], # B connait X et Y (et réciproquement) // ... // + + + console.groupEnd('[phone.matrice] fields to storage'); }; @@ -74,7 +77,7 @@ inputPhoneMatrice.prototype.fieldsToStorage = function(){ /* [4] Gestion de l'affichage depuis le 'localStorage' =========================================================*/ inputPhoneMatrice.prototype.storageToFields = function(){ - console.log('MATRICE: STORAGE TO FIELDS'); + console.group('[phone.matrice] storage to fields'); /* (1) On récupère la liste des contacts à mettre dans la matrice */ // On récupère les fiches @@ -149,6 +152,7 @@ inputPhoneMatrice.prototype.storageToFields = function(){ /* (3) On affiche la matrice */ this.container.innerHTML = matrice_html; + console.groupEnd('[phone.matrice] storage to fields'); }; @@ -156,7 +160,7 @@ inputPhoneMatrice.prototype.storageToFields = function(){ /* [9] Point d'amorçage de la gestion des contacts =========================================================*/ inputPhoneMatrice.prototype.attach = function(){ - console.log('MATRICE: ATTACH'); + console.group('[phone.matrice] attaching events'); /* (1) On initialise le jeu de données */ lsi.createDataset('p_matrice'); @@ -173,6 +177,9 @@ inputPhoneMatrice.prototype.attach = function(){ setTimeout(function(){ ptr.storageToFields(); }, 500); }, false); + + + console.groupEnd('[phone.matrice] attaching events'); }; diff --git a/js/includes/input-phone-mini.js b/js/includes/input-phone-mini.js index 7c6f784..0a942d3 100644 --- a/js/includes/input-phone-mini.js +++ b/js/includes/input-phone-mini.js @@ -30,7 +30,7 @@ inputPhoneMini.prototype = { /* [2] Gestion de l'enregistrement des formulaires mini fiches relation =========================================================*/ inputPhoneMini.prototype.fieldsToStorage = function(){ - console.log('MINI FICHE: FIELDS TO STORAGE'); + console.group('[phone.mini] fields to storage'); // {1} Pour chaque formulaire de MINI fiche à l'écran // var existingMiniFiches = $$('[data-sublink="phone"] article.mini-relation-panel .mini-fiche-relation'); @@ -91,6 +91,9 @@ inputPhoneMini.prototype.fieldsToStorage = function(){ lsi.set('p_mini-fiches', obj.uid, obj); } + + + console.groupEnd('[phone.mini] fields to storage'); }; @@ -109,7 +112,7 @@ inputPhoneMini.prototype.fieldsToStorage = function(){ * */ inputPhoneMini.prototype.add = function(objectData){ - console.log('MINI FICHE: ADD'); + // console.log('MINI FICHE: ADD'); // Si pas d'UID, on retourne une erreur if( objectData == null || objectData.uid == null ) @@ -220,7 +223,7 @@ inputPhoneMini.prototype.add = function(objectData){ /* [4] Gestion de l'affichage depuis le 'localStorage' =========================================================*/ inputPhoneMini.prototype.storageToFields = function(){ - console.log('MINI FICHE: STORAGE TO FIELDS'); + console.group('[phone.mini] storage to fields'); // {1} Pour chaque contact du 'localStorage' // var miniData = lsi.get('p_mini-fiches', this.selected); @@ -240,6 +243,8 @@ inputPhoneMini.prototype.storageToFields = function(){ // {3} On met à jour la navigation // this.updateNavBar(); + + console.groupEnd('[phone.mini] storage to fields'); }; @@ -255,7 +260,7 @@ inputPhoneMini.prototype.storageToFields = function(){ /* [5] Synchronisation des CONTACT vers les MINI fiches =========================================================*/ inputPhoneMini.prototype.sync = function(){ - console.log('MINI FICHE: SYNC'); + console.group('[phone.mini] synchronisation'); /* (1) On récupère les clés de tous les CONTACTS */ var contactData = lsi.export('p_contacts'); @@ -313,6 +318,7 @@ inputPhoneMini.prototype.sync = function(){ } + console.groupEnd('[phone.mini] synchronisation'); }; @@ -433,7 +439,7 @@ inputPhoneMini.prototype.check = function(miniData){ /* [9] Point d'amorçage de la gestion des contacts =========================================================*/ inputPhoneMini.prototype.attach = function(handler){ - console.log('MINI FICHE: ATTACH'); + console.group('[phone.mini] attaching events'); /* (1) On initialise le jeu de données */ lsi.createDataset('p_mini-fiches'); @@ -454,4 +460,6 @@ inputPhoneMini.prototype.attach = function(handler){ ptr.handler(e.target); }, false); + + console.groupEnd('[phone.mini] attaching events'); }; diff --git a/js/includes/input-phone-subject.js b/js/includes/input-phone-subject.js index 6331a99..dcbbb69 100644 --- a/js/includes/input-phone-subject.js +++ b/js/includes/input-phone-subject.js @@ -26,7 +26,7 @@ inputPhoneSubject.prototype.check = function(){ /* [3] Gestion de l'enregistrement des formulaires de contact =========================================================*/ inputPhoneSubject.prototype.fieldsToStorage = function(){ - console.log('SUBJECT: FIELDS TO STORAGE'); + console.group('[phone.subject] fields to storage'); // {1} Si le formulaire n'est pas valide, on ne l'enregistre pas // if( !this.check() ) return false; @@ -41,6 +41,8 @@ inputPhoneSubject.prototype.fieldsToStorage = function(){ // {3} On enregistre les données dans le 'localStorage' // lsi.set('p_subject', 0, obj); + + console.groupEnd('[phone.subject] fields to storage'); }; @@ -51,7 +53,7 @@ inputPhoneSubject.prototype.fieldsToStorage = function(){ /* [4] Gestion de l'affichage depuis le 'localStorage' =========================================================*/ inputPhoneSubject.prototype.storageToFields = function(){ - console.log('SUBJECT: STORAGE TO FIELDS'); + console.group('[phone.subject] storage to fields'); // {1} On récupère les informations du sujet // var subjectData = lsi.get('p_subject', 0); @@ -61,6 +63,9 @@ inputPhoneSubject.prototype.storageToFields = function(){ // {2} On restore les valeurs // this.tmp_id.value = subjectData.tmp_id; this.subject_id.value = subjectData.subject_id; + + + console.groupEnd('[phone.subject] storage to fields'); }; @@ -68,7 +73,7 @@ inputPhoneSubject.prototype.storageToFields = function(){ /* [5] Point d'amorçage de la gestion des contacts =========================================================*/ inputPhoneSubject.prototype.attach = function(handler){ - console.log('SUBJECT: ATTACH'); + console.group('[phone.subject] attaching events'); /* (1) On initialise le jeu de données */ lsi.createDataset('p_subject'); @@ -93,4 +98,7 @@ inputPhoneSubject.prototype.attach = function(handler){ /* (4) On charge le sujet depuis la mémoire ('localStorage') */ this.storageToFields(); + + + console.groupEnd('[phone.subject] attaching events'); }; diff --git a/js/includes/min/input-phone-contact.js b/js/includes/min/input-phone-contact.js index 32aedee..277b890 100644 --- a/js/includes/min/input-phone-contact.js +++ b/js/includes/min/input-phone-contact.js @@ -1,10 +1,10 @@ function inputPhoneContact(a,b){this.container=a;this.nav_container=b}inputPhoneContact.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null};inputPhoneContact.prototype.callRange=function(a){return 0<=a&&20>a};inputPhoneContact.prototype.smsRange=function(a){return 20<=a&&40>a}; inputPhoneContact.prototype.sameContact=function(a,b,c,d){var e=null,e=null;if("call"===d)e={min:0,max:19};else if("sms"===d)e={min:29,max:39};else if("mini"===d)e={min:40,max:Infinity};else return!1;d=e.min;for(var f=e.max;d"+b[c].name+"\n";this.container.innerHTML+=pContactBuilder.build(a);c=$('[data-sublink="phone"] article.contact-panel .new-contact input[data-name="uid"][value="'+a.uid+'"] ~ span select[data-name="existing"]>option[value="'+ +!1):!0};inputPhoneContact.prototype.fieldsToStorage=function(){console.group("[phone.contact] fields to storage");for(var a=$$('[data-sublink="phone"] article.contact-panel .new-contact'),b=0;b"+b[c].name+"\n";this.container.innerHTML+=pContactBuilder.build(a);c=$('[data-sublink="phone"] article.contact-panel .new-contact input[data-name="uid"][value="'+a.uid+'"] ~ span select[data-name="existing"]>option[value="'+ a.existing+'"]');null!=c&&c.setAttribute("selected","selected");a=$$('[data-sublink="phone"] article.contact-panel .new-contact');var d=this;for(c=0;c=a.length&&this.add({uid:a.length});this.updateNavBar()}; +inputPhoneContact.prototype.storageToFields=function(){console.group("[phone.contact] storage to fields");var a=lsi.keys("p_contacts");this.container.innerHTML="";for(var b=this.selected+10,c=this.selected;c=a.length&&this.add({uid:a.length});this.updateNavBar();console.groupEnd("[phone.contact] storage to fields")}; inputPhoneContact.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"p_nav-contact"!=a.parentNode.id)return!1;for(var b=$$('[data-sublink="phone"] #p_nav-contact > span.active'),c=0;c'+(1+b/10)+""}this.nav($('[data-sublink="phone"] #p_nav-contact [data-n="'+this.selected+'"]'))}; -inputPhoneContact.prototype.attach=function(a){console.log("CONTACTS: ATTACH");lsi.createDataset("p_contacts");this.storageToFields();this.handler=a;var b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1)}; +inputPhoneContact.prototype.attach=function(a){console.group("[phone.contact] attaching events");lsi.createDataset("p_contacts");this.storageToFields();this.handler=a;var b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1);console.groupEnd("[phone.contact] attaching events")}; diff --git a/js/includes/min/input-phone-fiche.js b/js/includes/min/input-phone-fiche.js new file mode 100644 index 0000000..250225f --- /dev/null +++ b/js/includes/min/input-phone-fiche.js @@ -0,0 +1,21 @@ +function inputPhoneFiche(a,c){this.container=a;this.nav_container=c}inputPhoneFiche.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{sexe:"2",age:".",job:".",famsit:"0",studies:"0",reltype:"0",reltypeSpecial:"",city:"",quartier:"",cp:"",loc:"0",duration:["",""],context:"0",contextSpecial:["","",""],freq:["4","9","14","19","24"],connect:"1 3 5 7 9 11".split(" "),connectSpecial:["",""],timestamp:0,valid:!1}}; +inputPhoneFiche.prototype.fieldsToStorage=function(){console.group("[phone.fiche] fields to storage");for(var a=$$('[data-sublink="phone"] article.relation-panel .fiche-relation'),c=0;c FICHE UPDATE"),b.timestamp=Date.now());lsi.set("p_fiches",b.uid,b)}}console.groupEnd("[phone.fiche] fields to storage")}; +inputPhoneFiche.prototype.add=function(a){if(null==a.uid||isNaN(a.uid)||null==a.contact||isNaN(a.contact))return!1;a.city=null!=a.city?a.city:this.defaultData.city;a.quartier=null!=a.quartier?a.quartier:this.defaultData.quartier;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 c=lsi.get("p_contacts",a.contact);if(!1===c)return!1;var b="";isNaN(c.existing)||(b=lsi.get("p_friends",c.existing),c.username=b.name,a.age=b.age,a.sexe=b.sexe,a.loc=b.dist,isNaN(b.reltype)?(a.reltype=10,a.reltypeSpecial=b.reltype):(a.reltype=b.reltype,a.reltypeSpecial=""),null!=b.studies2?(a.studies=b.studies2,a.job=b.job,a.famsit=b.famsit,a.city=b.city,a.cp=b.cp,a.quartier=b.quartier,a.duration[0]=b.duration[0],a.duration[1]=b.duration[1],a.context=b.context,a.contextSpecial= +b.contextExtra,a.connect=b.connect,a.connectSpecial=b.connectExtra,a.freq=b.freq,b="Contact import\u00e9: non modifiable!"):b="Contact import\u00e9 (incomplet): modifiable partiellement!");this.container.innerHTML+=pFicheBuilder.build({importedfiche:b,name:c.username,countcall:c.countcall,countsms:c.countsms,uid:a.uid,contact:a.contact,city:a.city,quartier:a.quartier,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]});c=$('[data-sublink="phone"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="job"]>option[value="'+a.job+'"]');null!=c&&c.setAttribute("selected","selected");c=$('[data-sublink="phone"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=c&&c.setAttribute("selected", +"selected");c=$('[data-sublink="phone"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!=c&&c.setAttribute("selected","selected");b=$$('[data-sublink="phone"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]');for(c=0;cinput[type="radio"][data-name="famsit"]');for(c=0;cinput[type="radio"][data-name="reltype"]');for(c=0;cinput[type="radio"][data-name="loc"]');for(c=0;cinput[type="radio"][data-name="context"]');for(c=0;cinput[type="radio"][data-name="freq"]');for(c=0;cinput[type="radio"][data-name="connect"]');for(c=0;clsi.keys("p_contacts").length?lsi.keys("p_contacts").length:40,e;for(e in a){for(ficheUid=0;-1=d)break}var a=lsi["export"]("p_fiches"),f;for(f in a)if(d=lsi.get("p_contacts", +a[f].contact)){c=null;e=20>parseInt(a[f].uid);for(var g in a)if(!(e&&20>g||!e&&20<=g)&&(b=lsi.get("p_contacts",a[g].contact),g!=f&&b)){var h=0a[f].timestamp||(d=a[f],d.uid=c.uid,lsi.set("p_fiches",c.uid,d))}console.groupEnd("[phone.fiche] Synchronisation")}; +inputPhoneFiche.prototype.nav=function(a){if(!(a instanceof Element&&a.getData("n"))||isNaN(a.getData("n"))||"p_nav-fiche"!=a.parentNode.id)return!1;for(var c=$$('[data-sublink="phone"] #p_nav-fiche > span.active'),b=0;bAPPELS");20>d&&b'+(d%20+1)+"  ":(20==d&&(this.nav_container.innerHTML+='
   SMS   '),this.nav_container.innerHTML+=''+(d%20+1)+"")}for(var e in a)c=$('[data-sublink="phone"] #p_nav-fiche [data-n="'+a[e].uid+'"]'),null!=c&&(!0===a[e].valid?c.addClass("done"):c.remClass("done"));this.nav($('[data-sublink="phone"] #p_nav-fiche [data-n="'+this.selected+'"]'))}; +inputPhoneFiche.prototype.check=function(a){if(2>a.city.length||isNaN(parseInt(a.duration[0]))&&0a.reltypeSpecial.length|| +"11"==a.context&&2>a.contextSpecial[0].length||"12"==a.context&&2>a.contextSpecial[1].length||"13"==a.context&&2>a.contextSpecial[2].length?!1:!0};inputPhoneFiche.prototype.attach=function(a){console.group("[phone.fiche] attaching events");lsi.createDataset("p_fiches");this.storageToFields();this.handler=a;var c=this;this.nav_container.addEventListener("click",function(a){c.nav(a.target);c.handler(a.target)},!1);console.groupEnd("[phone.fiche] attaching events")}; diff --git a/js/includes/min/input-phone-matrice.js b/js/includes/min/input-phone-matrice.js new file mode 100644 index 0000000..006fcfb --- /dev/null +++ b/js/includes/min/input-phone-matrice.js @@ -0,0 +1,6 @@ +var inputPhoneMatrice=function(a){this.container=a};inputPhoneMatrice.prototype={container:this.container}; +inputPhoneMatrice.prototype.fieldsToStorage=function(){console.group("[phone.matrice] fields to storage");var a=(new FormDeflater(this.container,["input"],["data-name"])).deflate();crc32(JSON.stringify(a));var c={},b;for(b in a)if(a[b]instanceof Array)for(var e in a[b])null==c[b]&&(c[b]=[]),c[b].push(parseInt(a[b][e]));else null!==a[b]&&(null==c[b]&&(c[b]=[]),c[b].push(parseInt(a[b])));lsi.set("p_matrice",0,c);console.groupEnd("[phone.matrice] fields to storage")}; +inputPhoneMatrice.prototype.storageToFields=function(){console.group("[phone.matrice] storage to fields");var a=lsi["export"]("p_fiches"),c=lsi.get("p_matrice",0),b=lsi["export"]("p_contacts"),e=[],d;for(d in a)-1==e.indexOf(a[d].contact)&&e.push(a[d].contact);a="";for(d=0;d";0',a+=g.username,a+=""):a+="";for(var f=0;f",a+='', +a+=h.username,a+=""):f",a+=""):a+=""}a+=""}this.container.innerHTML=a+"
";console.groupEnd("[phone.matrice] storage to fields")}; +inputPhoneMatrice.prototype.attach=function(){console.group("[phone.matrice] attaching events");lsi.createDataset("p_matrice");this.storageToFields();var a=this;this.container.addEventListener("click",function(c){a.fieldsToStorage();setTimeout(function(){a.storageToFields()},500)},!1);console.groupEnd("[phone.matrice] attaching events")}; +inputPhoneMatrice.prototype.parseGrid=function(){var a=$$(".matrice-panel input[data-name][value]"),c;for(c in a)if(a[c]instanceof Element){var b=a[c].getData("name"),e=a[c].value;this.sGrid[b]instanceof Array||(this.sGrid[b]=[]);this.sGrid[b][e]=a[c]}}; diff --git a/js/includes/min/input-phone-mini.js b/js/includes/min/input-phone-mini.js new file mode 100644 index 0000000..cc00d00 --- /dev/null +++ b/js/includes/min/input-phone-mini.js @@ -0,0 +1,13 @@ +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:{contact:null,sexe:"2",age:".",studies:"0",loc:".",reltype:"9",reltypeSpecial:"",unknown:!1,timestamp:0,valid:!1}}; +inputPhoneMini.prototype.fieldsToStorage=function(){console.group("[phone.mini] fields to storage");for(var a=$$('[data-sublink="phone"] 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,unknown:null!=c.unknown,hash:e};c.valid=this.check(c);0 FICHE UPDATE"),c.timestamp=Date.now());lsi.set("p_mini-fiches",c.uid,c)}}console.groupEnd("[phone.mini] fields to storage")}; +inputPhoneMini.prototype.add=function(a){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;a.unknown=null!=a.unknown?a.unknown:this.defaultData.unknown;var b=lsi.get("p_contacts", +a.uid);if(!1===b)return!1;if(!isNaN(b.existing)){var c=lsi.get("p_friends",b.existing);b.username=c.name;a.contact=b.uid;a.age=c.age;a.sexe=c.sexe;a.loc=c.dist;isNaN(c.reltype)?(a.reltype=10,a.reltypeSpecial=c.reltype):(a.reltype=c.reltype,a.reltypeSpecial="");null!=c.studies1&&(a.studies=c.studies1)}this.container.innerHTML+=pMiniFicheBuilder.build({name:b.username,countcall:b.countcall,countsms:b.countsms,uid:a.uid,reltypespecial:a.reltypeSpecial});b=$('[data-sublink="phone"] 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=$('[data-sublink="phone"] 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");c=$$('[data-sublink="phone"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]');for(b=0;binput[type="radio"][data-name="reltype"]');for(b=0;binput[type="radio"][data-name="loc"]');for(b=0;binput[type="checkbox"][data-name="unknown"]');null!=b&&a.unknown&&b.setAttribute("checked","checked")}; +inputPhoneMini.prototype.storageToFields=function(){console.group("[phone.mini] storage to fields");var a=lsi.get("p_mini-fiches",this.selected);if(null==a)return this.updateNavBar(),!1;this.container.innerHTML="";this.add(a);this.updateNavBar();console.groupEnd("[phone.mini] storage to fields")}; +inputPhoneMini.prototype.sync=function(){console.group("[phone.mini] synchronisation");var a=lsi["export"]("p_contacts"),b;ficheIndexes=lsi.keys("p_fiches");for(b in ficheIndexes)delete a[ficheIndexes[b]];for(var c in a){var e=0==a[c].username.length?c.toString()+"-":c;b=lsi.get("p_mini-fiches",e);null==b&&(b=this.defaultData,b.contact=a[c].uid,b.valid=!1);b.uid=parseInt(c);lsi.set("p_mini-fiches",e,b)}b=lsi["export"]("p_mini-fiches");if(null==b[this.selected])for(c in b)if(!isNaN(c)){this.selected= +parseInt(c);break}console.groupEnd("[phone.mini] synchronisation")};inputPhoneMini.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"p_nav-mini"!=a.parentNode.id)return!1;for(var b=$$('[data-sublink="phone"] #p_nav-mini > span.active'),c=0;c'+ ++b+"");for(c in a)isNaN(c)||(b=$('[data-sublink="phone"] #p_nav-mini span[data-n="'+a[c].uid+'"]'),null!=b&&(!0===a[c].valid?b.addClass("done"):b.remClass("done")));this.nav($('[data-sublink="phone"] #p_nav-mini span[data-n="'+this.selected+'"]'))}; +inputPhoneMini.prototype.check=function(a){return a.unknown?!0:""==a.sexe||"."==a.studies||"."==a.age||""==a.loc||""==a.reltype||"10"==a.reltype&&2>a.reltypeSpecial.length?!1:!0};inputPhoneMini.prototype.attach=function(a){console.group("[phone.mini] attaching events");lsi.createDataset("p_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);console.groupEnd("[phone.mini] attaching events")}; diff --git a/js/includes/min/input-phone-subject.js b/js/includes/min/input-phone-subject.js new file mode 100644 index 0000000..b3dc4a1 --- /dev/null +++ b/js/includes/min/input-phone-subject.js @@ -0,0 +1,3 @@ +function inputPhoneSubject(a,b,c){this.tmp_id=a;this.subject_id=b;this.store_button=c}inputPhoneSubject.prototype={store_button:this.store_button,tmp_id:this.tmp_id,subject_id:this.subject_id,handler:null};inputPhoneSubject.prototype.check=function(){return 0"); + + htmlContent.push("
SUJET
"); + + htmlContent.push("
"); + + htmlContent.push("
"+response.results[id].name+"
"); + + htmlContent.push("
"+response.results[id].creation+"
"); + + htmlContent.push("
"); + htmlContent.push("
"); + + htmlContent.push("
"); + htmlContent.push("
"); + + + htmlContent.push( ""); + } + + sList.innerHTML = htmlContent.join(''); + + }); + +}; + + +/* (3) Attachement des évènements +---------------------------------------------------------*/ +sSubmit.addEventListener('click', tmpSubjectSearchListener, false); + +sField.addEventListener('keypress', function(e){ + if( e.keyCode === 13 ) + tmpSubjectSearchListener(e); +}, false); + + + + + + + +/*=========================================================*/ +/*========== Gestion du formulaire téléphonique ===========*/ +/*=========================================================*/ +var phoneRoutineExecuted = false; + +var phoneRoutine = function(){ + if( phoneRoutineExecuted ) + return; + + phoneRoutineExecuted = true; + + // console.log( phoneRoutineExecuted, typeof inputPhoneSubject ); + // console.log( phoneRoutineExecuted, typeof inputPhoneContact ); + // console.log( phoneRoutineExecuted, typeof inputPhoneMini ); + // console.log( phoneRoutineExecuted, typeof inputPhoneFiche ); + // console.log( phoneRoutineExecuted, typeof inputPhoneMatrice ); + // console.log( phoneRoutineExecuted, typeof inputPhoneMatrice ); + + console.group('[phone] Initialization'); + + /* (1) Gestion du formulaire du sujet ---------------------------------------------------------*/ - sField = $('#search-field'); - sSubmit = $('#search-subject'); - sList = $('section[data-sublink="survey"] ul[data-list]'); + /* (1) On crée une instance du manager du sujet */ + pSubjectManager = new inputPhoneSubject( + $('[data-sublink="phone"] article.subject-panel [data-name="tmp_id"]'), + $('[data-sublink="phone"] article.subject-panel [data-name="subject_id"]'), + $('[data-sublink="phone"] article.subject-panel [data-name="submit"]') + ); + + /* (2) On le démarre */ + pSubjectManager.attach(pDynamicUpdate); - /* (2) Routine de recherche + /* (2) Gestion des formulaires de contact ---------------------------------------------------------*/ - var tmpSubjectSearchListener = function(e){ + /* (1) On crée une instance du gestionnaire des CONTACTS */ + pContactManager = new inputPhoneContact( + $('[data-sublink="phone"] article.contact-panel'), + $('[data-sublink="phone"] #p_nav-contact') + ); - /* (1) On construit la requête */ - var request = { - path: 'subject/search', - name: sField.value + /* (2) On le démarre */ + pContactManager.attach(pDynamicUpdate); + + + /* (3) Gestion des mini fiches relation + ---------------------------------------------------------*/ + /* (1) On crée une instance du gestionnaire des mini fiches relation */ + pMiniManager = new inputPhoneMini( + $('[data-sublink="phone"] article.mini-relation-panel'), + $('[data-sublink="phone"] #p_nav-mini') + ); + + /* (2) On le démarre */ + pMiniManager.attach(pDynamicUpdate); + + + /* (4) Gestion des fiches relation + ---------------------------------------------------------*/ + /* (1) On crée une instance du gestionnaire des fiches relation */ + pFicheManager = new inputPhoneFiche( + $('[data-sublink="phone"] article.relation-panel'), + $('[data-sublink="phone"] #p_nav-fiche') + ); + + /* (2) On le démarre */ + pFicheManager.attach(pDynamicUpdate); + + + /* (5) Gestion de la matrice de relations + ---------------------------------------------------------*/ + /* (1) On crée une instance du gestionnaire de la matrice */ + pMatriceManager = new inputPhoneMatrice( + $('[data-sublink="phone"] article.matrice-panel') + ); + + /* (2) On le démarre */ + pMatriceManager.attach(pDynamicUpdate); + + + /* (7) Gestion de l'effacement des données locales + ---------------------------------------------------------*/ + $('[data-sublink="phone"] #p_clear-all').addEventListener('click', function(e){ + /* (1) On vide tous les dataset de données */ + lsi.clear('p_subject'); + lsi.clear('p_contacts'); + lsi.clear('p_mini-fiches'); + lsi.clear('p_fiches'); + lsi.clear('p_matrice'); + lsi.clear('p_friends'); + + + /* (2) On met à jour l'affichage */ + pSubjectManager.storageToFields(); + pContactManager.storageToFields(); + pMiniManager.storageToFields(); + pFicheManager.storageToFields(); + pMatriceManager.storageToFields(); + + Notification.success('OK', 'Les données ont été supprimées'); + }, false); + + + /* (8) Gestion de l'export des données locales + ---------------------------------------------------------*/ + $('[data-sublink="phone"] #p_export-all').addEventListener('click', function(e){ + + Notification.info('INFORMATION', 'Lancement du téléchargement de la sauvegarde'); + + /* (1) On construit les données */ + var data = { + subject: lsi.export('p_subject')[0], + contacts: lsi.export('p_contacts'), + mini: lsi.export('p_mini-fiches'), + fiches: lsi.export('p_fiches'), + matrice: lsi.export('p_matrice')[0] }; - /* (2) On effectue la requête */ - api.send(request, function(response){ - // Si erreur + /* (2) On lance le téléchargement */ + var downloadTarget = $('[data-sublink="phone"] #p_download-target'); // On récupère le lien () caché qui fera le téléchargement + downloadTarget.download = 'local-phone-data.json'; // Nom du fichier qui sera téléchargé + downloadTarget.href = 'data:application/octet-stream,' + encodeURIComponent(JSON.stringify(data)); // Contenu + downloadTarget.click(); // On lance le téléchargement + + }, false); + + + /* (9) Gestion de l'import des données locales + ---------------------------------------------------------*/ + // Le bouton lance l' file + $('[data-sublink="phone"] #p_import-all').addEventListener('click', function(e){ + $('[data-sublink="phone"] #p_local-upload').click(); + }, false); + + + // On vide l'input de type 'file' quand on clique + $('[data-sublink="phone"] #p_local-upload').addEventListener('click', function(e){ + e.target.value = null; + }, false); + + + // Gestion de l'upload d'une sauvegarde de formulaire local + $('[data-sublink="phone"] #p_local-upload').addEventListener('change', function(e){ + /* (1) Rédaction de la requête d'upload */ + var request = { + path: 'upload/local_data', + file: $('[data-sublink="phone"] #p_local-upload').files[0] + }; + + /* (2) Upload et réponse */ + api.send(request, function(response){ + console.log(response); + + // Si erreur, on quitte if( response.ModuleError != 0 ){ - Notification.error('Erreur', 'La recherche a échoué.') + Notification.error('Erreur', response.ModuleError); return false; } + /* (3) On enregistre les données dans le 'localStorage' */ + lsi.set('p_subject', 0, response.local_data.subject); + lsi.import('p_contacts', response.local_data.contacts); + lsi.import('p_mini-fiches', response.local_data.mini); + lsi.import('p_fiches', response.local_data.fiches); + lsi.set('p_matrice', 0, response.local_data.matrice); - - console.log(response); - - /* (3) On remplit la liste des résultats */ - var htmlContent = []; - for( var id in response.results ){ - htmlContent.push("
  • "); - - htmlContent.push("
    SUJET
    "); - - htmlContent.push("
    "); - - htmlContent.push("
    "+response.results[id].name+"
    "); - - htmlContent.push("
    "+response.results[id].creation+"
    "); - - htmlContent.push("
    "); - htmlContent.push("
    "); - - htmlContent.push("
    "); - htmlContent.push("
    "); - - - htmlContent.push( "
  • "); - } - - sList.innerHTML = htmlContent.join(''); + /* (3) On met à jour l'affichage */ + pSubjectManager.storageToFields(); + pContactManager.storageToFields(); + pMatriceManager.storageToFields(); + pDynamicUpdate(true); }); - }; + }, false); - /* (3) Attachement des évènements + /* (10) Gestion de la validation et de l'envoi des données ---------------------------------------------------------*/ - sSubmit.addEventListener('click', tmpSubjectSearchListener, false); + $('[data-sublink="phone"] #p_submit-all').addEventListener('click', function(e){ + console.log('> GATHERING ALL DATA'); - sField.addEventListener('keypress', function(e){ - if( e.keyCode === 13 ) - tmpSubjectSearchListener(e); + /* (1) On met dans la mémoire tout les champs non enregistrés */ + pSubjectManager.fieldsToStorage(); + pContactManager.fieldsToStorage(); + pMiniManager.fieldsToStorage(); + pFicheManager.fieldsToStorage(); + + /* (2) Vérification de la validité de toutes les données */ + // {1} Vérification du sujet // + if( !pSubjectManager.check() ){ + Notification.warning('Attention', 'Vous devez saisir les informations du sujet'); + return false; + } + // {2} Vérification des mini-fiches // + var mini = lsi.export('p_mini-fiches'); + var i = 0; + for( var id in mini ){ if( !isNaN(id) ){ + + i++ + + if( !mini[id].valid ){ + Notification.warning('Attention', 'La fiche rapide '+i+' est incomplète et/ou incorrecte'); + return false; + } + + }} + // {3} Vérification des fiches // + var fiches = lsi.export('p_fiches'); + for( var id in fiches ) + if( !fiches[id].valid ){ + Notification.warning('Attention', 'La fiche complète '+(parseInt(id)+1)+' est incomplète et/ou incorrecte'); + return false; + } + + + + /* (3) On prépare la requête avec toutes les données */ + var request = { + path: 'input/phone', + + subject: lsi.export('p_subject')[0], + contacts: lsi.export('p_contacts'), + mini: lsi.export('p_mini-fiches'), + fiches: lsi.export('p_fiches'), + matrice: lsi.export('p_matrice')[0] + }; + + /* (4) On envoie la requête et traite la réponse */ + api.send(request, function(response){ + console.log(response); + + // Si erreur, on la notifie + if( response.ModuleError != 0 ){ + Notification.error('ERREUR', response.ModuleError); + return false; + } + + Notification.success('OK', "L'identifiant du sujet est "+response.subject_id+" ! Tout s'est bien déroulé.", 10000); + + console.log(response); + + }, false); + + + }, false); + + + console.groupEnd('[phone] Initialization'); + +}; + + +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(){ + include('/js/includes/input-phone-matrice.js', phoneRoutine); + }); + }); + }); +}); + + + + + +/*=========================================================*/ +/*=========== Gestion du formulaire facebook ==============*/ +/*=========================================================*/ +include('/js/includes/input-facebook-subject.js', function(){ + //TODO: Remettre version min +include('/js/includes/input-facebook-contact.js', function(){ + //TODO: Remettre version min +include('/js/includes/input-facebook-mini.js', function(){ + //TODO: Remettre version min +include('/js/includes/input-facebook-fiche.js', function(){ +include('/js/includes/input-facebook-matrice.js', function(){ + + + /* (1) Gestion du formulaire du sujet + ---------------------------------------------------------*/ + /* (1) On crée une instance du manager du sujet */ + fSubjectManager = new inputFacebookSubject( + $('[data-sublink="facebook"] article.subject-panel [data-name="subject_id"]'), + $('[data-sublink="facebook"] article.subject-panel [data-name="submit"]') + ); + + /* (2) On le démarre */ + fSubjectManager.attach(fDynamicUpdate); + + + /* (2) Gestion des formulaires de contact + ---------------------------------------------------------*/ + /* (1) On crée une instance du gestionnaire des CONTACTS */ + fContactManager = new inputFacebookContact( + $('[data-sublink="facebook"] article.contact-panel'), + $('[data-sublink="facebook"] #f_nav-contact') + ); + + /* (2) On le démarre */ + fContactManager.attach(fDynamicUpdate); + + + /* (3) Gestion des mini fiches relation + ---------------------------------------------------------*/ + /* (1) On crée une instance du gestionnaire des mini fiches relation */ + fMiniManager = new inputFacebookMini( + $('[data-sublink="facebook"] article.mini-relation-panel'), + $('[data-sublink="facebook"] #f_nav-mini') + ); + + /* (2) On le démarre */ + fMiniManager.attach(fDynamicUpdate); + + + /* (4) Gestion des fiches relation + ---------------------------------------------------------*/ + /* (1) On crée une instance du gestionnaire des fiches relation */ + fFicheManager = new inputFacebookFiche( + $('[data-sublink="facebook"] article.relation-panel'), + $('[data-sublink="facebook"] #f_nav-fiche') + ); + + /* (2) On le démarre */ + fFicheManager.attach(fDynamicUpdate); + + + /* (5) Gestion de la matrice de relations + ---------------------------------------------------------*/ + /* (1) On crée une instance du gestionnaire de la matrice */ + fMatriceManager = new inputFacebookMatrice( + $('[data-sublink="facebook"] article.matrice-panel') + ); + + /* (2) On le démarre */ + fMatriceManager.attach(fDynamicUpdate); + + + /* (7) Gestion de l'effacement des données locales + ---------------------------------------------------------*/ + $('[data-sublink="facebook"] #f_clear-all').addEventListener('click', function(e){ + /* (1) On vide tous les dataset de données */ + lsi.clear('f_subject'); + lsi.clear('f_contacts'); + lsi.clear('f_mini-fiches'); + lsi.clear('f_fiches'); + lsi.clear('f_matrice'); + lsi.clear('f_friends'); + + + /* (2) On met à jour l'affichage */ + fSubjectManager.storageToFields(); + fContactManager.storageToFields(); + fMiniManager.storageToFields(); + fFicheManager.storageToFields(); + fMatriceManager.storageToFields(); + + Notification.success('OK', 'Les données ont été supprimées'); }, false); - - - - - /*=========================================================*/ - /*========== Gestion du formulaire téléphonique ===========*/ - /*=========================================================*/ - var phoneRoutineExecuted = 0 - - var phoneRoutine = function(){ - phoneRoutineExecuted++; - - // console.log( phoneRoutineExecuted, typeof inputPhoneSubject ); - // console.log( phoneRoutineExecuted, typeof inputPhoneContact ); - // console.log( phoneRoutineExecuted, typeof inputPhoneMini ); - // console.log( phoneRoutineExecuted, typeof inputPhoneFiche ); - // console.log( phoneRoutineExecuted, typeof inputPhoneMatrice ); - // console.log( phoneRoutineExecuted, typeof inputPhoneMatrice ); - - - /* (1) Gestion du formulaire du sujet - ---------------------------------------------------------*/ - /* (1) On crée une instance du manager du sujet */ - pSubjectManager = new inputPhoneSubject( - $('[data-sublink="phone"] article.subject-panel [data-name="tmp_id"]'), - $('[data-sublink="phone"] article.subject-panel [data-name="subject_id"]'), - $('[data-sublink="phone"] article.subject-panel [data-name="submit"]') - ); - - /* (2) On le démarre */ - pSubjectManager.attach(pDynamicUpdate); - - - /* (2) Gestion des formulaires de contact - ---------------------------------------------------------*/ - /* (1) On crée une instance du gestionnaire des CONTACTS */ - pContactManager = new inputPhoneContact( - $('[data-sublink="phone"] article.contact-panel'), - $('[data-sublink="phone"] #p_nav-contact') - ); - - /* (2) On le démarre */ - pContactManager.attach(pDynamicUpdate); - - - /* (3) Gestion des mini fiches relation - ---------------------------------------------------------*/ - /* (1) On crée une instance du gestionnaire des mini fiches relation */ - pMiniManager = new inputPhoneMini( - $('[data-sublink="phone"] article.mini-relation-panel'), - $('[data-sublink="phone"] #p_nav-mini') - ); - - /* (2) On le démarre */ - pMiniManager.attach(pDynamicUpdate); - - - /* (4) Gestion des fiches relation - ---------------------------------------------------------*/ - /* (1) On crée une instance du gestionnaire des fiches relation */ - pFicheManager = new inputPhoneFiche( - $('[data-sublink="phone"] article.relation-panel'), - $('[data-sublink="phone"] #p_nav-fiche') - ); - - /* (2) On le démarre */ - pFicheManager.attach(pDynamicUpdate); - - - /* (5) Gestion de la matrice de relations - ---------------------------------------------------------*/ - /* (1) On crée une instance du gestionnaire de la matrice */ - pMatriceManager = new inputPhoneMatrice( - $('[data-sublink="phone"] article.matrice-panel') - ); - - /* (2) On le démarre */ - pMatriceManager.attach(pDynamicUpdate); - - - /* (7) Gestion de l'effacement des données locales - ---------------------------------------------------------*/ - $('[data-sublink="phone"] #p_clear-all').addEventListener('click', function(e){ - /* (1) On vide tous les dataset de données */ - lsi.clear('p_subject'); - lsi.clear('p_contacts'); - lsi.clear('p_mini-fiches'); - lsi.clear('p_fiches'); - lsi.clear('p_matrice'); - lsi.clear('p_friends'); - - - /* (2) On met à jour l'affichage */ - pSubjectManager.storageToFields(); - pContactManager.storageToFields(); - pMiniManager.storageToFields(); - pFicheManager.storageToFields(); - pMatriceManager.storageToFields(); - - Notification.success('OK', 'Les données ont été supprimées'); - }, false); - - - /* (8) Gestion de l'export des données locales - ---------------------------------------------------------*/ - $('[data-sublink="phone"] #p_export-all').addEventListener('click', function(e){ - - Notification.info('INFORMATION', 'Lancement du téléchargement de la sauvegarde'); - - /* (1) On construit les données */ - var data = { - subject: lsi.export('p_subject')[0], - contacts: lsi.export('p_contacts'), - mini: lsi.export('p_mini-fiches'), - fiches: lsi.export('p_fiches'), - matrice: lsi.export('p_matrice')[0] - }; - - - /* (2) On lance le téléchargement */ - var downloadTarget = $('[data-sublink="phone"] #p_download-target'); // On récupère le lien (
    ) caché qui fera le téléchargement - downloadTarget.download = 'local-phone-data.json'; // Nom du fichier qui sera téléchargé - downloadTarget.href = 'data:application/octet-stream,' + encodeURIComponent(JSON.stringify(data)); // Contenu - downloadTarget.click(); // On lance le téléchargement - - }, false); - - - /* (9) Gestion de l'import des données locales - ---------------------------------------------------------*/ - // Le bouton lance l' file - $('[data-sublink="phone"] #p_import-all').addEventListener('click', function(e){ - $('[data-sublink="phone"] #p_local-upload').click(); - }, false); - - - // On vide l'input de type 'file' quand on clique - $('[data-sublink="phone"] #p_local-upload').addEventListener('click', function(e){ - e.target.value = null; - }, false); - - - // Gestion de l'upload d'une sauvegarde de formulaire local - $('[data-sublink="phone"] #p_local-upload').addEventListener('change', function(e){ - /* (1) Rédaction de la requête d'upload */ - var request = { - path: 'upload/local_data', - file: $('[data-sublink="phone"] #p_local-upload').files[0] - }; - - /* (2) Upload et réponse */ - api.send(request, function(response){ - console.log(response); - - // Si erreur, on quitte - if( response.ModuleError != 0 ){ - Notification.error('Erreur', response.ModuleError); - return false; - } - - /* (3) On enregistre les données dans le 'localStorage' */ - lsi.set('p_subject', 0, response.local_data.subject); - lsi.import('p_contacts', response.local_data.contacts); - lsi.import('p_mini-fiches', response.local_data.mini); - lsi.import('p_fiches', response.local_data.fiches); - lsi.set('p_matrice', 0, response.local_data.matrice); - - /* (3) On met à jour l'affichage */ - pSubjectManager.storageToFields(); - pContactManager.storageToFields(); - pMatriceManager.storageToFields(); - pDynamicUpdate(true); - - }); - - }, false); - - - /* (10) Gestion de la validation et de l'envoi des données - ---------------------------------------------------------*/ - $('[data-sublink="phone"] #p_submit-all').addEventListener('click', function(e){ - console.log('> GATHERING ALL DATA'); - - /* (1) On met dans la mémoire tout les champs non enregistrés */ - pSubjectManager.fieldsToStorage(); - pContactManager.fieldsToStorage(); - pMiniManager.fieldsToStorage(); - pFicheManager.fieldsToStorage(); - - /* (2) Vérification de la validité de toutes les données */ - // {1} Vérification du sujet // - if( !pSubjectManager.check() ){ - Notification.warning('Attention', 'Vous devez saisir les informations du sujet'); - return false; - } - // {2} Vérification des mini-fiches // - var mini = lsi.export('p_mini-fiches'); - var i = 0; - for( var id in mini ){ if( !isNaN(id) ){ - - i++ - - if( !mini[id].valid ){ - Notification.warning('Attention', 'La fiche rapide '+i+' est incomplète et/ou incorrecte'); - return false; - } - - }} - // {3} Vérification des fiches // - var fiches = lsi.export('p_fiches'); - for( var id in fiches ) - if( !fiches[id].valid ){ - Notification.warning('Attention', 'La fiche complète '+(parseInt(id)+1)+' est incomplète et/ou incorrecte'); - return false; - } - - - - /* (3) On prépare la requête avec toutes les données */ - var request = { - path: 'input/phone', - - subject: lsi.export('p_subject')[0], - contacts: lsi.export('p_contacts'), - mini: lsi.export('p_mini-fiches'), - fiches: lsi.export('p_fiches'), - matrice: lsi.export('p_matrice')[0] - }; - - /* (4) On envoie la requête et traite la réponse */ - api.send(request, function(response){ - console.log(response); - - // Si erreur, on la notifie - if( response.ModuleError != 0 ){ - Notification.error('ERREUR', response.ModuleError); - return false; - } - - Notification.success('OK', "L'identifiant du sujet est "+response.subject_id+" ! Tout s'est bien déroulé.", 10000); - - console.log(response); - - }, false); - - - }, false); - - - }; - - - 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(){ - include('/js/includes/input-phone-matrice.js', phoneRoutine); - }); - }); - }); - }); - - - - - - /*=========================================================*/ - /*=========== Gestion du formulaire facebook ==============*/ - /*=========================================================*/ - include('/js/includes/input-facebook-subject.js', function(){ - //TODO: Remettre version min - include('/js/includes/input-facebook-contact.js', function(){ - //TODO: Remettre version min - include('/js/includes/input-facebook-mini.js', function(){ - //TODO: Remettre version min - include('/js/includes/input-facebook-fiche.js', function(){ - include('/js/includes/input-facebook-matrice.js', function(){ - - - /* (1) Gestion du formulaire du sujet - ---------------------------------------------------------*/ - /* (1) On crée une instance du manager du sujet */ - fSubjectManager = new inputFacebookSubject( - $('[data-sublink="facebook"] article.subject-panel [data-name="subject_id"]'), - $('[data-sublink="facebook"] article.subject-panel [data-name="submit"]') - ); - - /* (2) On le démarre */ - fSubjectManager.attach(fDynamicUpdate); - - - /* (2) Gestion des formulaires de contact - ---------------------------------------------------------*/ - /* (1) On crée une instance du gestionnaire des CONTACTS */ - fContactManager = new inputFacebookContact( - $('[data-sublink="facebook"] article.contact-panel'), - $('[data-sublink="facebook"] #f_nav-contact') - ); - - /* (2) On le démarre */ - fContactManager.attach(fDynamicUpdate); - - - /* (3) Gestion des mini fiches relation - ---------------------------------------------------------*/ - /* (1) On crée une instance du gestionnaire des mini fiches relation */ - fMiniManager = new inputFacebookMini( - $('[data-sublink="facebook"] article.mini-relation-panel'), - $('[data-sublink="facebook"] #f_nav-mini') - ); - - /* (2) On le démarre */ - fMiniManager.attach(fDynamicUpdate); - - - /* (4) Gestion des fiches relation - ---------------------------------------------------------*/ - /* (1) On crée une instance du gestionnaire des fiches relation */ - fFicheManager = new inputFacebookFiche( - $('[data-sublink="facebook"] article.relation-panel'), - $('[data-sublink="facebook"] #f_nav-fiche') - ); - - /* (2) On le démarre */ - fFicheManager.attach(fDynamicUpdate); - - - /* (5) Gestion de la matrice de relations - ---------------------------------------------------------*/ - /* (1) On crée une instance du gestionnaire de la matrice */ - fMatriceManager = new inputFacebookMatrice( - $('[data-sublink="facebook"] article.matrice-panel') - ); - - /* (2) On le démarre */ - fMatriceManager.attach(fDynamicUpdate); - - - /* (7) Gestion de l'effacement des données locales - ---------------------------------------------------------*/ - $('[data-sublink="facebook"] #f_clear-all').addEventListener('click', function(e){ - /* (1) On vide tous les dataset de données */ - lsi.clear('f_subject'); - lsi.clear('f_contacts'); - lsi.clear('f_mini-fiches'); - lsi.clear('f_fiches'); - lsi.clear('f_matrice'); - lsi.clear('f_friends'); - - - /* (2) On met à jour l'affichage */ + /* (8) Gestion de l'export des données locales + ---------------------------------------------------------*/ + $('[data-sublink="facebook"] #f_export-all').addEventListener('click', function(e){ + + Notification.info('INFORMATION', 'Lancement du téléchargement de la sauvegarde'); + + /* (1) On construit les données */ + var data = { + subject: lsi.export('f_subject')[0], + contacts: lsi.export('f_contacts'), + mini: lsi.export('f_mini-fiches'), + fiches: lsi.export('f_fiches'), + matrice: lsi.export('f_matrice')[0] + }; + + + /* (2) On lance le téléchargement */ + var downloadTarget = $('[data-sublink="facebook"] #f_download-target'); // On récupère le lien () caché qui fera le téléchargement + downloadTarget.download = 'local-facebook-data.json'; // Nom du fichier qui sera téléchargé + downloadTarget.href = 'data:application/octet-stream,' + encodeURIComponent(JSON.stringify(data)); // Contenu + downloadTarget.click(); // On lance le téléchargement + + }, false); + + + /* (9) Gestion de l'import des données locales + ---------------------------------------------------------*/ + // Le bouton lance l' file + $('[data-sublink="facebook"] #f_import-all').addEventListener('click', function(e){ + $('[data-sublink="facebook"] #f_local-upload').click(); + }, false); + + + // On vide l'input de type 'file' quand on clique + $('[data-sublink="facebook"] #f_local-upload').addEventListener('click', function(e){ + e.target.value = null; + }, false); + + + // Gestion de l'upload d'une sauvegarde de formulaire local + $('[data-sublink="facebook"] #f_local-upload').addEventListener('change', function(e){ + /* (1) Rédaction de la requête d'upload */ + var request = { + path: 'upload/local_data', + file: $('[data-sublink="facebook"] #f_local-upload').files[0] + }; + + /* (2) Upload et réponse */ + api.send(request, function(response){ + console.log(response); + + // Si erreur, on quitte + if( response.ModuleError != 0 ){ + Notification.error('Erreur', response.ModuleError); + return false; + } + + /* (3) On enregistre les données dans le 'localStorage' */ + lsi.set('f_subject', 0, response.local_data.subject); + lsi.import('f_contacts', response.local_data.contacts); + lsi.import('f_mini-fiches', response.local_data.mini); + lsi.import('f_fiches', response.local_data.fiches); + lsi.set('f_matrice', 0, response.local_data.matrice); + + /* (3) On met à jour l'affichage */ fSubjectManager.storageToFields(); fContactManager.storageToFields(); - fMiniManager.storageToFields(); - fFicheManager.storageToFields(); fMatriceManager.storageToFields(); + fDynamicUpdate(true); - Notification.success('OK', 'Les données ont été supprimées'); - }, false); + }); + + }, false); + /* (10) Gestion de la validation et de l'envoi des données + ---------------------------------------------------------*/ + $('[data-sublink="facebook"] #f_submit-all').addEventListener('click', function(e){ + console.log('> GATHERING ALL DATA'); - /* (8) Gestion de l'export des données locales - ---------------------------------------------------------*/ - $('[data-sublink="facebook"] #f_export-all').addEventListener('click', function(e){ + /* (1) On met dans la mémoire tout les champs non enregistrés */ + fSubjectManager.fieldsToStorage(); + fContactManager.fieldsToStorage(); + fMiniManager.fieldsToStorage(); + fFicheManager.fieldsToStorage(); - Notification.info('INFORMATION', 'Lancement du téléchargement de la sauvegarde'); + /* (2) Vérification de la validité de toutes les données */ + // {1} Vérification du sujet // + if( !fSubjectManager.check() ){ + Notification.warning('Attention', 'Vous devez saisir les informations du sujet'); + return false; + } + // {2} Vérification des mini-fiches // + var mini = lsi.export('f_mini-fiches'); + var i = 0; + for( var id in mini ){ if( !isNaN(id) ){ - /* (1) On construit les données */ - var data = { - subject: lsi.export('f_subject')[0], - contacts: lsi.export('f_contacts'), - mini: lsi.export('f_mini-fiches'), - fiches: lsi.export('f_fiches'), - matrice: lsi.export('f_matrice')[0] - }; + i++ - - /* (2) On lance le téléchargement */ - var downloadTarget = $('[data-sublink="facebook"] #f_download-target'); // On récupère le lien () caché qui fera le téléchargement - downloadTarget.download = 'local-facebook-data.json'; // Nom du fichier qui sera téléchargé - downloadTarget.href = 'data:application/octet-stream,' + encodeURIComponent(JSON.stringify(data)); // Contenu - downloadTarget.click(); // On lance le téléchargement - - }, false); - - - /* (9) Gestion de l'import des données locales - ---------------------------------------------------------*/ - // Le bouton lance l' file - $('[data-sublink="facebook"] #f_import-all').addEventListener('click', function(e){ - $('[data-sublink="facebook"] #f_local-upload').click(); - }, false); - - - // On vide l'input de type 'file' quand on clique - $('[data-sublink="facebook"] #f_local-upload').addEventListener('click', function(e){ - e.target.value = null; - }, false); - - - // Gestion de l'upload d'une sauvegarde de formulaire local - $('[data-sublink="facebook"] #f_local-upload').addEventListener('change', function(e){ - /* (1) Rédaction de la requête d'upload */ - var request = { - path: 'upload/local_data', - file: $('[data-sublink="facebook"] #f_local-upload').files[0] - }; - - /* (2) Upload et réponse */ - api.send(request, function(response){ - console.log(response); - - // Si erreur, on quitte - if( response.ModuleError != 0 ){ - Notification.error('Erreur', response.ModuleError); + if( !mini[id].valid ){ + Notification.warning('Attention', 'La fiche rapide '+i+' est incomplète et/ou incorrecte'); return false; } - /* (3) On enregistre les données dans le 'localStorage' */ - lsi.set('f_subject', 0, response.local_data.subject); - lsi.import('f_contacts', response.local_data.contacts); - lsi.import('f_mini-fiches', response.local_data.mini); - lsi.import('f_fiches', response.local_data.fiches); - lsi.set('f_matrice', 0, response.local_data.matrice); + }} + // {3} Vérification des fiches // + var fiches = lsi.export('f_fiches'); + for( var id in fiches ) + if( !fiches[id].valid ){ + Notification.warning('Attention', 'La fiche complète '+(parseInt(id)+1)+' est incomplète et/ou incorrecte'); + return false; + } - /* (3) On met à jour l'affichage */ - fSubjectManager.storageToFields(); - fContactManager.storageToFields(); - fMatriceManager.storageToFields(); - fDynamicUpdate(true); - }); + + /* (3) On prépare la requête avec toutes les données */ + var request = { + path: 'input/facebook', + + subject: lsi.export('f_subject')[0], + contacts: lsi.export('f_contacts'), + mini: lsi.export('f_mini-fiches'), + fiches: lsi.export('f_fiches'), + matrice: lsi.export('f_matrice')[0] + }; + + /* (4) On envoie la requête et traite la réponse */ + api.send(request, function(response){ + console.log(response); + + // Si erreur, on la notifie + if( response.ModuleError != 0 ){ + Notification.error('ERREUR', response.ModuleError); + return false; + } + + console.log(response); }, false); - /* (10) Gestion de la validation et de l'envoi des données - ---------------------------------------------------------*/ - $('[data-sublink="facebook"] #f_submit-all').addEventListener('click', function(e){ - console.log('> GATHERING ALL DATA'); - - /* (1) On met dans la mémoire tout les champs non enregistrés */ - fSubjectManager.fieldsToStorage(); - fContactManager.fieldsToStorage(); - fMiniManager.fieldsToStorage(); - fFicheManager.fieldsToStorage(); - - /* (2) Vérification de la validité de toutes les données */ - // {1} Vérification du sujet // - if( !fSubjectManager.check() ){ - Notification.warning('Attention', 'Vous devez saisir les informations du sujet'); - return false; - } - // {2} Vérification des mini-fiches // - var mini = lsi.export('f_mini-fiches'); - var i = 0; - for( var id in mini ){ if( !isNaN(id) ){ - - i++ - - if( !mini[id].valid ){ - Notification.warning('Attention', 'La fiche rapide '+i+' est incomplète et/ou incorrecte'); - return false; - } - - }} - // {3} Vérification des fiches // - var fiches = lsi.export('f_fiches'); - for( var id in fiches ) - if( !fiches[id].valid ){ - Notification.warning('Attention', 'La fiche complète '+(parseInt(id)+1)+' est incomplète et/ou incorrecte'); - return false; - } + }, false); - - /* (3) On prépare la requête avec toutes les données */ - var request = { - path: 'input/facebook', - - subject: lsi.export('f_subject')[0], - contacts: lsi.export('f_contacts'), - mini: lsi.export('f_mini-fiches'), - fiches: lsi.export('f_fiches'), - matrice: lsi.export('f_matrice')[0] - }; - - /* (4) On envoie la requête et traite la réponse */ - api.send(request, function(response){ - console.log(response); - - // Si erreur, on la notifie - if( response.ModuleError != 0 ){ - Notification.error('ERREUR', response.ModuleError); - return false; - } - - console.log(response); - - }, false); - - - }, false); - - - }); }); }); }); }); +}); }); }); }); }); @@ -610,70 +616,57 @@ var sField, sSubmit, sList, - /* [1] Initialisation des utilitaires et variables PHONE - =========================================================*/ - /* (2) Fonctions utiles */ - var pDynamicUpdate = function(target){ +/* [1] Initialisation des utilitaires et variables PHONE +=========================================================*/ +/* (2) Fonctions utiles */ +var pDynamicUpdate = function(target){ - /* (0) Vérification de la cohérence de la @target - ---------------------------------------------------------*/ - var isElement = target instanceof Element; - var isSaveButton = isElement && target.tagName == 'INPUT' && target.type == 'submit'; - var isNavButton = isElement && target.tagName == 'SPAN' && (target.parentNode.id == 'p_nav-mini' || target.parentNode.id == 'p_nav-fiche'); - var isNavContact = isElement && target.tagName == 'SPAN' && target.parentNode.id == 'p_nav-contact'; + /* (0) Vérification de la cohérence de la @target + ---------------------------------------------------------*/ + var isElement = target instanceof Element; + var isSaveButton = isElement && target.tagName == 'INPUT' && target.type == 'submit'; + var isNavButton = isElement && target.tagName == 'SPAN' && (target.parentNode.id == 'p_nav-mini' || target.parentNode.id == 'p_nav-fiche'); + var isNavContact = isElement && target.tagName == 'SPAN' && target.parentNode.id == 'p_nav-contact'; - // Si erreur, on retourne une erreur - if( !isSaveButton && !isNavButton && !isNavContact && target !== true ) - return false; + // Si erreur, on retourne une erreur + if( !isSaveButton && !isNavButton && !isNavContact && target !== true ) + return false; - console.log('> dynamic update'); + console.group('[phone] Dynamic Update'); - /* (1) On enregistre les MINI fiches relation */ - pMiniManager.fieldsToStorage(); + /* (1) On enregistre les MINI fiches relation */ + pMiniManager.fieldsToStorage(); - /* (2) On enregister les FICHES relation */ - pFicheManager.fieldsToStorage(); + /* (2) On enregister les FICHES relation */ + pFicheManager.fieldsToStorage(); - /* (3) On enregistre les CONTACTS */ - pContactManager.fieldsToStorage(); + /* (3) On enregistre les CONTACTS */ + pContactManager.fieldsToStorage(); - /* (4) On enregistre la MATRICE */ - pMatriceManager.fieldsToStorage(); + /* (4) On enregistre la MATRICE */ + pMatriceManager.fieldsToStorage(); - /* (5) On synchronise les FICHE avec les CONTACTS */ - // 1. On synchronise les `mini` et `fiches` associées en fonction de la dernière date de modification - // 2. On synchronise les `fiches` dupliquées en fonction de la dernière date de modification - pFicheManager.sync(); + /* (5) On synchronise les FICHE avec les CONTACTS */ + // 1. On synchronise les `mini` et `fiches` associées en fonction de la dernière date de modification + // 2. On synchronise les `fiches` dupliquées en fonction de la dernière date de modification + pFicheManager.sync(); - /* (6) On synchronise les MINI avec les CONTACTS */ - // Supprime les contacts déja dans les FICHES - pMiniManager.sync(); + /* (6) On synchronise les MINI avec les CONTACTS */ + // Supprime les contacts déja dans les FICHES + pMiniManager.sync(); - /* (7) On récupère tous les amis du sujet */ - if( target === true ){ + /* (7) On récupère tous les amis du sujet */ + if( target === true ){ - api.send({ path: 'subject/getFriends', subject_id: pSubjectManager.subject_id.value }, function(response){ - // Si erreur, on quitte - if( response.ModuleError != 0 ) - return false; + api.send({ path: 'subject/getFriends', subject_id: pSubjectManager.subject_id.value }, function(response){ + // Si erreur, on quitte + if( response.ModuleError != 0 ) + return false; - // On enregistre les contacts existants - lsi.import('p_friends', response.subjects); - - /* (8) On affiche le tout */ - pMiniManager.storageToFields(); - pFicheManager.storageToFields(); - pMatriceManager.storageToFields(); - - /* (8) On met à jour les contacts si on les a modifié on si on navigue dans les contacts */ - pContactManager.storageToFields(); - - }); - - - }else{ + // On enregistre les contacts existants + lsi.import('p_friends', response.subjects); /* (8) On affiche le tout */ pMiniManager.storageToFields(); @@ -681,77 +674,78 @@ var sField, sSubmit, sList, pMatriceManager.storageToFields(); /* (8) On met à jour les contacts si on les a modifié on si on navigue dans les contacts */ - ( isSaveButton || isNavContact ) && pContactManager.storageToFields(); + pContactManager.storageToFields(); - } + }); - }; + + }else{ + + /* (8) On affiche le tout */ + pMiniManager.storageToFields(); + pFicheManager.storageToFields(); + pMatriceManager.storageToFields(); + + /* (8) On met à jour les contacts si on les a modifié on si on navigue dans les contacts */ + ( isSaveButton || isNavContact ) && pContactManager.storageToFields(); + + } + + console.groupEnd('[phone] Dynamic Update'); +}; - /* [2] Initialisation des utilitaires et variables FACEBEOOK - =========================================================* - /* (2) Fonctions utiles */ - var fDynamicUpdate = function(target){ +/* [2] Initialisation des utilitaires et variables FACEBEOOK +=========================================================* +/* (2) Fonctions utiles */ +var fDynamicUpdate = function(target){ - /* (0) Vérification de la cohérence de la @target - ---------------------------------------------------------*/ - var isElement = target instanceof Element; - var isSaveButton = isElement && target.tagName == 'INPUT' && target.type == 'submit'; - var isNavButton = isElement && target.tagName == 'SPAN' && (target.parentNode.id == 'f_nav-mini' || target.parentNode.id == 'f_nav-fiche'); - var isNavContact = isElement && target.tagName == 'SPAN' && target.parentNode.id == 'f_nav-contact'; + /* (0) Vérification de la cohérence de la @target + ---------------------------------------------------------*/ + var isElement = target instanceof Element; + var isSaveButton = isElement && target.tagName == 'INPUT' && target.type == 'submit'; + var isNavButton = isElement && target.tagName == 'SPAN' && (target.parentNode.id == 'f_nav-mini' || target.parentNode.id == 'f_nav-fiche'); + var isNavContact = isElement && target.tagName == 'SPAN' && target.parentNode.id == 'f_nav-contact'; - // Si erreur, on retourne une erreur - if( !isSaveButton && !isNavButton && !isNavContact && target !== true ) - return false; + // Si erreur, on retourne une erreur + if( !isSaveButton && !isNavButton && !isNavContact && target !== true ) + return false; - console.log('> dynamic update'); + console.group('[facebook] Dynamic Update'); - /* (1) On enregistre les MINI fiches relation */ - fMiniManager.fieldsToStorage(); + /* (1) On enregistre les MINI fiches relation */ + fMiniManager.fieldsToStorage(); - /* (2) On enregister les FICHES relation */ - fFicheManager.fieldsToStorage(); + /* (2) On enregister les FICHES relation */ + fFicheManager.fieldsToStorage(); - /* (3) On enregistre les CONTACTS */ - fContactManager.fieldsToStorage(); + /* (3) On enregistre les CONTACTS */ + fContactManager.fieldsToStorage(); - /* (4) On enregistre la MATRICE */ - fMatriceManager.fieldsToStorage(); + /* (4) On enregistre la MATRICE */ + fMatriceManager.fieldsToStorage(); - /* (5) On synchronise les FICHE avec les CONTACTS */ - // 1. On synchronise les `mini` et `fiches` associées en fonction de la dernière date de modification - // 2. On synchronise les `fiches` dupliquées en fonction de la dernière date de modification - fFicheManager.sync(); + /* (5) On synchronise les FICHE avec les CONTACTS */ + // 1. On synchronise les `mini` et `fiches` associées en fonction de la dernière date de modification + // 2. On synchronise les `fiches` dupliquées en fonction de la dernière date de modification + fFicheManager.sync(); - /* (6) On synchronise les MINI avec les CONTACTS */ - // Supprime les contacts déja dans les FICHES - fMiniManager.sync(); + /* (6) On synchronise les MINI avec les CONTACTS */ + // Supprime les contacts déja dans les FICHES + fMiniManager.sync(); - /* (7) On récupère tous les amis du sujet */ - if( target === true ){ + /* (7) On récupère tous les amis du sujet */ + if( target === true ){ - api.send({ path: 'subject/getFriends', subject_id: fSubjectManager.subject_id.value }, function(response){ - // Si erreur, on quitte - if( response.ModuleError != 0 ) - return false; + api.send({ path: 'subject/getFriends', subject_id: fSubjectManager.subject_id.value }, function(response){ + // Si erreur, on quitte + if( response.ModuleError != 0 ) + return false; - // On enregistre les contacts existants - lsi.import('f_friends', response.subjects); - - /* (8) On affiche le tout */ - fMiniManager.storageToFields(); - fFicheManager.storageToFields(); - fMatriceManager.storageToFields(); - - /* (8) On met à jour les contacts si on les a modifié on si on navigue dans les contacts */ - fContactManager.storageToFields(); - - }); - - - }else{ + // On enregistre les contacts existants + lsi.import('f_friends', response.subjects); /* (8) On affiche le tout */ fMiniManager.storageToFields(); @@ -759,11 +753,26 @@ var sField, sSubmit, sList, fMatriceManager.storageToFields(); /* (8) On met à jour les contacts si on les a modifié on si on navigue dans les contacts */ - if( isSaveButton || isNavContact ) - fContactManager.storageToFields(); - } + fContactManager.storageToFields(); - }; + }); + + + }else{ + + /* (8) On affiche le tout */ + fMiniManager.storageToFields(); + fFicheManager.storageToFields(); + fMatriceManager.storageToFields(); + + /* (8) On met à jour les contacts si on les a modifié on si on navigue dans les contacts */ + if( isSaveButton || isNavContact ) + fContactManager.storageToFields(); + } + + console.groupEnd('[facebook] Dynamic Update'); + +}; @@ -777,379 +786,379 @@ var sField, sSubmit, sList, - /*=========================================================*/ - /*============= Routine de test CELLULAIRE ================*/ - /*=========================================================*/ - function testContactsPhone(){ +/*=========================================================*/ +/*============= Routine de test CELLULAIRE ================*/ +/*=========================================================*/ +function testContactsPhone(){ - for( var i = 0 ; i < 45 ; i++ ){ + for( var i = 0 ; i < 45 ; i++ ){ - if( i%20 == 0 ) - lsi.set('p_contacts', i, { uid: i, username: 'contact-x' }); - else - lsi.set('p_contacts', i, { uid: i, username: 'contact-'+i }); - } - }; + if( i%20 == 0 ) + lsi.set('p_contacts', i, { uid: i, username: 'contact-x' }); + else + lsi.set('p_contacts', i, { uid: i, username: 'contact-'+i }); + } +}; - function testRoutinePhone(doMini){ +function testRoutinePhone(doMini){ - /* [0] Récupération des données - =========================================================*/ - var contacts = lsi.export('p_contacts'); - var mini = lsi.export('p_mini-fiches'); - var fiches = lsi.export('p_fiches'); + /* [0] Récupération des données + =========================================================*/ + var contacts = lsi.export('p_contacts'); + var mini = lsi.export('p_mini-fiches'); + var fiches = lsi.export('p_fiches'); - var count = 0; + var count = 0; - /* [1] Remplissage des mini-fiches - =========================================================*/ - if( doMini != null && doMini ){ - for( var m in mini ){ - - /* (0) Si la fiche n'est pas affichée, on passe à la suivante */ - if( isNaN(m) ) - continue; - - /* (1) On récupére le nom du contact associé */ - var name = ''; - if( contacts[m] != null ) - name = contacts[m].username; - - /* (2) On remplit la mini fiche */ - // {1} On se positionne sur la fiche en question // - var navBut = $('#p_nav-mini [data-n="'+m+'"]'); - navBut.click(); - - // {2} Si la personne n'a pas de nom, on met que ce contact est inconnu, puis les valeurs par défaut // - $('#unknown_min_p_'+m).checked = name.length == 0; - - - /* (3) Si personne inconnue -> valeurs indéterminées */ - if( name.length == 0 ){ - - // {1} Sexe indéterminé // - $('#sexeI_mini_p_'+m).checked = true; - - // {2} Age indéterminé // - $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="age"]').value = count % 19; - - // {3} Etudes indéterminées // - $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="studies"]').value = 0; - - // {4} Type de relation inconnue // - $('#reltype9_mini_p_'+m).checked = true; - - - - - continue; - /* (4) Si la personne est connue on incrémente les valeurs */ - }else{ - - // {1} On remplit le sexe // - var sexeVal = ['H', 'F'][ Math.floor(count % 2) ]; - $('#sexe'+sexeVal+'_mini_p_'+m).checked = true; - - // {2} On remplit l'age // - $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="age"]').value = count % 19; - - // {3} On remplit les études // - $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="studies"]').value = 1 + (count % 6); - - // {4} Type de relation // - var relVal = count % 10; - // Si AUTRE - if( relVal == 9 ){ - $('#reltype10_mini_p_'+m).checked = true; - $('input[data-name="uid"][value="'+m+'"] ~ h5 input[data-name="reltypeSpecial"]').value = 'autre'; - // Sinon - }else - $('#reltype'+relVal+'_mini_p_'+m).checked = true; - - } - - count++; - - } - } - - - - /* [2] Remplissage des fiches complètes - =========================================================*/ - for( var f in fiches ){ + /* [1] Remplissage des mini-fiches + =========================================================*/ + if( doMini != null && doMini ){ + for( var m in mini ){ /* (0) Si la fiche n'est pas affichée, on passe à la suivante */ - if( isNaN(f) ) + if( isNaN(m) ) continue; /* (1) On récupére le nom du contact associé */ var name = ''; - if( contacts[fiches[f].contact] != null ) - name = contacts[fiches[f].contact].username; + if( contacts[m] != null ) + name = contacts[m].username; - /* (2) On remplit la fiche */ + /* (2) On remplit la mini fiche */ // {1} On se positionne sur la fiche en question // - var navBut = $('#p_nav-fiche [data-n="'+f+'"]'); + var navBut = $('#p_nav-mini [data-n="'+m+'"]'); navBut.click(); + // {2} Si la personne n'a pas de nom, on met que ce contact est inconnu, puis les valeurs par défaut // + $('#unknown_min_p_'+m).checked = name.length == 0; - // {1} On remplit le sexe // - var sexeVal = ['H', 'F', 'I'][ Math.floor(count % 3) ]; - $('#sexe'+sexeVal+'_p_'+f).checked = true; + /* (3) Si personne inconnue -> valeurs indéterminées */ + if( name.length == 0 ){ - // {2} On remplit l'age // - $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="age"]').value = count % 19; + // {1} Sexe indéterminé // + $('#sexeI_mini_p_'+m).checked = true; - // {3} On remplit la profession // - var jobVal = ['10', '21', '22', '23', '31', '32', '36', '41', '46', '47', '48', '51', '54', '55', '56', '61', '66', '69', '71', '72', '73', '74', '75', '76', '81', '82']; - jobVal = jobVal[ count % jobVal.length ]; - $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="job"]').value = jobVal; + // {2} Age indéterminé // + $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="age"]').value = count % 19; - // {4} On remplit les études // - var stuVal = (count % 12).toString(); - if( stuVal.length == 1 ) stuVal = '0'+stuVal; - $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="studies"]').value = stuVal; + // {3} Etudes indéterminées // + $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="studies"]').value = 0; - // {5} Type de relation // - var relVal = count % 9; - - // Si AUTRE - if( relVal == 8 ){ - $('#reltype10_p_'+f).checked = true; - $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value = 'autre'; - // Sinon - }else - $('#reltype'+relVal+'_p_'+f).checked = true; - - // {6} La ville, le CP et le quartier // - $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="city"]').value = (10 + count).toString(); - $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="cp"]').value = (10000 + count).toString(); - $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="quartier"]').value = count; - - // {7} Temps entre les domiciles // - var locVal = ['A', 'B', 'C', 'D'][ Math.floor(count % 4) ]; - $('#loc'+locVal+'_p_'+f).checked = true; - - // {8} Temps de connaissance // - var duration = $$('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="duration"]'); - duration[0].value = count.toString(); - duration[1].value = 1+count.toString(); - - // {9} Contexte de rencontre // - var ctxVal = count % 14; - $('article.fiche-relation #contexte'+ctxVal+'_p_'+f).checked = true; - - var ctxSpe = $$('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="contextSpecial"]'); - - // Si special1 - if( ctxVal == 11 ) - ctxSpe[0].value = 'internet'; - - // Si special2 - if( ctxVal == 12 ) - ctxSpe[1].value = 'association'; - - // Si special3 - if( ctxVal == 13 ) - ctxSpe[2].value = 'autre'; + // {4} Type de relation inconnue // + $('#reltype9_mini_p_'+m).checked = true; + + continue; + /* (4) Si la personne est connue on incrémente les valeurs */ + }else{ + + // {1} On remplit le sexe // + var sexeVal = ['H', 'F'][ Math.floor(count % 2) ]; + $('#sexe'+sexeVal+'_mini_p_'+m).checked = true; + + // {2} On remplit l'age // + $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="age"]').value = count % 19; + + // {3} On remplit les études // + $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="studies"]').value = 1 + (count % 6); + + // {4} Type de relation // + var relVal = count % 10; + // Si AUTRE + if( relVal == 9 ){ + $('#reltype10_mini_p_'+m).checked = true; + $('input[data-name="uid"][value="'+m+'"] ~ h5 input[data-name="reltypeSpecial"]').value = 'autre'; + // Sinon + }else + $('#reltype'+relVal+'_mini_p_'+m).checked = true; + + } + count++; } - } + /* [2] Remplissage des fiches complètes + =========================================================*/ + for( var f in fiches ){ + + /* (0) Si la fiche n'est pas affichée, on passe à la suivante */ + if( isNaN(f) ) + continue; + + /* (1) On récupére le nom du contact associé */ + var name = ''; + if( contacts[fiches[f].contact] != null ) + name = contacts[fiches[f].contact].username; + + /* (2) On remplit la fiche */ + // {1} On se positionne sur la fiche en question // + var navBut = $('#p_nav-fiche [data-n="'+f+'"]'); + navBut.click(); - /*=========================================================*/ - /*============== Routine de test FACEBOOK =================*/ - /*=========================================================*/ - function testContactsFacebook(){ + // {1} On remplit le sexe // + var sexeVal = ['H', 'F', 'I'][ Math.floor(count % 3) ]; + $('#sexe'+sexeVal+'_p_'+f).checked = true; - for( var i = 0 ; i < 45 ; i++ ){ + // {2} On remplit l'age // + $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="age"]').value = count % 19; - if( i%20 == 0 ) - lsi.set('f_contacts', i, { uid: i, username: 'contact-x' }); - else - lsi.set('f_contacts', i, { uid: i, username: 'contact-'+i }); - } - }; + // {3} On remplit la profession // + var jobVal = ['10', '21', '22', '23', '31', '32', '36', '41', '46', '47', '48', '51', '54', '55', '56', '61', '66', '69', '71', '72', '73', '74', '75', '76', '81', '82']; + jobVal = jobVal[ count % jobVal.length ]; + $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="job"]').value = jobVal; - function testRoutineFacebook(doMini){ + // {4} On remplit les études // + var stuVal = (count % 12).toString(); + if( stuVal.length == 1 ) stuVal = '0'+stuVal; + $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="studies"]').value = stuVal; - /* [0] Récupération des données - =========================================================*/ - var contacts = lsi.export('f_contacts'); - var mini = lsi.export('f_mini-fiches'); - var fiches = lsi.export('f_fiches'); + // {5} Type de relation // + var relVal = count % 9; - var count = 0; + // Si AUTRE + if( relVal == 8 ){ + $('#reltype10_p_'+f).checked = true; + $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value = 'autre'; + // Sinon + }else + $('#reltype'+relVal+'_p_'+f).checked = true; - /* [1] Remplissage des mini-fiches - =========================================================*/ - if( doMini != null && doMini ){ - for( var m in mini ){ + // {6} La ville, le CP et le quartier // + $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="city"]').value = (10 + count).toString(); + $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="cp"]').value = (10000 + count).toString(); + $('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="quartier"]').value = count; - /* (0) Si la fiche n'est pas affichée, on passe à la suivante */ - if( isNaN(m) ) - continue; + // {7} Temps entre les domiciles // + var locVal = ['A', 'B', 'C', 'D'][ Math.floor(count % 4) ]; + $('#loc'+locVal+'_p_'+f).checked = true; - /* (1) On récupére le nom du contact associé */ - var name = ''; - if( contacts[m] != null ) - name = contacts[m].username; + // {8} Temps de connaissance // + var duration = $$('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="duration"]'); + duration[0].value = count.toString(); + duration[1].value = 1+count.toString(); - /* (2) On remplit la mini fiche */ - // {1} On se positionne sur la fiche en question // - var navBut = $('#f_nav-mini [data-n="'+m+'"]'); - navBut.click(); + // {9} Contexte de rencontre // + var ctxVal = count % 14; + $('article.fiche-relation #contexte'+ctxVal+'_p_'+f).checked = true; - // {2} Si la personne n'a pas de nom, on met que ce contact est inconnu, puis les valeurs par défaut // - $('#unknown_min_f_'+m).checked = name.length == 0; + var ctxSpe = $$('article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="contextSpecial"]'); + + // Si special1 + if( ctxVal == 11 ) + ctxSpe[0].value = 'internet'; + + // Si special2 + if( ctxVal == 12 ) + ctxSpe[1].value = 'association'; + + // Si special3 + if( ctxVal == 13 ) + ctxSpe[2].value = 'autre'; - /* (3) Si personne inconnue -> valeurs indéterminées */ - if( name.length == 0 ){ - // {1} Sexe indéterminé // - $('#sexeI_mini_f_'+m).checked = true; + count++; - // {2} Age indéterminé // - $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="age"]').value = count % 19; + } - // {3} Etudes indéterminées // - $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="studies"]').value = 0; - - // {4} Type de relation inconnue // - $('#reltype9_mini_f_'+m).checked = true; +} - continue; - /* (4) Si la personne est connue on incrémente les valeurs */ - }else{ - - // {1} On remplit le sexe // - var sexeVal = ['H', 'F'][ Math.floor(count % 2) ]; - $('#sexe'+sexeVal+'_mini_f_'+m).checked = true; - - // {2} On remplit l'age // - $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="age"]').value = count % 19; - - // {3} On remplit les études // - $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="studies"]').value = 1 + (count % 6); - - // {4} Type de relation // - var relVal = count % 10; - // Si AUTRE - if( relVal == 9 ){ - $('#reltype10_mini_f_'+m).checked = true; - $('input[data-name="uid"][value="'+m+'"] ~ h5 input[data-name="reltypeSpecial"]').value = 'autre'; - // Sinon - }else - $('#reltype'+relVal+'_mini_f_'+m).checked = true; - - } - - count++; - - } - } +/*=========================================================*/ +/*============== Routine de test FACEBOOK =================*/ +/*=========================================================*/ +function testContactsFacebook(){ - /* [2] Remplissage des fiches complètes - =========================================================*/ - for( var f in fiches ){ + for( var i = 0 ; i < 45 ; i++ ){ + + if( i%20 == 0 ) + lsi.set('f_contacts', i, { uid: i, username: 'contact-x' }); + else + lsi.set('f_contacts', i, { uid: i, username: 'contact-'+i }); + } +}; + +function testRoutineFacebook(doMini){ + + /* [0] Récupération des données + =========================================================*/ + var contacts = lsi.export('f_contacts'); + var mini = lsi.export('f_mini-fiches'); + var fiches = lsi.export('f_fiches'); + + var count = 0; + + /* [1] Remplissage des mini-fiches + =========================================================*/ + if( doMini != null && doMini ){ + for( var m in mini ){ /* (0) Si la fiche n'est pas affichée, on passe à la suivante */ - if( isNaN(f) ) + if( isNaN(m) ) continue; /* (1) On récupére le nom du contact associé */ var name = ''; - if( contacts[fiches[f].contact] != null ) - name = contacts[fiches[f].contact].username; + if( contacts[m] != null ) + name = contacts[m].username; - /* (2) On remplit la fiche */ + /* (2) On remplit la mini fiche */ // {1} On se positionne sur la fiche en question // - var navBut = $('#f_nav-fiche [data-n="'+f+'"]'); + var navBut = $('#f_nav-mini [data-n="'+m+'"]'); navBut.click(); + // {2} Si la personne n'a pas de nom, on met que ce contact est inconnu, puis les valeurs par défaut // + $('#unknown_min_f_'+m).checked = name.length == 0; - // {1} On remplit le sexe // - var sexeVal = ['H', 'F', 'I'][ Math.floor(count % 3) ]; - $('#sexe'+sexeVal+'_f_'+f).checked = true; + /* (3) Si personne inconnue -> valeurs indéterminées */ + if( name.length == 0 ){ - // {2} On remplit l'age // - $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="age"]').value = count % 19; + // {1} Sexe indéterminé // + $('#sexeI_mini_f_'+m).checked = true; - // {3} On remplit la profession // - var jobVal = ['10', '21', '22', '23', '31', '32', '36', '41', '46', '47', '48', '51', '54', '55', '56', '61', '66', '69', '71', '72', '73', '74', '75', '76', '81', '82']; - jobVal = jobVal[ count % jobVal.length ]; - $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="job"]').value = jobVal; + // {2} Age indéterminé // + $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="age"]').value = count % 19; - // {4} On remplit les études // - var stuVal = (count % 12).toString(); - if( stuVal.length == 1 ) stuVal = '0'+stuVal; - $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="studies"]').value = stuVal; + // {3} Etudes indéterminées // + $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="studies"]').value = 0; - // {5} Type de relation // - var relVal = count % 9; - - // Si AUTRE - if( relVal == 8 ){ - $('#reltype10_f_'+f).checked = true; - $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value = 'autre'; - // Sinon - }else - $('#reltype'+relVal+'_f_'+f).checked = true; - - // {6} La ville, le CP et le quartier // - $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="city"]').value = (10 + count).toString(); - $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="cp"]').value = (10000 + count).toString(); - $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="quartier"]').value = count; - - // {7} Temps entre les domiciles // - var locVal = ['A', 'B', 'C', 'D'][ Math.floor(count % 4) ]; - $('#loc'+locVal+'_f_'+f).checked = true; - - // {8} Temps de connaissance // - var duration = $$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="duration"]'); - duration[0].value = count.toString(); - duration[1].value = 1+count.toString(); - - // {9} Contexte de rencontre // - var ctxVal = count % 14; - $('section[data-sublink="facebook"] article.fiche-relation #contexte'+ctxVal+'_f_'+f).checked = true; - - var ctxSpe = $$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="contextSpecial"]'); - - // Si special1 - if( ctxVal == 11 ) - ctxSpe[0].value = 'internet'; - - // Si special2 - if( ctxVal == 12 ) - ctxSpe[1].value = 'association'; - - // Si special3 - if( ctxVal == 13 ) - ctxSpe[2].value = 'autre'; + // {4} Type de relation inconnue // + $('#reltype9_mini_f_'+m).checked = true; + + continue; + /* (4) Si la personne est connue on incrémente les valeurs */ + }else{ + + // {1} On remplit le sexe // + var sexeVal = ['H', 'F'][ Math.floor(count % 2) ]; + $('#sexe'+sexeVal+'_mini_f_'+m).checked = true; + + // {2} On remplit l'age // + $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="age"]').value = count % 19; + + // {3} On remplit les études // + $('input[data-name="uid"][value="'+m+'"] ~ h5 select[data-name="studies"]').value = 1 + (count % 6); + + // {4} Type de relation // + var relVal = count % 10; + // Si AUTRE + if( relVal == 9 ){ + $('#reltype10_mini_f_'+m).checked = true; + $('input[data-name="uid"][value="'+m+'"] ~ h5 input[data-name="reltypeSpecial"]').value = 'autre'; + // Sinon + }else + $('#reltype'+relVal+'_mini_f_'+m).checked = true; + + } + count++; } + } + + + + /* [2] Remplissage des fiches complètes + =========================================================*/ + for( var f in fiches ){ + + /* (0) Si la fiche n'est pas affichée, on passe à la suivante */ + if( isNaN(f) ) + continue; + + /* (1) On récupére le nom du contact associé */ + var name = ''; + if( contacts[fiches[f].contact] != null ) + name = contacts[fiches[f].contact].username; + + /* (2) On remplit la fiche */ + // {1} On se positionne sur la fiche en question // + var navBut = $('#f_nav-fiche [data-n="'+f+'"]'); + navBut.click(); + + + + // {1} On remplit le sexe // + var sexeVal = ['H', 'F', 'I'][ Math.floor(count % 3) ]; + $('#sexe'+sexeVal+'_f_'+f).checked = true; + + // {2} On remplit l'age // + $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="age"]').value = count % 19; + + // {3} On remplit la profession // + var jobVal = ['10', '21', '22', '23', '31', '32', '36', '41', '46', '47', '48', '51', '54', '55', '56', '61', '66', '69', '71', '72', '73', '74', '75', '76', '81', '82']; + jobVal = jobVal[ count % jobVal.length ]; + $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="job"]').value = jobVal; + + // {4} On remplit les études // + var stuVal = (count % 12).toString(); + if( stuVal.length == 1 ) stuVal = '0'+stuVal; + $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="studies"]').value = stuVal; + + // {5} Type de relation // + var relVal = count % 9; + + // Si AUTRE + if( relVal == 8 ){ + $('#reltype10_f_'+f).checked = true; + $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value = 'autre'; + // Sinon + }else + $('#reltype'+relVal+'_f_'+f).checked = true; + + // {6} La ville, le CP et le quartier // + $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="city"]').value = (10 + count).toString(); + $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="cp"]').value = (10000 + count).toString(); + $('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="quartier"]').value = count; + + // {7} Temps entre les domiciles // + var locVal = ['A', 'B', 'C', 'D'][ Math.floor(count % 4) ]; + $('#loc'+locVal+'_f_'+f).checked = true; + + // {8} Temps de connaissance // + var duration = $$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="duration"]'); + duration[0].value = count.toString(); + duration[1].value = 1+count.toString(); + + // {9} Contexte de rencontre // + var ctxVal = count % 14; + $('section[data-sublink="facebook"] article.fiche-relation #contexte'+ctxVal+'_f_'+f).checked = true; + + var ctxSpe = $$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="contextSpecial"]'); + + // Si special1 + if( ctxVal == 11 ) + ctxSpe[0].value = 'internet'; + + // Si special2 + if( ctxVal == 12 ) + ctxSpe[1].value = 'association'; + + // Si special3 + if( ctxVal == 13 ) + ctxSpe[2].value = 'autre'; + + + + count++; } + +} diff --git a/view/js/min/input.js b/view/js/min/input.js index fb0497c..2f19925 100644 --- a/view/js/min/input.js +++ b/view/js/min/input.js @@ -2,15 +2,15 @@ var sField,sSubmit,sList,pSubjectManager=null,pContactManager=null,pMiniManager= var tmpSubjectSearchListener=function(a){api.send({path:"subject/search",name:sField.value},function(a){if(0!=a.ModuleError)return Notification.error("Erreur","La recherche a \u00e9chou\u00e9."),!1;console.log(a);var c=[],g;for(g in a.results)c.push("
  • "),c.push("
    SUJET
    "),c.push("
    "),c.push("
    "+ a.results[g].name+"
    "),c.push("
    "+a.results[g].creation+"
    "),c.push("
    "),c.push("
    "),c.push("
    "),c.push("
    "),c.push("
  • ");sList.innerHTML= c.join("")})};sSubmit.addEventListener("click",tmpSubjectSearchListener,!1);sField.addEventListener("keypress",function(a){13===a.keyCode&&tmpSubjectSearchListener(a)},!1); -var phoneRoutineExecuted=0,phoneRoutine=function(){phoneRoutineExecuted++;pSubjectManager=new inputPhoneSubject($('[data-sublink="phone"] article.subject-panel [data-name="tmp_id"]'),$('[data-sublink="phone"] article.subject-panel [data-name="subject_id"]'),$('[data-sublink="phone"] article.subject-panel [data-name="submit"]'));pSubjectManager.attach(pDynamicUpdate);pContactManager=new inputPhoneContact($('[data-sublink="phone"] article.contact-panel'),$('[data-sublink="phone"] #p_nav-contact')); -pContactManager.attach(pDynamicUpdate);pMiniManager=new inputPhoneMini($('[data-sublink="phone"] article.mini-relation-panel'),$('[data-sublink="phone"] #p_nav-mini'));pMiniManager.attach(pDynamicUpdate);pFicheManager=new inputPhoneFiche($('[data-sublink="phone"] article.relation-panel'),$('[data-sublink="phone"] #p_nav-fiche'));pFicheManager.attach(pDynamicUpdate);pMatriceManager=new inputPhoneMatrice($('[data-sublink="phone"] article.matrice-panel'));pMatriceManager.attach(pDynamicUpdate);$('[data-sublink="phone"] #p_clear-all').addEventListener("click", -function(a){lsi.clear("p_subject");lsi.clear("p_contacts");lsi.clear("p_mini-fiches");lsi.clear("p_fiches");lsi.clear("p_matrice");lsi.clear("p_friends");pSubjectManager.storageToFields();pContactManager.storageToFields();pMiniManager.storageToFields();pFicheManager.storageToFields();pMatriceManager.storageToFields();Notification.success("OK","Les donn\u00e9es ont \u00e9t\u00e9 supprim\u00e9es")},!1);$('[data-sublink="phone"] #p_export-all').addEventListener("click",function(a){Notification.info("INFORMATION", -"Lancement du t\u00e9l\u00e9chargement de la sauvegarde");a={subject:lsi["export"]("p_subject")[0],contacts:lsi["export"]("p_contacts"),mini:lsi["export"]("p_mini-fiches"),fiches:lsi["export"]("p_fiches"),matrice:lsi["export"]("p_matrice")[0]};var b=$('[data-sublink="phone"] #p_download-target');b.download="local-phone-data.json";b.href="data:application/octet-stream,"+encodeURIComponent(JSON.stringify(a));b.click()},!1);$('[data-sublink="phone"] #p_import-all').addEventListener("click",function(a){$('[data-sublink="phone"] #p_local-upload').click()}, -!1);$('[data-sublink="phone"] #p_local-upload').addEventListener("click",function(a){a.target.value=null},!1);$('[data-sublink="phone"] #p_local-upload').addEventListener("change",function(a){a={path:"upload/local_data",file:$('[data-sublink="phone"] #p_local-upload').files[0]};api.send(a,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("Erreur",a.ModuleError),!1;lsi.set("p_subject",0,a.local_data.subject);lsi["import"]("p_contacts",a.local_data.contacts);lsi["import"]("p_mini-fiches", -a.local_data.mini);lsi["import"]("p_fiches",a.local_data.fiches);lsi.set("p_matrice",0,a.local_data.matrice);pSubjectManager.storageToFields();pContactManager.storageToFields();pMatriceManager.storageToFields();pDynamicUpdate(!0)})},!1);$('[data-sublink="phone"] #p_submit-all').addEventListener("click",function(a){console.log("> GATHERING ALL DATA");pSubjectManager.fieldsToStorage();pContactManager.fieldsToStorage();pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();if(!pSubjectManager.check())return Notification.warning("Attention", -"Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("p_mini-fiches");var b=0,c;for(c in a)if(!isNaN(c)&&(b++,!a[c].valid))return Notification.warning("Attention","La fiche rapide "+b+" est incompl\u00e8te et/ou incorrecte"),!1;a=lsi["export"]("p_fiches");for(c in a)if(!a[c].valid)return Notification.warning("Attention","La fiche compl\u00e8te "+(parseInt(c)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;c={path:"input/phone",subject:lsi["export"]("p_subject")[0], -contacts:lsi["export"]("p_contacts"),mini:lsi["export"]("p_mini-fiches"),fiches:lsi["export"]("p_fiches"),matrice:lsi["export"]("p_matrice")[0]};api.send(c,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;Notification.success("OK","L'identifiant du sujet est "+a.subject_id+" ! Tout s'est bien d\u00e9roul\u00e9.",1E4);console.log(a)},!1)},!1)}; -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(){include("/js/includes/input-phone-matrice.js",phoneRoutine)})})})}); +var phoneRoutineExecuted=!1,phoneRoutine=function(){phoneRoutineExecuted||(phoneRoutineExecuted=!0,console.group("[phone] Initialization"),pSubjectManager=new inputPhoneSubject($('[data-sublink="phone"] article.subject-panel [data-name="tmp_id"]'),$('[data-sublink="phone"] article.subject-panel [data-name="subject_id"]'),$('[data-sublink="phone"] article.subject-panel [data-name="submit"]')),pSubjectManager.attach(pDynamicUpdate),pContactManager=new inputPhoneContact($('[data-sublink="phone"] article.contact-panel'), +$('[data-sublink="phone"] #p_nav-contact')),pContactManager.attach(pDynamicUpdate),pMiniManager=new inputPhoneMini($('[data-sublink="phone"] article.mini-relation-panel'),$('[data-sublink="phone"] #p_nav-mini')),pMiniManager.attach(pDynamicUpdate),pFicheManager=new inputPhoneFiche($('[data-sublink="phone"] article.relation-panel'),$('[data-sublink="phone"] #p_nav-fiche')),pFicheManager.attach(pDynamicUpdate),pMatriceManager=new inputPhoneMatrice($('[data-sublink="phone"] article.matrice-panel')), +pMatriceManager.attach(pDynamicUpdate),$('[data-sublink="phone"] #p_clear-all').addEventListener("click",function(a){lsi.clear("p_subject");lsi.clear("p_contacts");lsi.clear("p_mini-fiches");lsi.clear("p_fiches");lsi.clear("p_matrice");lsi.clear("p_friends");pSubjectManager.storageToFields();pContactManager.storageToFields();pMiniManager.storageToFields();pFicheManager.storageToFields();pMatriceManager.storageToFields();Notification.success("OK","Les donn\u00e9es ont \u00e9t\u00e9 supprim\u00e9es")}, +!1),$('[data-sublink="phone"] #p_export-all').addEventListener("click",function(a){Notification.info("INFORMATION","Lancement du t\u00e9l\u00e9chargement de la sauvegarde");a={subject:lsi["export"]("p_subject")[0],contacts:lsi["export"]("p_contacts"),mini:lsi["export"]("p_mini-fiches"),fiches:lsi["export"]("p_fiches"),matrice:lsi["export"]("p_matrice")[0]};var b=$('[data-sublink="phone"] #p_download-target');b.download="local-phone-data.json";b.href="data:application/octet-stream,"+encodeURIComponent(JSON.stringify(a)); +b.click()},!1),$('[data-sublink="phone"] #p_import-all').addEventListener("click",function(a){$('[data-sublink="phone"] #p_local-upload').click()},!1),$('[data-sublink="phone"] #p_local-upload').addEventListener("click",function(a){a.target.value=null},!1),$('[data-sublink="phone"] #p_local-upload').addEventListener("change",function(a){a={path:"upload/local_data",file:$('[data-sublink="phone"] #p_local-upload').files[0]};api.send(a,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("Erreur", +a.ModuleError),!1;lsi.set("p_subject",0,a.local_data.subject);lsi["import"]("p_contacts",a.local_data.contacts);lsi["import"]("p_mini-fiches",a.local_data.mini);lsi["import"]("p_fiches",a.local_data.fiches);lsi.set("p_matrice",0,a.local_data.matrice);pSubjectManager.storageToFields();pContactManager.storageToFields();pMatriceManager.storageToFields();pDynamicUpdate(!0)})},!1),$('[data-sublink="phone"] #p_submit-all').addEventListener("click",function(a){console.log("> GATHERING ALL DATA");pSubjectManager.fieldsToStorage(); +pContactManager.fieldsToStorage();pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();if(!pSubjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("p_mini-fiches");var b=0,c;for(c in a)if(!isNaN(c)&&(b++,!a[c].valid))return Notification.warning("Attention","La fiche rapide "+b+" est incompl\u00e8te et/ou incorrecte"),!1;a=lsi["export"]("p_fiches");for(c in a)if(!a[c].valid)return Notification.warning("Attention", +"La fiche compl\u00e8te "+(parseInt(c)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;c={path:"input/phone",subject:lsi["export"]("p_subject")[0],contacts:lsi["export"]("p_contacts"),mini:lsi["export"]("p_mini-fiches"),fiches:lsi["export"]("p_fiches"),matrice:lsi["export"]("p_matrice")[0]};api.send(c,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;Notification.success("OK","L'identifiant du sujet est "+a.subject_id+" ! Tout s'est bien d\u00e9roul\u00e9.", +1E4);console.log(a)},!1)},!1),console.groupEnd("[phone] Initialization"))};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(){include("/js/includes/input-phone-matrice.js",phoneRoutine)})})})}); include("/js/includes/input-facebook-subject.js",function(){include("/js/includes/input-facebook-contact.js",function(){include("/js/includes/input-facebook-mini.js",function(){include("/js/includes/input-facebook-fiche.js",function(){include("/js/includes/input-facebook-matrice.js",function(){fSubjectManager=new inputFacebookSubject($('[data-sublink="facebook"] article.subject-panel [data-name="subject_id"]'),$('[data-sublink="facebook"] article.subject-panel [data-name="submit"]'));fSubjectManager.attach(fDynamicUpdate); fContactManager=new inputFacebookContact($('[data-sublink="facebook"] article.contact-panel'),$('[data-sublink="facebook"] #f_nav-contact'));fContactManager.attach(fDynamicUpdate);fMiniManager=new inputFacebookMini($('[data-sublink="facebook"] article.mini-relation-panel'),$('[data-sublink="facebook"] #f_nav-mini'));fMiniManager.attach(fDynamicUpdate);fFicheManager=new inputFacebookFiche($('[data-sublink="facebook"] article.relation-panel'),$('[data-sublink="facebook"] #f_nav-fiche'));fFicheManager.attach(fDynamicUpdate); fMatriceManager=new inputFacebookMatrice($('[data-sublink="facebook"] article.matrice-panel'));fMatriceManager.attach(fDynamicUpdate);$('[data-sublink="facebook"] #f_clear-all').addEventListener("click",function(a){lsi.clear("f_subject");lsi.clear("f_contacts");lsi.clear("f_mini-fiches");lsi.clear("f_fiches");lsi.clear("f_matrice");lsi.clear("f_friends");fSubjectManager.storageToFields();fContactManager.storageToFields();fMiniManager.storageToFields();fFicheManager.storageToFields();fMatriceManager.storageToFields(); @@ -20,10 +20,11 @@ api.send(a,function(a){console.log(a);if(0!=a.ModuleError)return Notification.er function(a){console.log("> GATHERING ALL DATA");fSubjectManager.fieldsToStorage();fContactManager.fieldsToStorage();fMiniManager.fieldsToStorage();fFicheManager.fieldsToStorage();if(!fSubjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("f_mini-fiches");var b=0,c;for(c in a)if(!isNaN(c)&&(b++,!a[c].valid))return Notification.warning("Attention","La fiche rapide "+b+" est incompl\u00e8te et/ou incorrecte"), !1;a=lsi["export"]("f_fiches");for(c in a)if(!a[c].valid)return Notification.warning("Attention","La fiche compl\u00e8te "+(parseInt(c)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;c={path:"input/facebook",subject:lsi["export"]("f_subject")[0],contacts:lsi["export"]("f_contacts"),mini:lsi["export"]("f_mini-fiches"),fiches:lsi["export"]("f_fiches"),matrice:lsi["export"]("f_matrice")[0]};api.send(c,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError), !1;console.log(a)},!1)},!1)})})})})}); -var pDynamicUpdate=function(a){var b=a instanceof Element,c=b&&"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"==a.tagName&&("p_nav-mini"==a.parentNode.id||"p_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"p_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.log("> dynamic update");pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();pContactManager.fieldsToStorage();pMatriceManager.fieldsToStorage();pFicheManager.sync();pMiniManager.sync();!0===a?api.send({path:"subject/getFriends", -subject_id:pSubjectManager.subject_id.value},function(a){if(0!=a.ModuleError)return!1;lsi["import"]("p_friends",a.subjects);pMiniManager.storageToFields();pFicheManager.storageToFields();pMatriceManager.storageToFields();pContactManager.storageToFields()}):(pMiniManager.storageToFields(),pFicheManager.storageToFields(),pMatriceManager.storageToFields(),(c||b)&&pContactManager.storageToFields())},fDynamicUpdate=function(a){var b=a instanceof Element,c=b&&"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"== -a.tagName&&("f_nav-mini"==a.parentNode.id||"f_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"f_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.log("> dynamic update");fMiniManager.fieldsToStorage();fFicheManager.fieldsToStorage();fContactManager.fieldsToStorage();fMatriceManager.fieldsToStorage();fFicheManager.sync();fMiniManager.sync();!0===a?api.send({path:"subject/getFriends",subject_id:fSubjectManager.subject_id.value},function(a){if(0!=a.ModuleError)return!1;lsi["import"]("f_friends", -a.subjects);fMiniManager.storageToFields();fFicheManager.storageToFields();fMatriceManager.storageToFields();fContactManager.storageToFields()}):(fMiniManager.storageToFields(),fFicheManager.storageToFields(),fMatriceManager.storageToFields(),(c||b)&&fContactManager.storageToFields())};function testContactsPhone(){for(var a=0;45>a;a++)0==a%20?lsi.set("p_contacts",a,{uid:a,username:"contact-x"}):lsi.set("p_contacts",a,{uid:a,username:"contact-"+a})} +var pDynamicUpdate=function(a){var b=a instanceof Element,c=b&&"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"==a.tagName&&("p_nav-mini"==a.parentNode.id||"p_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"p_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.group("[phone] Dynamic Update");pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();pContactManager.fieldsToStorage();pMatriceManager.fieldsToStorage();pFicheManager.sync();pMiniManager.sync();!0===a?api.send({path:"subject/getFriends", +subject_id:pSubjectManager.subject_id.value},function(a){if(0!=a.ModuleError)return!1;lsi["import"]("p_friends",a.subjects);pMiniManager.storageToFields();pFicheManager.storageToFields();pMatriceManager.storageToFields();pContactManager.storageToFields()}):(pMiniManager.storageToFields(),pFicheManager.storageToFields(),pMatriceManager.storageToFields(),(c||b)&&pContactManager.storageToFields());console.groupEnd("[phone] Dynamic Update")},fDynamicUpdate=function(a){var b=a instanceof Element,c=b&& +"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"==a.tagName&&("f_nav-mini"==a.parentNode.id||"f_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"f_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.group("[facebook] Dynamic Update");fMiniManager.fieldsToStorage();fFicheManager.fieldsToStorage();fContactManager.fieldsToStorage();fMatriceManager.fieldsToStorage();fFicheManager.sync();fMiniManager.sync();!0===a?api.send({path:"subject/getFriends",subject_id:fSubjectManager.subject_id.value}, +function(a){if(0!=a.ModuleError)return!1;lsi["import"]("f_friends",a.subjects);fMiniManager.storageToFields();fFicheManager.storageToFields();fMatriceManager.storageToFields();fContactManager.storageToFields()}):(fMiniManager.storageToFields(),fFicheManager.storageToFields(),fMatriceManager.storageToFields(),(c||b)&&fContactManager.storageToFields());console.groupEnd("[facebook] Dynamic Update")}; +function testContactsPhone(){for(var a=0;45>a;a++)0==a%20?lsi.set("p_contacts",a,{uid:a,username:"contact-x"}):lsi.set("p_contacts",a,{uid:a,username:"contact-"+a})} function testRoutinePhone(a){var b=lsi["export"]("p_contacts"),c=lsi["export"]("p_mini-fiches"),g=lsi["export"]("p_fiches"),d=0;if(null!=a&&a)for(var f in c)isNaN(f)||(a="",null!=b[f]&&(a=b[f].username),c=$('#p_nav-mini [data-n="'+f+'"]'),c.click(),$("#unknown_min_p_"+f).checked=0==a.length,0==a.length?($("#sexeI_mini_p_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="age"]').value=d%19,$('input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="studies"]').value= 0,$("#reltype9_mini_p_"+f).checked=!0):(a=["H","F"][Math.floor(d%2)],$("#sexe"+a+"_mini_p_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="age"]').value=d%19,$('input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="studies"]').value=1+d%6,a=d%10,9==a?($("#reltype10_mini_p_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_mini_p_"+f).checked=!0,d++));for(var e in g)isNaN(e)||(c=$('#p_nav-fiche [data-n="'+ e+'"]'),c.click(),a=["H","F","I"][Math.floor(d%3)],$("#sexe"+a+"_p_"+e).checked=!0,$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 select[data-name="age"]').value=d%19,b="10 21 22 23 31 32 36 41 46 47 48 51 54 55 56 61 66 69 71 72 73 74 75 76 81 82".split(" "),b=b[d%b.length],$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 select[data-name="job"]').value=b,b=(d%12).toString(),1==b.length&&(b="0"+b),$('article.fiche-relation > input[data-name="uid"][value="'+