From ed2a102e6d1dfb1eb0d088f54375e59494a546b4 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 9 Oct 2016 17:44:06 +0200 Subject: [PATCH] =?UTF-8?q?Gestion=20de=20l'impossibilit=C3=A9=20de=20dupl?= =?UTF-8?q?iquer=20des=20contacts=20(en=20fonction=20de=20'username'=20ou?= =?UTF-8?q?=20'existing')=20[input/phone.contact]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/includes/input-phone-contact.js | 67 ++- js/includes/input-phone-matrice-min.js | 15 +- js/includes/input-phone-matrice.js | 177 +------ js/includes/min/input-phone-contact.js | 10 + js/lib/reset-min.js | 6 +- js/lib/reset.js | 38 +- view.php | 3 - view/js/input-min.js | 38 +- view/js/input.js | 618 +++++++++---------------- view/js/min/input.js | 38 ++ 10 files changed, 399 insertions(+), 611 deletions(-) create mode 100644 js/includes/min/input-phone-contact.js create mode 100644 view/js/min/input.js diff --git a/js/includes/input-phone-contact.js b/js/includes/input-phone-contact.js index ef58275..6509abe 100644 --- a/js/includes/input-phone-contact.js +++ b/js/includes/input-phone-contact.js @@ -15,14 +15,73 @@ inputPhoneContact.prototype = { }; +/* [2.1] Fiche CALL range +=========================================================*/ +inputPhoneContact.prototype.callRange = function(uid){ return uid >= 0 && uid < 20; }; -/* [2] Vérification des données d'un contact +/* [2.2] Fiche SMS range +=========================================================*/ +inputPhoneContact.prototype.smsRange = function(uid){ return uid >= 20 && uid < 40; }; + +/* [2.3] Si contact identique +=========================================================*/ +inputPhoneContact.prototype.sameContact = function(uid, username, existing, range){ + var contact = null, + limits = null; + + /* (1) Gestion de la tranche + ---------------------------------------------------------*/ + if( range === 'call' ) limits = { min: 0, max: 19 }; + else if( range === 'sms' ) limits = { min: 29, max: 39 }; + else if( range === 'mini' ) limits = { min: 40, max: Infinity }; + else + return false; + + + /* (2) Gestion de la vérification + ---------------------------------------------------------*/ + for( var a = limits.min, b = limits.max ; a < b ; a++ ){ + /* (1) On récupère le contact */ + contact = lsi.get('p_contacts', a); + console.log(uid, 'to', a, contact); + // si n'existe pas, on quitte + if( contact === null ) break; + + /* (2) si c'est le contact actuel, on passe au suivant */ + if( parseInt(contact.uid) === parseInt(uid) ) + continue; + + /* (3) On vérifie si le contact est identique (si défini par `username`) */ + if( contact.username.length > 0 && username === contact.username ) + return true; + + /* (4) On vérifie par référence */ + else if( username.length === 0 && existing === contact.existing ) + return true; + } + + return false; +}; + +/* [2.4] Vérification des données d'un contact =========================================================*/ inputPhoneContact.prototype.check = function(deflated){ - /* On retourne la validité du formulaire */ - return !isNaN(deflated.existing) || deflated.username.length > 0; + /* On vérifie la validité du formulaire */ + var isValid = !isNaN(deflated.existing) || deflated.username.length > 0; + if( !isValid ) return false; -} + /* On vérifie l'unicité du contact */ + var range = this.callRange(deflated.uid) ? 'call' : this.smsRange(deflated.uid) ? 'sms' : 'mini'; + + /* (1) Si contact "identique" dans la même tranche + ---------------------------------------------------------*/ + if( this.sameContact(deflated.uid, deflated.username, deflated.existing, range) ){ + Notification.error('Contact dupliqué', 'Le contact de nom '+deflated.username+' est déja utilisé'); + return false; + } + + return true; +}; /* [3] Gestion de l'enregistrement des formulaires de contact diff --git a/js/includes/input-phone-matrice-min.js b/js/includes/input-phone-matrice-min.js index a976d63..74da075 100644 --- a/js/includes/input-phone-matrice-min.js +++ b/js/includes/input-phone-matrice-min.js @@ -1,11 +1,6 @@ var inputPhoneMatrice=function(a){this.container=a};inputPhoneMatrice.prototype={container:this.container}; -inputPhoneMatrice.prototype.fieldsToStorage=function(){console.log("MATRICE: FIELDS TO STORAGE");var a=(new FormDeflater(this.container,["input"],["data-name"])).deflate();crc32(JSON.stringify(a));var d={},b;for(b in a)if(a[b]instanceof Array)for(var g in a[b])null==d[b]&&(d[b]=[]),d[b].push(parseInt(a[b][g]));else null!==a[b]&&(null==d[b]&&(d[b]=[]),d[b].push(parseInt(a[b])));lsi.set("p_matrice",0,d)}; -inputPhoneMatrice.prototype.storageToFields=function(){console.log("MATRICE: STORAGE TO FIELDS");var a=lsi["export"]("p_fiches"),d=lsi.get("p_matrice",0),b=lsi["export"]("p_contacts"),g=[],f;for(f in a)-1==g.indexOf(a[f].contact)&&g.push(a[f].contact);a="";for(f=0;f";0',a+=e.username,a+=""):a+="";for(var c=0;c",a+='', -a+=h.username,a+=""):c",a+=""):a+=""}a+=""}this.container.innerHTML=a+"
"}; -inputPhoneMatrice.prototype.attach=function(){console.log("MATRICE: ATTACH");lsi.createDataset("p_matrice");this.storageToFields();var a=this;this.container.addEventListener("click",function(d){a.fieldsToStorage();setTimeout(function(){a.storageToFields()},500)},!1)}; -inputPhoneMatrice.prototype.parseGrid=function(){var a=$$(".matrice-panel input[data-name][value]"),d;for(d in a)if(a[d]instanceof Element){var b=a[d].getData("name"),g=a[d].value;this.sGrid[b]instanceof Array||(this.sGrid[b]=[]);this.sGrid[b][g]=a[d]}}; -inputPhoneMatrice.prototype.snake=function(){this.sVelocity=[0,0];this.sLength=2;this.sStack=[];this.sKeys=[];this.sGrid=[];this.sRoutine=this.sTarget=null;var a=this;this.parseGrid();var d=parseInt(this.sGrid.length/2),b=parseInt(this.sGrid[d].length/2);this.sStack.push(this.sGrid[d][b]);for(var d=!1,g,f;!d;)g=Math.floor(Math.random()*this.sGrid.length),f=Math.floor(Math.random()*this.sGrid[g].length),d=(d=null!=this.sGrid[g]&&null!=this.sGrid[g][f])&&-1==this.sStack.indexOf(this.sGrid[g][f]);this.sTarget= -this.sGrid[g][f];document.body.addEventListener("keydown",function(e){-1<[37,38,39,40].indexOf(e.keyCode)&&-1==a.sKeys.indexOf(e.keyCode)&&a.sKeys.push(e.keyCode)},!1);document.body.addEventListener("keyup",function(e){var c=a.sKeys.indexOf(e.keyCode);-1<[37,38,39,40].indexOf(e.keyCode)&&-1e&&(e=a.sGrid[c].length-1);c=(c+a.sVelocity[1])%a.sGrid.length;0>=c&&(c=e+1);if(null==a.sGrid[c]||null==a.sGrid[c][e])c=a.sGrid.length-1;if(null!=a.sGrid[c]&&null!=a.sGrid[c][e]){if(a.sGrid[c][e].checked)if(a.sGrid[c][e].id==a.sTarget.id){a.sLength++; -for(var d=!1,b,f;!d;)b=Math.floor(Math.random()*a.sGrid.length),f=Math.floor(Math.random()*a.sGrid[b].length),d=(d=null!=a.sGrid[b]&&null!=a.sGrid[b][f])&&-1==a.sStack.indexOf(a.sGrid[b][f]);a.sTarget=a.sGrid[b][f]}else a.sStack[a.sStack.length-1].id!=a.sGrid[c][e].id&&(console.log(a.sStack[a.sStack.length-1].id,a.sGrid[c][e].id),alert("vous avez perdu! Score: "+(a.sLength-2)),clearInterval(a.sRoutine));a.sStack.push(a.sGrid[c][e])}var c=[],g;for(g in a.sStack)b=a.sStack[g].getData("name"),f=a.sStack[g].value, -null==c[b]&&(c[b]=[]),c[b].push(parseInt(f));null!=a.sTarget&&(b=a.sTarget.getData("name"),f=a.sTarget.value,null==c[b]&&(c[b]=[]),c[b].push(parseInt(f)));lsi.set("p_matrice",0,c);a.storageToFields();a.parseGrid();g=a.sStack.length;g>=a.sLength&&(a.sStack=a.sStack.slice(1+g-a.sLength));document.location="#snake"},200)}; +inputPhoneMatrice.prototype.fieldsToStorage=function(){console.log("MATRICE: FIELDS TO STORAGE");var a=(new FormDeflater(this.container,["input"],["data-name"])).deflate();crc32(JSON.stringify(a));var 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)}; +inputPhoneMatrice.prototype.storageToFields=function(){console.log("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+"
"}; +inputPhoneMatrice.prototype.attach=function(){console.log("MATRICE: ATTACH");lsi.createDataset("p_matrice");this.storageToFields();var a=this;this.container.addEventListener("click",function(c){a.fieldsToStorage();setTimeout(function(){a.storageToFields()},500)},!1)}; +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/input-phone-matrice.js b/js/includes/input-phone-matrice.js index 2824776..bf72826 100644 --- a/js/includes/input-phone-matrice.js +++ b/js/includes/input-phone-matrice.js @@ -37,14 +37,14 @@ inputPhoneMatrice.prototype.fieldsToStorage = function(){ if( deflated[i] instanceof Array ){ // Pour chacune des différentes relations, on ajoute si TRUE - for( var a in deflated[i] ){ + for( var O in deflated[i] ){ if( obj[i] == null ) obj[i] = []; - obj[i].push( parseInt(deflated[i][a]) ); + obj[i].push( parseInt(deflated[i][O]) ); } - // {2} Si il n'y a qu'un sujet // + // {2} Si il n'y O qu'un sujet // }else if( deflated[i] !== null ){ if( obj[i] == null ) obj[i] = []; @@ -55,7 +55,7 @@ inputPhoneMatrice.prototype.fieldsToStorage = function(){ lsi.set( 'p_matrice', 0, obj ); // Objet de la forme // - // idA: [idV, idW], # A connait V et W (et réciproquement) + // idA: [idV, idW], # O connait V et W (et réciproquement) // idB: [idX, idY], # B connait X et Y (et réciproquement) // ... // @@ -100,13 +100,13 @@ inputPhoneMatrice.prototype.storageToFields = function(){ var matrice_html = ""; // {1} Pour chaque ligne // - for( var A = 0 ; A < contacts.length ; A++ ){ - var conA = contactData[A]; + for( var O = 0 ; O < contacts.length ; O++ ){ + var conA = contactData[O]; matrice_html += ''; - if( A > 0 ){ // Noms sur la première ligne (abscisses) + if( O > 0 ){ // Noms sur la première ligne (abscisses) matrice_html += ''; @@ -118,18 +118,18 @@ inputPhoneMatrice.prototype.storageToFields = function(){ var conB = contactData[B]; // {3} Première colonne -> Intitulé des ordonnées // - if( A == 0 ){ + if( O == 0 ){ matrice_html += '
'; matrice_html += conA.username; matrice_html += ''; matrice_html += ''; matrice_html += conB.username; matrice_html += ''; // {4} Valeurs des relations (boutons) // - }else if( B < A ){ + }else if( B < O ){ matrice_html += ""; matrice_html += " -1 ) + if( matriceData[O] != null && matriceData[O].indexOf(B) > -1 ) matrice_html += " checked"; matrice_html += " >"; matrice_html += ""; @@ -201,160 +201,3 @@ inputPhoneMatrice.prototype.parseGrid = function(){ } }; - -inputPhoneMatrice.prototype.snake = function(){ - - /* [0] On écrit les fonctions principales - =========================================================*/ - /* (1) ATTRIBUTS */ - this.sVelocity = [0, 0]; - this.sLength = 2; - this.sStack = []; - this.sKeys = []; - this.sGrid = []; - this.sTarget = null; - this.sRoutine = null; - var ptr = this; - - /* (2) ON RECUPERE LA MATRICE D'ELEMENTS */ - this.parseGrid(); - - /* (2) On positionne le joueur au milieu */ - var midcol = parseInt( this.sGrid.length / 2 ); - var midrow = parseInt( this.sGrid[midcol].length / 2 ); - this.sStack.push( this.sGrid[midcol][midrow] ); - - /* (3) On positionne la cible */ - var tool = { correct: false } - while( !tool.correct ){ - tool.col = Math.floor( Math.random()*this.sGrid.length ); - tool.row = Math.floor( Math.random()*this.sGrid[tool.col].length ); - tool.correct = this.sGrid[tool.col] != null && this.sGrid[tool.col][tool.row] != null; - tool.correct = tool.correct && this.sStack.indexOf(this.sGrid[tool.col][tool.row]) == -1; - } - this.sTarget = this.sGrid[tool.col][tool.row]; - - /* [1] Gestion des handlers - =========================================================*/ - /* (1) Pression sur touche */ - document.body.addEventListener('keydown', function(e){ - // Si une fleche, on l'enregistre si elle ne l'est pas déja - if( [37, 38, 39, 40].indexOf(e.keyCode) > -1 && ptr.sKeys.indexOf(e.keyCode) == -1 ) - ptr.sKeys.push(e.keyCode); - }, false); - - /* (2) Relachement touche */ - document.body.addEventListener('keyup', function(e){ - var index = ptr.sKeys.indexOf(e.keyCode); - // Si une fleche, on la retire si elle ne l'est pas déja - if( [37, 38, 39, 40].indexOf(e.keyCode) > -1 && index > -1 ) - ptr.sKeys.splice(index); - }, false); - - /* [2] Lancement de la boucle de jeu - =========================================================*/ - this.sRoutine = setInterval(function(){ - /* (1) Gestion de la vélocité en fonction des touches */ - if( ptr.sKeys.indexOf(37) > -1 ) // Vers la gauche - ptr.sVelocity[0] = -1; - else if( ptr.sKeys.indexOf(39) > -1 ) // Vers la droite - ptr.sVelocity[0] = 1; - - if( ptr.sKeys.indexOf(38) > -1 ) // Vers le haut - ptr.sVelocity[1] = -1; - else if( ptr.sKeys.indexOf(40) > -1 ) // Vers le bas - ptr.sVelocity[1] = 1; - else if( ptr.sVelocity[0] != 0 ) - ptr.sVelocity[1] = 0; - - if( ptr.sKeys.indexOf(37)+ptr.sKeys.indexOf(39) == -2 && ptr.sVelocity[1] != 0 ) - ptr.sVelocity[0] = 0; - - // Dernier element de la pile - var lastStack = ptr.sStack[ ptr.sStack.length-1 ]; - var lastcol = parseInt( lastStack.getData('name') ); - var lastrow = parseInt( lastStack.value ); - - /* (2) Gestion du mouvement */ - lastrow = (lastrow + ptr.sVelocity[0]) % ptr.sGrid[lastcol].length; - if( lastrow < 0 ) lastrow = ptr.sGrid[lastcol].length - 1; - - lastcol = (lastcol + ptr.sVelocity[1]) % ptr.sGrid.length; - if( lastcol <= 0 ) lastcol = lastrow+1; - if( ptr.sGrid[lastcol] == null || ptr.sGrid[lastcol][lastrow] == null ) - lastcol = ptr.sGrid.length-1; - - - - if( ptr.sGrid[lastcol] != null && ptr.sGrid[lastcol][lastrow] != null ){ - - /* (1) Si la case est déja prisse */ - if( ptr.sGrid[lastcol][lastrow].checked ){ - /* (2) Si on c'est la cible */ - if( ptr.sGrid[lastcol][lastrow].id == ptr.sTarget.id ){ - ptr.sLength++; - - // On repositionne la cible - var tool = { correct: false } - while( !tool.correct ){ - tool.col = Math.floor( Math.random()*ptr.sGrid.length ); - tool.row = Math.floor( Math.random()*ptr.sGrid[tool.col].length ); - tool.correct = ptr.sGrid[tool.col] != null && ptr.sGrid[tool.col][tool.row] != null; - tool.correct = tool.correct && ptr.sStack.indexOf(ptr.sGrid[tool.col][tool.row]) == -1; - } - ptr.sTarget = ptr.sGrid[tool.col][tool.row]; - } - - /* (3) Si on se mord la queue (mais pas la tete)*/ - else if( ptr.sStack[ptr.sStack.length-1].id != ptr.sGrid[lastcol][lastrow].id ){ - console.log(ptr.sStack[ptr.sStack.length-1].id, ptr.sGrid[lastcol][lastrow].id ); - alert('vous avez perdu! Score: '+(ptr.sLength-2) ); - clearInterval(ptr.sRoutine); - } - } - ptr.sStack.push( ptr.sGrid[lastcol][lastrow] ); - } - - - - /* (3) On affiche que les cases de la pile */ - var matrix = []; - for( var i in ptr.sStack ){ - var col = ptr.sStack[i].getData('name'); - var row = ptr.sStack[i].value; - - if( matrix[col] == null ) - matrix[col] = []; - - matrix[col].push( parseInt(row) ); - } - - /* (4) On ajoute la cible */ - if( ptr.sTarget != null ){ - var col = ptr.sTarget.getData('name'); - var row = ptr.sTarget.value; - - if( matrix[col] == null ) - matrix[col] = []; - - matrix[col].push( parseInt(row) ); - } - - - /* (5) Enregistrement du modèle */ - lsi.set('p_matrice', 0, matrix); - ptr.storageToFields(); - ptr.parseGrid(); - - - /* (6) On vide les cases dépassant sLength */ - var len = ptr.sStack.length; - - if( len >= ptr.sLength ) - ptr.sStack = ptr.sStack.slice( 1+len-ptr.sLength ); - - document.location ='#snake'; - - }, 200); - -}; diff --git a/js/includes/min/input-phone-contact.js b/js/includes/min/input-phone-contact.js new file mode 100644 index 0000000..190b5e5 --- /dev/null +++ b/js/includes/min/input-phone-contact.js @@ -0,0 +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="'+ +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.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)}; diff --git a/js/lib/reset-min.js b/js/lib/reset-min.js index f9d33f0..ac42a96 100644 --- a/js/lib/reset-min.js +++ b/js/lib/reset-min.js @@ -1,4 +1,4 @@ function $(a){return document.querySelector(a)}function $$(a){return document.querySelectorAll(a)}Element.prototype.getData=function(a){return"undefined"==typeof this.dataset?!1:this.dataset.hasOwnProperty(a)?this.dataset[a]:!1};Element.prototype.addClass=function(a){var b=this.className.split(" ");-1 EXCLUSION, SINON -> INCLUSION /* (0) On formatte les arguments */ jsResource = typeof jsResource === 'string' ? jsResource : null; @@ -108,24 +110,46 @@ function include(jsResource, callback, action){ // action=true -> EXCLUSION, SIN /* (1) Gestion de l'inclusion */ if( !action ){ + + var index = _includes.indexOf(jsResource); + // Si le fichier est déja inclus, on lance le callback - if( _includes.indexOf(jsResource) > -1 ){ + if( index > -1 ){ + + // Si le fichier est déja chargé uniquement, on relance callback(); return true; } // On crée l'élément dans le tag var tag = document.createElement('script'); - tag.type = 'text/javascript'; - tag.src = jsResource; - document.head.appendChild( tag ); // On ajoute la ressource et le tag à la liste - _includes.push(jsResource); - _includeTags.push(tag); + index = _includes.length; + _includes[index] = jsResource; + _includeLoad[index] = false; + _includeTags[index] = tag; + // On définit le callback - tag.onload = (function(){ return function(){ callback(); } })(); + tag.onload = (function(v){ + + var i = v; + + return function(){ + + _includeLoad[i] = true; + callback(); + }; + + })(index); + + // Attributs de l'élément + tag.setAttribute('src', jsResource); + tag.setAttribute('type', 'text/javascript'); + document.head.appendChild( tag ); + + return true; /* (2) Gestion de l'exclusion */ diff --git a/view.php b/view.php index ec5ade8..abd4997 100755 --- a/view.php +++ b/view.php @@ -35,8 +35,6 @@ - --> - @@ -120,7 +118,6 @@ - diff --git a/view/js/input-min.js b/view/js/input-min.js index 993c73e..6a5e64e 100644 --- a/view/js/input-min.js +++ b/view/js/input-min.js @@ -1,21 +1,17 @@ var sField,sSubmit,sList,pSubjectManager=null,pContactManager=null,pMiniManager=null,pFicheManager=null,pMatriceManager=null,fSubjectManager=null,fContactManager=null,fMiniManager=null,fFicheManager=null,fMatriceManager=null;sField=$("#search-field");sSubmit=$("#search-subject");sList=$('section[data-sublink="survey"] ul[data-list]'); 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+="
  • ",c+="
    SUJET
    ",c+="
    ",c+="
    "+ a.results[g].name+"
    ",c+="
    "+a.results[g].creation+"
    ",c+="
    ",c+="
    ",c+="
    ",c+="
    ",c+="
  • ";sList.innerHTML=c})}; -sSubmit.addEventListener("click",tmpSubjectSearchListener,!1);sField.addEventListener("keypress",function(a){13===a.keyCode&&tmpSubjectSearchListener(a)},!1);pMatriceManager=pFicheManager=pMiniManager=pContactManager=pSubjectManager=null; -function pDynamicUpdate(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())}fMatriceManager=fFicheManager=fMiniManager=fContactManager=fSubjectManager=null; -function fDynamicUpdate(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())} -include("/js/includes/input-phone-subject-min.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",function(){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);var a=new ShortcutManager,b=!1;a.append("s+n+a+k+e",function(){b||(b=!0,pMatriceManager.snake())});a.listen();$('[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,d;for(d in a)if(!isNaN(d)&&(b++, -!a[d].valid))return Notification.warning("Attention","La fiche rapide "+b+" est incompl\u00e8te et/ou incorrecte"),!1;a=lsi["export"]("p_fiches");for(d in a)if(!a[d].valid)return Notification.warning("Attention","La fiche compl\u00e8te "+(parseInt(d)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;d={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(d,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-facebook-subject-min.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-min.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); +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)})})})}); +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(); Notification.success("OK","Les donn\u00e9es ont \u00e9t\u00e9 supprim\u00e9es")},!1);$('[data-sublink="facebook"] #f_export-all').addEventListener("click",function(a){Notification.info("INFORMATION","Lancement du t\u00e9l\u00e9chargement de la sauvegarde");a={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]};var b=$('[data-sublink="facebook"] #f_download-target');b.download= @@ -23,15 +19,19 @@ Notification.success("OK","Les donn\u00e9es ont \u00e9t\u00e9 supprim\u00e9es")} api.send(a,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("Erreur",a.ModuleError),!1;lsi.set("f_subject",0,a.local_data.subject);lsi["import"]("f_contacts",a.local_data.contacts);lsi["import"]("f_mini-fiches",a.local_data.mini);lsi["import"]("f_fiches",a.local_data.fiches);lsi.set("f_matrice",0,a.local_data.matrice);fSubjectManager.storageToFields();fContactManager.storageToFields();fMatriceManager.storageToFields();fDynamicUpdate(!0)})},!1);$('[data-sublink="facebook"] #f_submit-all').addEventListener("click", 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)})})})})});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 testContactsFacebook(){for(var a=0;45>a;a++)0==a%20?lsi.set("f_contacts",a,{uid:a,username:"contact-x"}):lsi.set("f_contacts",a,{uid:a,username:"contact-"+a})} +!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})} 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="'+ e+'"] ~ h5 select[data-name="studies"]').value=b,a=d%9,8==a?($("#reltype10_p_"+e).checked=!0,$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_p_"+e).checked=!0,$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="city"]').value=(10+d).toString(),$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="cp"]').value=(1E4+d).toString(),$('article.fiche-relation > input[data-name="uid"][value="'+ e+'"] ~ h5 input[data-name="quartier"]').value=d,$("#loc"+["A","B","C","D"][Math.floor(d%4)]+"_p_"+e).checked=!0,b=$$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="duration"]'),b[0].value=d.toString(),b[1].value=1+d.toString(),b=d%14,$("article.fiche-relation #contexte"+b+"_p_"+e).checked=!0,g=$$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="contextSpecial"]'),11==b&&(g[0].value="internet"),12==b&&(g[1].value="association"), -13==b&&(g[2].value="autre"),d++)} -function testRoutineFacebook(a){var b=lsi["export"]("f_contacts"),c=lsi["export"]("f_mini-fiches"),g=lsi["export"]("f_fiches"),d=0;if(null!=a&&a)for(var f in c)isNaN(f)||(a="",null!=b[f]&&(a=b[f].username),c=$('#f_nav-mini [data-n="'+f+'"]'),c.click(),$("#unknown_min_f_"+f).checked=0==a.length,0==a.length?($("#sexeI_mini_f_"+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_f_"+f).checked=!0):(a=["H","F"][Math.floor(d%2)],$("#sexe"+a+"_mini_f_"+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_f_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_mini_f_"+f).checked=!0,d++));for(var e in g)isNaN(e)||(c=$('#f_nav-fiche [data-n="'+ +13==b&&(g[2].value="autre"),d++)}function testContactsFacebook(){for(var a=0;45>a;a++)0==a%20?lsi.set("f_contacts",a,{uid:a,username:"contact-x"}):lsi.set("f_contacts",a,{uid:a,username:"contact-"+a})} +function testRoutineFacebook(a){var b=lsi["export"]("f_contacts"),c=lsi["export"]("f_mini-fiches"),g=lsi["export"]("f_fiches"),d=0;if(null!=a&&a)for(var f in c)isNaN(f)||(a="",null!=b[f]&&(a=b[f].username),c=$('#f_nav-mini [data-n="'+f+'"]'),c.click(),$("#unknown_min_f_"+f).checked=0==a.length,0==a.length?($("#sexeI_mini_f_"+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_f_"+f).checked=!0):(a=["H","F"][Math.floor(d%2)],$("#sexe"+a+"_mini_f_"+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_f_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_mini_f_"+f).checked=!0,d++));for(var e in g)isNaN(e)||(c=$('#f_nav-fiche [data-n="'+ e+'"]'),c.click(),a=["H","F","I"][Math.floor(d%3)],$("#sexe"+a+"_f_"+e).checked=!0,$('section[data-sublink="facebook"] 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],$('section[data-sublink="facebook"] 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),$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 select[data-name="studies"]').value=b,a=d%9,8==a?($("#reltype10_f_"+e).checked=!0,$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_f_"+e).checked=!0,$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="city"]').value= (10+d).toString(),$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="cp"]').value=(1E4+d).toString(),$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="quartier"]').value=d,$("#loc"+["A","B","C","D"][Math.floor(d%4)]+"_f_"+e).checked=!0,b=$$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="duration"]'), diff --git a/view/js/input.js b/view/js/input.js index f74286b..24a3d01 100644 --- a/view/js/input.js +++ b/view/js/input.js @@ -12,14 +12,18 @@ var sField, sSubmit, sList, fMatriceManager = null; - /*=========================================================*/ /*=========== Gestion de la recherche de sujet ============*/ /*=========================================================*/ + /* (1) On récupère les éléments utiles + ---------------------------------------------------------*/ sField = $('#search-field'); sSubmit = $('#search-subject'); sList = $('section[data-sublink="survey"] ul[data-list]'); + + /* (2) Routine de recherche + ---------------------------------------------------------*/ var tmpSubjectSearchListener = function(e){ /* (1) On construit la requête */ @@ -42,35 +46,39 @@ var sField, sSubmit, sList, console.log(response); /* (3) On remplit la liste des résultats */ - var htmlContent = ''; + var htmlContent = []; for( var id in response.results ){ - htmlContent += "
  • "; + htmlContent.push("
  • "); - htmlContent += "
    SUJET
    "; + htmlContent.push("
    SUJET
    "); - htmlContent += "
    "; + htmlContent.push("
    "); - htmlContent += "
    "+response.results[id].name+"
    "; + htmlContent.push("
    "+response.results[id].name+"
    "); - htmlContent += "
    "+response.results[id].creation+"
    "; + htmlContent.push("
    "+response.results[id].creation+"
    "); - htmlContent += "
    "; - htmlContent += "
    "; + htmlContent.push("
    "); + htmlContent.push("
    "); - htmlContent += "
    "; - htmlContent += "
    "; + htmlContent.push("
    "); + htmlContent.push("
    "); - htmlContent += "
  • "; + htmlContent.push( ""); } - sList.innerHTML = htmlContent; + 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); @@ -82,200 +90,21 @@ var sField, sSubmit, sList, - - - - /* [1] Initialisation des utilitaires et variables PHONE - =========================================================* - /* (1) Initialisation des managers */ - pSubjectManager = null; - pContactManager = null; - pMiniManager = null; - pFicheManager = null; - pMatriceManager = null; - - - /* (2) Fonctions utiles */ - function pDynamicUpdate(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'; - - // Si erreur, on retourne une erreur - if( !isSaveButton && !isNavButton && !isNavContact && target !== true ) - return false; - - - console.log('> dynamic update'); - - /* (1) On enregistre les MINI fiches relation */ - pMiniManager.fieldsToStorage(); - - /* (2) On enregister les FICHES relation */ - pFicheManager.fieldsToStorage(); - - /* (3) On enregistre les CONTACTS */ - pContactManager.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(); - - /* (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 ){ - - 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{ - - /* (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(); - - } - - } - - - - - /* [2] Initialisation des utilitaires et variables FACEBEOOK - =========================================================* - /* (1) Initialisation des managers */ - fSubjectManager = null; - fContactManager = null; - fMiniManager = null; - fFicheManager = null; - fMatriceManager = null; - - - - /* (2) Fonctions utiles */ - function fDynamicUpdate(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'; - - // Si erreur, on retourne une erreur - if( !isSaveButton && !isNavButton && !isNavContact && target !== true ) - return false; - - console.log('> dynamic update'); - - /* (1) On enregistre les MINI fiches relation */ - fMiniManager.fieldsToStorage(); - - /* (2) On enregister les FICHES relation */ - fFicheManager.fieldsToStorage(); - - /* (3) On enregistre les CONTACTS */ - fContactManager.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(); - - /* (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 ){ - - 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{ - - /* (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(); - } - - } - - - - - - - - /*=========================================================*/ /*========== Gestion du formulaire téléphonique ===========*/ /*=========================================================*/ - include('/js/includes/input-phone-subject-min.js', function(){ - //TODO: Remettre version min - include('/js/includes/input-phone-contact.js', function(){ - //TODO: Remettre version min - include('/js/includes/input-phone-mini.js', function(){ - //TODO: Remettre version min - include('/js/includes/input-phone-fiche.js', function(){ - include('/js/includes/input-phone-matrice.js', function(){ + 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 ---------------------------------------------------------*/ @@ -290,9 +119,6 @@ var sField, sSubmit, sList, pSubjectManager.attach(pDynamicUpdate); - - - /* (2) Gestion des formulaires de contact ---------------------------------------------------------*/ /* (1) On crée une instance du gestionnaire des CONTACTS */ @@ -305,7 +131,6 @@ var sField, sSubmit, sList, pContactManager.attach(pDynamicUpdate); - /* (3) Gestion des mini fiches relation ---------------------------------------------------------*/ /* (1) On crée une instance du gestionnaire des mini fiches relation */ @@ -341,157 +166,6 @@ var sField, sSubmit, sList, pMatriceManager.attach(pDynamicUpdate); - - // Listener pour snake - var smgr = new ShortcutManager(); - var snakeAlready = false; - smgr.append('s+n+a+k+e', function(){ if( !snakeAlready ){ snakeAlready = true; pMatriceManager.snake(); } }); - smgr.listen(); - - - - - - - - - - - - /* (6) Gestion de l'import du fichier - ---------------------------------------------------------*/ - // On vide l'input de type 'file' quand on clique - // $('[data-sublink="phone"] input#p_call_log-import[type="file"]').addEventListener('click', function(e){ - // e.target.value = null; - // }, false); - - // Gestion de l'upload - // $('[data-sublink="phone"] input#p_call_log-import[type="file"]').addEventListener('change', function(e){ - // /* (1) On rédige la requête */ - // var request = { - // path: 'upload/call_log', - // file: e.target.files[0] - // }; - // - // /* (2) On effectue l'upload (import) */ - // api.send(request, function(response){ - // console.log(response); - // - // var loadingNotif = null; - // - // // Si erreur, on quitte - // if( response.ModuleError != 0 ){ - // if( response.ModuleError == 9 ) - // Notification.error('Erreur', 'Il est nécessaire de saisir les informations du sujet avant d\'exporter son journal d\'appel'); - // else - // Notification.error('Erreur', response.ModuleError); - // return; - // }else - // loadingNotif = Notification.info('Info', 'Chargement du journal d\'appel'); - // - // - // /* (3) On enregistre l'identifiant temporaire du sujet */ - // pSubjectManager.tmp_id.value = response.tmp_id; - // pSubjectManager.fieldsToStorage(); - // pSubjectManager.storageToFields(); - // - // - // - // /* (3) On crée les 10 contacts les plus APPELÉS */ - // for( var i = 0 ; i < response.call.length ; i++ ){ - // - // // Données du cnotact - // var conData = response.directory[ response.call[i] ]; - // - // lsi.set('p_contacts', conData.id, { - // uid: conData.id, - // number: conData.number, - // username: conData.name, // nom - // countsms: conData.sms, // Nombre de sms - // countcall: conData.call, // Nombre d'appels - // call: i, // classement dans le top 10 des APPELS - // sms: -1 // classement dans le top 10 des SMS - // }); - // - // } - // - // - // /* (5) On crée les 10 contacts les plus SMSÉS */ - // for( var i = 0 ; i < response.sms.length ; i++ ){ - // - // // Données du cnotact - // var conData = response.directory[response.sms[i]]; - // - // // Si le contact existe déja, on lui ajoute juste 'sms' - // // Si le contact est déja dans le top 10 des appels, on lui ajoute juste le classement dans le top 10 des SMS - // var callIndex = response.call.indexOf(response.sms[i]); - // if( callIndex > -1 ){ - // var created = lsi.get('p_contacts', conData.id); - // created.sms = i; - // lsi.set('p_contacts', conData.id, created); - // continue; - // } - // - // - // lsi.set('p_contacts', conData.id, { - // uid: conData.id, - // number: conData.number, - // username: conData.name, // nom - // countsms: conData.sms, // Nombre de sms - // countcall: conData.call, // Nombre d'appels - // call: -1, // classement dans le top 10 des APPELS - // sms: i // classement dans le top 10 des SMS - // }); - // - // } - // - // /* (7) Pour chaque contact qui n'est pas dans un top 10, on l'ajoute */ - // for( var id in response.directory ){ - // - // id = parseInt(id); - // - // // Si dans top 10 des APPELS, on ne l'ajoute pas - // if( response.call.indexOf(id) > -1 ) - // continue; - // - // // Si dans top 10 des SMS, on ne l'ajoute pas - // if( response.sms.indexOf(id) > -1 ) - // continue; - // - // // On récupère les données du contact - // var conData = response.directory[id]; - // - // - // lsi.set('p_contacts', conData.id, { - // uid: conData.id, - // number: conData.number, - // username: conData.name, // nom - // countsms: conData.sms, // Nombre de sms - // countcall: conData.call, // Nombre d'appels - // call: -1, - // sms: -1 - // }); - // } - // - // /* (8) On met à jour l'affichage */ - // pContactManager.storageToFields(); - // pDynamicUpdate(true); - // - // - // /* (9) On notifie la fin du chargement */ - // // On retire la notification de chargement - // if( loadingNotif != null ) - // loadingNotif.click(); - // - // // On notifie que tout s'est bien passé - // Notification.success('OK', 'Chargement terminé'); - // - // }); - // - // }, false); - - - /* (7) Gestion de l'effacement des données locales ---------------------------------------------------------*/ $('[data-sublink="phone"] #p_clear-all').addEventListener('click', function(e){ @@ -515,7 +189,6 @@ var sField, sSubmit, sList, }, false); - /* (8) Gestion de l'export des données locales ---------------------------------------------------------*/ $('[data-sublink="phone"] #p_export-all').addEventListener('click', function(e){ @@ -541,8 +214,6 @@ var sField, sSubmit, sList, }, false); - - /* (9) Gestion de l'import des données locales ---------------------------------------------------------*/ // Le bouton lance l' file @@ -556,6 +227,7 @@ var sField, sSubmit, sList, 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 */ @@ -592,8 +264,6 @@ var sField, sSubmit, sList, }, false); - - /* (10) Gestion de la validation et de l'envoi des données ---------------------------------------------------------*/ $('[data-sublink="phone"] #p_submit-all').addEventListener('click', function(e){ @@ -665,17 +335,18 @@ var sField, sSubmit, sList, }, 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); + }); + }); + }); + }); @@ -684,14 +355,14 @@ var sField, sSubmit, sList, /*=========================================================*/ /*=========== Gestion du formulaire facebook ==============*/ /*=========================================================*/ - include('/js/includes/input-facebook-subject-min.js', function(){ + 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-min.js', function(){ + include('/js/includes/input-facebook-matrice.js', function(){ /* (1) Gestion du formulaire du sujet @@ -706,9 +377,6 @@ var sField, sSubmit, sList, fSubjectManager.attach(fDynamicUpdate); - - - /* (2) Gestion des formulaires de contact ---------------------------------------------------------*/ /* (1) On crée une instance du gestionnaire des CONTACTS */ @@ -721,7 +389,6 @@ var sField, sSubmit, sList, fContactManager.attach(fDynamicUpdate); - /* (3) Gestion des mini fiches relation ---------------------------------------------------------*/ /* (1) On crée une instance du gestionnaire des mini fiches relation */ @@ -757,9 +424,6 @@ var sField, sSubmit, sList, fMatriceManager.attach(fDynamicUpdate); - - - /* (7) Gestion de l'effacement des données locales ---------------------------------------------------------*/ $('[data-sublink="facebook"] #f_clear-all').addEventListener('click', function(e){ @@ -809,8 +473,6 @@ var sField, sSubmit, sList, }, false); - - /* (9) Gestion de l'import des données locales ---------------------------------------------------------*/ // Le bouton lance l' file @@ -824,6 +486,7 @@ var sField, sSubmit, sList, 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 */ @@ -860,8 +523,6 @@ var sField, sSubmit, sList, }, false); - - /* (10) Gestion de la validation et de l'envoi des données ---------------------------------------------------------*/ $('[data-sublink="facebook"] #f_submit-all').addEventListener('click', function(e){ @@ -947,27 +608,161 @@ var sField, sSubmit, sList, - function testContactsPhone(){ - 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 }); + /* [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'; + + // Si erreur, on retourne une erreur + if( !isSaveButton && !isNavButton && !isNavContact && target !== true ) + return false; + + + console.log('> dynamic update'); + + /* (1) On enregistre les MINI fiches relation */ + pMiniManager.fieldsToStorage(); + + /* (2) On enregister les FICHES relation */ + pFicheManager.fieldsToStorage(); + + /* (3) On enregistre les CONTACTS */ + pContactManager.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(); + + /* (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 ){ + + 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{ + + /* (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(); + } + }; - function testContactsFacebook(){ - for( var i = 0 ; i < 45 ; i++ ){ + /* [2] Initialisation des utilitaires et variables FACEBEOOK + =========================================================* + /* (2) Fonctions utiles */ + var fDynamicUpdate = function(target){ - 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 }); + + /* (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; + + console.log('> dynamic update'); + + /* (1) On enregistre les MINI fiches relation */ + fMiniManager.fieldsToStorage(); + + /* (2) On enregister les FICHES relation */ + fFicheManager.fieldsToStorage(); + + /* (3) On enregistre les CONTACTS */ + fContactManager.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(); + + /* (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 ){ + + 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{ + + /* (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(); } + }; @@ -977,9 +772,25 @@ var sField, sSubmit, sList, + + + + + /*=========================================================*/ /*============= Routine de test CELLULAIRE ================*/ /*=========================================================*/ + function testContactsPhone(){ + + 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 }); + } + }; + function testRoutinePhone(doMini){ /* [0] Récupération des données @@ -1160,6 +971,17 @@ var sField, sSubmit, sList, /*=========================================================*/ /*============== Routine de test FACEBOOK =================*/ /*=========================================================*/ + function testContactsFacebook(){ + + 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 diff --git a/view/js/min/input.js b/view/js/min/input.js new file mode 100644 index 0000000..fb0497c --- /dev/null +++ b/view/js/min/input.js @@ -0,0 +1,38 @@ +var sField,sSubmit,sList,pSubjectManager=null,pContactManager=null,pMiniManager=null,pFicheManager=null,pMatriceManager=null,fSubjectManager=null,fContactManager=null,fMiniManager=null,fFicheManager=null,fMatriceManager=null;sField=$("#search-field");sSubmit=$("#search-subject");sList=$('section[data-sublink="survey"] ul[data-list]'); +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)})})})}); +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(); +Notification.success("OK","Les donn\u00e9es ont \u00e9t\u00e9 supprim\u00e9es")},!1);$('[data-sublink="facebook"] #f_export-all').addEventListener("click",function(a){Notification.info("INFORMATION","Lancement du t\u00e9l\u00e9chargement de la sauvegarde");a={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]};var b=$('[data-sublink="facebook"] #f_download-target');b.download= +"local-facebook-data.json";b.href="data:application/octet-stream,"+encodeURIComponent(JSON.stringify(a));b.click()},!1);$('[data-sublink="facebook"] #f_import-all').addEventListener("click",function(a){$('[data-sublink="facebook"] #f_local-upload').click()},!1);$('[data-sublink="facebook"] #f_local-upload').addEventListener("click",function(a){a.target.value=null},!1);$('[data-sublink="facebook"] #f_local-upload').addEventListener("change",function(a){a={path:"upload/local_data",file:$('[data-sublink="facebook"] #f_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("f_subject",0,a.local_data.subject);lsi["import"]("f_contacts",a.local_data.contacts);lsi["import"]("f_mini-fiches",a.local_data.mini);lsi["import"]("f_fiches",a.local_data.fiches);lsi.set("f_matrice",0,a.local_data.matrice);fSubjectManager.storageToFields();fContactManager.storageToFields();fMatriceManager.storageToFields();fDynamicUpdate(!0)})},!1);$('[data-sublink="facebook"] #f_submit-all').addEventListener("click", +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})} +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="'+ +e+'"] ~ h5 select[data-name="studies"]').value=b,a=d%9,8==a?($("#reltype10_p_"+e).checked=!0,$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_p_"+e).checked=!0,$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="city"]').value=(10+d).toString(),$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="cp"]').value=(1E4+d).toString(),$('article.fiche-relation > input[data-name="uid"][value="'+ +e+'"] ~ h5 input[data-name="quartier"]').value=d,$("#loc"+["A","B","C","D"][Math.floor(d%4)]+"_p_"+e).checked=!0,b=$$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="duration"]'),b[0].value=d.toString(),b[1].value=1+d.toString(),b=d%14,$("article.fiche-relation #contexte"+b+"_p_"+e).checked=!0,g=$$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="contextSpecial"]'),11==b&&(g[0].value="internet"),12==b&&(g[1].value="association"), +13==b&&(g[2].value="autre"),d++)}function testContactsFacebook(){for(var a=0;45>a;a++)0==a%20?lsi.set("f_contacts",a,{uid:a,username:"contact-x"}):lsi.set("f_contacts",a,{uid:a,username:"contact-"+a})} +function testRoutineFacebook(a){var b=lsi["export"]("f_contacts"),c=lsi["export"]("f_mini-fiches"),g=lsi["export"]("f_fiches"),d=0;if(null!=a&&a)for(var f in c)isNaN(f)||(a="",null!=b[f]&&(a=b[f].username),c=$('#f_nav-mini [data-n="'+f+'"]'),c.click(),$("#unknown_min_f_"+f).checked=0==a.length,0==a.length?($("#sexeI_mini_f_"+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_f_"+f).checked=!0):(a=["H","F"][Math.floor(d%2)],$("#sexe"+a+"_mini_f_"+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_f_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_mini_f_"+f).checked=!0,d++));for(var e in g)isNaN(e)||(c=$('#f_nav-fiche [data-n="'+ +e+'"]'),c.click(),a=["H","F","I"][Math.floor(d%3)],$("#sexe"+a+"_f_"+e).checked=!0,$('section[data-sublink="facebook"] 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],$('section[data-sublink="facebook"] 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),$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 select[data-name="studies"]').value=b,a=d%9,8==a?($("#reltype10_f_"+e).checked=!0,$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_f_"+e).checked=!0,$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="city"]').value= +(10+d).toString(),$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="cp"]').value=(1E4+d).toString(),$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="quartier"]').value=d,$("#loc"+["A","B","C","D"][Math.floor(d%4)]+"_f_"+e).checked=!0,b=$$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="duration"]'), +b[0].value=d.toString(),b[1].value=1+d.toString(),b=d%14,$('section[data-sublink="facebook"] article.fiche-relation #contexte'+b+"_f_"+e).checked=!0,g=$$('section[data-sublink="facebook"] article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 input[data-name="contextSpecial"]'),11==b&&(g[0].value="internet"),12==b&&(g[1].value="association"),13==b&&(g[2].value="autre"),d++)};