diff --git a/js/includes/input-facebook-contact-min.js b/js/includes/input-facebook-contact-min.js index f1cd7c4..de19949 100644 --- a/js/includes/input-facebook-contact-min.js +++ b/js/includes/input-facebook-contact-min.js @@ -1,8 +1,7 @@ -function inputFacebookContact(a,b){this.container=a;this.nav_container=b}inputFacebookContact.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null};inputFacebookContact.prototype.check=function(a){var b=0=a.length&&this.add({uid:a.length});this.updateNavBar()}; -inputFacebookContact.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"nav-contact"!=a.parentNode.id)return!1;for(var b=$$('[data-sublink="facebook"] #f_nav-contact > span.active'),c=0;c span.active'),c=0;c'+(1+b/10)+""}this.nav($('[data-sublink="facebook"] #f_nav-contact [data-n="'+this.selected+'"]'))}; inputFacebookContact.prototype.attach=function(a){console.log("CONTACTS: ATTACH");lsi.createDataset("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/includes/input-facebook-contact.js b/js/includes/input-facebook-contact.js index fa6ed2a..2d4ad8b 100644 --- a/js/includes/input-facebook-contact.js +++ b/js/includes/input-facebook-contact.js @@ -19,13 +19,8 @@ inputFacebookContact.prototype = { /* [2] Vérification des données d'un contact =========================================================*/ inputFacebookContact.prototype.check = function(deflated){ - /* (1) Le numéro n'est pas vide */ - var validForm = deflated.number.length > 0; - /* (2) ET le pseudo et/ou le prénom et/ou le nom n'est pas vide */ - validForm = validForm && deflated.username.length+deflated.firstname.length+deflated.lastname.length > 0; - - /* (3) On retourne la validité du formulaire */ - return validForm + /* On retourne la validité du formulaire */ + return deflated.username.length+deflated.firstname.length+deflated.lastname.length > 0; } @@ -50,16 +45,9 @@ inputFacebookContact.prototype.fieldsToStorage = function(){ // {4} On récupère et met en forme les valeurs du deflater // var obj = { uid: parseInt(deflated.uid), - number: deflated.number, username: deflated.username, firstname: deflated.firstname, - lastname: deflated.lastname, - - call: parseInt(deflated.call), - sms: parseInt(deflated.sms), - - countcall: parseInt(deflated.countcall), - countsms: parseInt(deflated.countsms) + lastname: deflated.lastname }; /* (5) On calcule et ajoute le hash des données */ @@ -95,7 +83,6 @@ inputFacebookContact.prototype.add = function(objectData){ return false // {0} On formatte l'object // - objectData.number = (objectData.number != null) ? objectData.number : ''; objectData.username = (objectData.username != null) ? objectData.username : ''; objectData.firstname = (objectData.firstname != null) ? objectData.firstname : ''; objectData.lastname = (objectData.lastname != null) ? objectData.lastname : ''; @@ -106,7 +93,7 @@ inputFacebookContact.prototype.add = function(objectData){ // {1} On ajoute le HTML // - this.container.innerHTML += contactBuilder.build(objectData); + this.container.innerHTML += fContactBuilder.build(objectData); // {2} On attache les évènements sur les formulaires // var contactForms = $$('[data-sublink="facebook"] article.contact-panel .new-contact'); @@ -169,7 +156,7 @@ inputFacebookContact.prototype.nav = function(element){ if( element == null ) return false; - if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'nav-contact' ) + if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'f_nav-contact' ) return false; /* (2) On désactive tous les éléments actifs */ diff --git a/js/includes/input-facebook-fiche-min.js b/js/includes/input-facebook-fiche-min.js new file mode 100644 index 0000000..c46c79a --- /dev/null +++ b/js/includes/input-facebook-fiche-min.js @@ -0,0 +1,20 @@ +function inputFacebookFiche(a,b){this.container=a;this.nav_container=b}inputFacebookFiche.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{sexe:"0",age:".",job:".",famsit:"0",studies:".",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}}; +inputFacebookFiche.prototype.fieldsToStorage=function(){console.log("FICHE: FIELDS TO STORAGE");for(var a=$$('[data-sublink="facebook"] article.relation-panel .fiche-relation'),b=0;b FICHE UPDATE"),c.timestamp=Date.now());lsi.set("fiches",c.uid,c)}}}; +inputFacebookFiche.prototype.add=function(a){console.log("FICHE: ADD");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 b=lsi.get("contacts",a.contact);if(!1===b)return!1;this.container.innerHTML+=fFicheBuilder.build({name:readableName(b.username,b.firstname,b.lastname),countcall:b.countcall,countsms:b.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]});b=$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="job"]>option[value="'+a.job+'"]');null!=b&&b.setAttribute("selected","selected");b=$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=b&&b.setAttribute("selected","selected");b=$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+ +a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!=b&&b.setAttribute("selected","selected");for(var c=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[type="radio"][data-name="famsit"]'); +for(b=0;binput[type="radio"][data-name="reltype"]');for(b=0;binput[type="radio"][data-name="loc"]'); +for(b=0;binput[type="radio"][data-name="context"]');for(b=0;binput[type="radio"][data-name="freq"]'); +for(b=0;binput[type="radio"][data-name="connect"]');for(b=0;blsi.keys("contacts").length?lsi.keys("contacts").length:20;if(b.length=e)break}for(var f in d)b=lsi.get("contacts",d[f].contact),null!=b&&-1!=b.sms&&-1!=b.call&&(b=10>parseInt(f)?10+b.sms:b.call,b=d[b],b.timestamp>=d[f].timestamp||(c=d[f],c.uid=b.uid,lsi.set("fiches",b.uid,c)))}; +inputFacebookFiche.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"f_nav-fiche"!=a.parentNode.id)return!1;for(var b=$$('[data-sublink="facebook"] #f_nav-fiche > span.active'),c=0;cHISTORIQUE");10>e&&c'+(e%10+1)+"  ":(10==e&&(this.nav_container.innerHTML+='MESSENGER'),this.nav_container.innerHTML+=''+ +(e%10+1)+"")}for(var d in a)b=$('[data-sublink="facebook"] #f_nav-fiche [data-n="'+a[d].uid+'"]'),null!=b&&(!0===a[d].valid?b.addClass("done"):b.remClass("done"));this.nav($('[data-sublink="facebook"] #f_nav-fiche [data-n="'+this.selected+'"]'))}; +inputFacebookFiche.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};inputFacebookFiche.prototype.attach=function(a){console.log("FICHE: ATTACH");lsi.createDataset("fiches");this.storageToFields();this.handler=a;var b=this,b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1)}; diff --git a/js/includes/input-facebook-fiche.js b/js/includes/input-facebook-fiche.js new file mode 100644 index 0000000..cc9c9f9 --- /dev/null +++ b/js/includes/input-facebook-fiche.js @@ -0,0 +1,633 @@ +/* [0] Constructeur -> définit le conteneur et le bouton d'ajout +=========================================================*/ +function inputFacebookFiche(container, navContainer){ + this.container = container; + this.nav_container = navContainer; +} + +/* [1] Attributs +=========================================================*/ +inputFacebookFiche.prototype = { + container: this.container, // Conteneur des fiche fiches relation + nav_container: this.nav_container, // Conteneur de la navigation entre les fiches + selected: 0, // UID de la FICHE sélectionnée + handler: null, // Fonction pour l'enregistrement et la synchronisation des données + defaultData: { // Valeurs par défaut + sexe: '0', + age: '.', + job: '.', + famsit: '0', // Choix 1 à 3 + studies: '.', + reltype: '0', // Choix 1 à 9 + reltypeSpecial: '', + city: '', + quartier: '', + cp: '', + loc: '0', + duration: ['', ''], + context: '0', // Choix 1 à 14 + contextSpecial: ['', '', ''], + freq: ['4', '9', '14', '19', '24'], // 1er choix des 4 pour chaque question + connect: ['1', '3', '5', '7', '9', '11'], // Le deuxième choix (Oui/Non) donc 'Non' par défaut pour chaque question + connectSpecial: ['', ''], + timestamp: 0, + valid: false + } +}; + + +/* [2] Gestion de l'enregistrement des formulaires fiche fiches relation +=========================================================*/ +inputFacebookFiche.prototype.fieldsToStorage = function(){ + console.log('FICHE: FIELDS TO STORAGE'); + + // {1} Pour chaque formulaire de contact présent // + var existingFiches = $$('[data-sublink="facebook"] article.relation-panel .fiche-relation'); + for( var i = 0 ; i < existingFiches.length ; i++ ){ + + // {2} On initialise notre deflater pour récupérer les valeurs // + var deflater = new FormDeflater(existingFiches[i], ['input', 'select'], ['data-name']); + + // {3} On enregistre ce contact si le numéro n'est pas vide et soit pseudo/prénom/nom // + var deflated = deflater.deflate(); + // On crée le hash + var deflatedHash = crc32(JSON.stringify(deflated)); + + + // console.log( deflated ); + + + // {4} On récupère les données du LSI si elles existent // + var existingData = lsi.get('fiches', deflated.uid); + + // Si n'existe pas, on passe au suivant + if( existingData === false ) + continue; + + + // {5} On récupère et met en forme les valeurs du deflater // + // Si le hash est le même, on ne fait rien + if( existingData.hash != null && existingData.hash == deflatedHash ) + return; + + + var obj = { + contact: parseInt(deflated.contact), + uid: parseInt(deflated.uid), + sexe: deflated.sexe, + age: deflated.age, + job: deflated.job, + famsit: deflated.famsit, + studies: deflated.studies, + reltype: deflated.reltype, + reltypeSpecial: deflated.reltypeSpecial, + city: deflated.city, + quartier: deflated.quartier, + cp: deflated.cp, + loc: deflated.loc, + duration: deflated.duration, + context: deflated.context, + contextSpecial: deflated.contextSpecial, + freq: deflated.freq, + connect: deflated.connect, + connectSpecial: deflated.connectSpecial, + hash: deflatedHash + }; + + + /* (6) On vérifie la validité des données et on l'enregistre dans l'objet avec la date de modification */ + obj.valid = this.check(obj); + + // On met à jour la date de modification, si on a pas qu'@uid de différent + if( diff(existingData, obj, ['hash', 'valid', 'timestamp']).length > 0 ){ + console.log( diff(existingData, obj, ['hash', 'valid', 'timestamp']) ); + console.warn('> FICHE UPDATE'); + obj.timestamp = Date.now(); + } + + /* (7) On enregistre les données dans le 'localStorage' */ + lsi.set('fiches', obj.uid, obj); + } +}; + + + + + + + + + +/* [3] Gestion de l'ajout physique d'une nouvelle fiche +=========================================================*/ +/* +* +* @objectData Objet contenant les informations nécessaires à l'affichage +* +*/ +inputFacebookFiche.prototype.add = function(objectData){ + 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) ) + return false; + + /* (0) Gestion du formattage des valeur */ + // {1} Champs de texte // + objectData.city = (objectData.city != null) ? objectData.city : this.defaultData.city; + objectData.quartier = (objectData.quartier != null) ? objectData.quartier : this.defaultData.quartier; + objectData.cp = (objectData.cp != null) ? objectData.cp : this.defaultData.cp; + objectData.duration[0] = (objectData.duration[0] != null) ? objectData.duration[0] : this.defaultData.duration[0]; + objectData.duration[1] = (objectData.duration[1] != null) ? objectData.duration[1] : this.defaultData.duration[1]; + objectData.reltypeSpecial = (objectData.reltypeSpecial != null) ? objectData.reltypeSpecial : this.defaultData.reltypeSpecial; + objectData.contextSpecial[0] = (objectData.contextSpecial[0] != null) ? objectData.contextSpecial[0] : this.defaultData.contextSpecial[0]; + objectData.contextSpecial[1] = (objectData.contextSpecial[1] != null) ? objectData.contextSpecial[1] : this.defaultData.contextSpecial[1]; + objectData.contextSpecial[2] = (objectData.contextSpecial[2] != null) ? objectData.contextSpecial[2] : this.defaultData.contextSpecial[2]; + objectData.connectSpecial[0] = (objectData.connectSpecial[0] != null) ? objectData.connectSpecial[0] : this.defaultData.connectSpecial[0]; + objectData.connectSpecial[1] = (objectData.connectSpecial[1] != null) ? objectData.connectSpecial[1] : this.defaultData.connectSpecial[1]; + + // {2} Champs // + // 1. La ville a au moins 2 caractères + if( ficheData.city.length < 2 ) + return false; + // 3. La durée de la relation en mois est vide ou un nombre + if( isNaN(parseInt(ficheData.duration[0])) && ficheData.duration[0].length > 0 ) + return false; + // 4. La durée de la relation en année est vide ou un nombre + if( isNaN(parseInt(ficheData.duration[1])) && ficheData.duration[1].length > 0 ) + return false; + // 5. Pour la durée de la relation, au moins un des 2 n'est pas vide + if( ficheData.duration[0].length+ficheData.duration[1].length == 0 ) + return false; + + // {2} Vérification des pour la profession n'est pas indéfini + if( ficheData.job == '.' ) + return false; + // 7. Le pour l'AGE n'est pas indéfini + if( ficheData.age == '.' ) + return false; + + // {3} Vérification des radio // + // 9. Le SEXE a un et un seul choix + if( ficheData.sexe == '' ) + return false; + // 10. La SITUATION FAMILIALE a un et un seul choix + if( ficheData.famsit == '' ) + return false; + // 11. Le TYPE DE RELATION a un et un seul choix + if( ficheData.reltype == '' ) + return false; + // 12. La DISTANCE DE DOMICILE (location) a un et un seul choix + if( ficheData.loc == '' ) + return false; + // 13. Le CONTEXTE DE RENCONTRE a un et un seul choix + if( ficheData.context == '' ) + return false; + // 14. Les FRÉQUENCES ont un et un seul choix (par question de fréquence) + for( var i = 0 ; i < ficheData.freq.length ; i++ ) + if( ficheData.freq[i] == '' ) + return false; + // 15. Les CONNECTION ont un et un seul choix (par question de connection) + for( var i = 0 ; i < ficheData.connect.length ; i++ ) + if( ficheData.connect[i] == '' ) + return false; + + // {4} dépendant d'un choix d'un radio // + // 16. TYPE DE RELATION si autre est coché (indice 8), reltypeSpecial doit avoir au moins 2 caractère + if( ficheData.reltype == '10' && ficheData.reltypeSpecial.length < 2 ) + return false; + // 17. CONTEXTE DE RELATION si est coché indice 11, contactSpecial[0] doit avoir au moins 2 caractères + if( ficheData.context == '11' && ficheData.contextSpecial[0].length < 2 ) + return false; + + // 18. CONTEXTE DE RELATION si est coché indice 12, contextSpecial[1] doit avoir au moins 2 caractères + if( ficheData.context == '12' && ficheData.contextSpecial[1].length < 2 ) + return false; + + // 19. CONTEXTE DE RELATION si est coché indice 13, contextSpecial[2] doit avoir au moins 2 caractères + if( ficheData.context == '13' && ficheData.contextSpecial[2].length < 2 ) + return false; + + + + // 20. Si tout s'est bien passé, on retourne TRUE + return true; +}; + + + + + +/* [9] Point d'amorçage de la gestion des contacts +=========================================================*/ +inputFacebookFiche.prototype.attach = function(handler){ + console.log('FICHE: ATTACH'); + + /* (1) On initialise le jeu de données */ + lsi.createDataset('fiches'); + + /* (2) On charge les fiche fiches depuis la mémoire ('localStorage') */ + this.storageToFields(); + + /* (3) On attache la barre de navigation à une fonction */ + // On enregistre le handler + this.handler = handler; + var ptr = this; + + /* (2) On attache l'évènement sur le bouton d'ajout de contact */ + var ptr = this; + this.nav_container.addEventListener('click', function(e){ + // 1. On gère la navigation + ptr.nav(e.target); + // 2. On gere le chargement dynamique + ptr.handler(e.target); + }, false); + +}; diff --git a/js/includes/input-facebook-matrice-min.js b/js/includes/input-facebook-matrice-min.js new file mode 100644 index 0000000..74f97c6 --- /dev/null +++ b/js/includes/input-facebook-matrice-min.js @@ -0,0 +1,5 @@ +function inputFacebookMatrice(a){this.container=a}inputFacebookMatrice.prototype={container:this.container}; +inputFacebookMatrice.prototype.fieldsToStorage=function(){console.log("MATRICE: FIELDS TO STORAGE");var a=(new FormDeflater(this.container,["input"],["data-name"])).deflate();crc32(JSON.stringify(a));var d={},b;for(b in a)if(a[b]instanceof Array)for(var e in a[b])null==d[b]&&(d[b]=[]),d[b].push(parseInt(a[b][e]));else null!==a[b]&&(null==d[b]&&(d[b]=[]),d[b].push(parseInt(a[b])));lsi.set("matrice",0,d)}; +inputFacebookMatrice.prototype.storageToFields=function(){console.log("MATRICE: STORAGE TO FIELDS");var a=lsi["export"]("fiches"),d=lsi.get("matrice",0),b=lsi["export"]("contacts"),e=[],c;for(c in a)-1==e.indexOf(a[c].contact)&&e.push(a[c].contact);a="";for(c=0;c";0',a+=readableName(f.username,f.firstname,f.lastname),a+=""):a+="";for(var h=0;h",a+='',a+=readableName(g.username,g.firstname,g.lastname),a+=""):h",a+=""):a+=""}a+=""}this.container.innerHTML=a+"
"}; +inputFacebookMatrice.prototype.attach=function(){console.log("MATRICE: ATTACH");lsi.createDataset("matrice");this.storageToFields();var a=this;this.container.addEventListener("click",function(d){a.fieldsToStorage();a.storageToFields()},!1)}; diff --git a/js/includes/input-facebook-matrice.js b/js/includes/input-facebook-matrice.js new file mode 100644 index 0000000..089705d --- /dev/null +++ b/js/includes/input-facebook-matrice.js @@ -0,0 +1,173 @@ +/* [0] Constructeur -> définit le conteneur et le bouton d'ajout +=========================================================*/ +function inputFacebookMatrice(container){ + this.container = container; +} + +/* [1] Attributs +=========================================================*/ +inputFacebookMatrice.prototype = { + container: this.container // Conteneur de la matrice +}; + + +/* [2] Gestion de l'enregistrement de la matrice +=========================================================*/ +inputFacebookMatrice.prototype.fieldsToStorage = function(){ + console.log('MATRICE: FIELDS TO STORAGE'); + + + // {1} On initialise notre deflater pour récupérer les valeurs // + var deflater = new FormDeflater(this.container, ['input'], ['data-name']); + + // {2} On extrait les données // + var deflated = deflater.deflate(); + // On crée le hash + var deflatedHash = crc32(JSON.stringify(deflated)); + + + // console.log(deflated); + + /* (3) On crée l'objet et on le remplit avec les relations */ + var obj = {}; + + for( var i in deflated ) + + // {1} Si c'est un tableau de sujets // + if( deflated[i] instanceof Array ){ + + // Pour chacune des différentes relations, on ajoute si TRUE + for( var a in deflated[i] ){ + if( obj[i] == null ) + obj[i] = []; + + obj[i].push( parseInt(deflated[i][a]) ); + } + + // {2} Si il n'y a qu'un sujet // + }else if( deflated[i] !== null ){ + if( obj[i] == null ) + obj[i] = []; + + obj[i].push( parseInt(deflated[i]) ); + } + + lsi.set( 'matrice', 0, obj ); + // Objet de la forme + // + // idA: [idV, idW], # A connait V et W (et réciproquement) + // idB: [idX, idY], # B connait X et Y (et réciproquement) + // ... + // +}; + + + + + + + + + + + +/* [4] Gestion de l'affichage depuis le 'localStorage' +=========================================================*/ +inputFacebookMatrice.prototype.storageToFields = function(){ + console.log('MATRICE: STORAGE TO FIELDS'); + + /* (1) On récupère la liste des contacts à mettre dans la matrice */ + // On récupère les fiches + var ficheData = lsi.export('fiches'); + + // On récupère les données de la matrice + var matriceData = lsi.get('matrice', 0); + + // On récupère les contacts pour afficher les noms/prénoms + var contactData = lsi.export('contacts'); + + // Contiendra les UID des contacts à mettre dans la matrice + var contacts = []; + + // Pour chaque fiche, on ajoute l'uid du contact s'il n'est pas déja ajouté + for( var f in ficheData ) + if( contacts.indexOf( ficheData[f].contact ) == -1 ) + contacts.push( ficheData[f].contact ); + + + /* (2) On construit le HTML de la matrice */ + // Contiendra le HTML + var matrice_html = ""; + + // {1} Pour chaque ligne // + for( var A = 0 ; A < contacts.length ; A++ ){ + var conA = contactData[A]; + + + matrice_html += ''; + + if( A > 0 ){ // Noms sur la première ligne (abscisses) + matrice_html += ''; + }else // Sinon, + matrice_html += ''; + + // {2} Pour chaque case // + for( var B = 0 ; B < contacts.length ; B++ ){ if( B < contacts.length-1 ){ + var conB = contactData[B]; + + // {3} Première colonne -> Intitulé des ordonnées // + if( A == 0 ){ + matrice_html += ''; + }} + + matrice_html += ''; + } + matrice_html += '
'; + matrice_html += readableName(conA.username, conA.firstname, conA.lastname); + matrice_html += ''; + matrice_html += ''; + matrice_html += readableName(conB.username, conB.firstname, conB.lastname), + matrice_html += ''; + + // {4} Valeurs des relations (boutons) // + }else if( B < A ){ + matrice_html += ""; + matrice_html += " -1 ) + matrice_html += " checked"; + matrice_html += " >"; + matrice_html += ""; + + // {5} Cases vides (moitié supérieure droite) // + }else + matrice_html += "
'; + + + /* (3) On affiche la matrice */ + this.container.innerHTML = matrice_html; + +}; + + + +/* [9] Point d'amorçage de la gestion des contacts +=========================================================*/ +inputFacebookMatrice.prototype.attach = function(){ + console.log('MATRICE: ATTACH'); + + /* (1) On initialise le jeu de données */ + lsi.createDataset('matrice'); + + /* (2) On charge les mini fiches depuis la mémoire ('localStorage') */ + this.storageToFields(); + + /* (3) On enregistre la matrice à chaque modification */ + var ptr = this; + this.container.addEventListener('click', function(e){ + ptr.fieldsToStorage(); + ptr.storageToFields(); + }, false); +}; diff --git a/js/includes/input-facebook-mini-min.js b/js/includes/input-facebook-mini-min.js new file mode 100644 index 0000000..3043d0a --- /dev/null +++ b/js/includes/input-facebook-mini-min.js @@ -0,0 +1,12 @@ +function inputFacebookMini(a,b){this.container=a;this.nav_container=b}inputFacebookMini.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{sexe:"0",age:".",studies:".",loc:"0",reltype:"0",reltypeSpecial:"",timestamp:0,valid:!1}}; +inputFacebookMini.prototype.fieldsToStorage=function(){console.log("MINI FICHE: FIELDS TO STORAGE");for(var a=$$('[data-sublink="facebook"] article.mini-relation-panel .mini-fiche-relation'),b=0;b MINI UPDATE");c={uid:parseInt(c.uid),sexe:c.sexe,age:c.age,studies:c.studies,reltype:c.reltype, +reltypeSpecial:c.reltypeSpecial,loc:c.loc,hash:e};c.valid=this.check(c);0 FICHE UPDATE"),c.timestamp=Date.now());lsi.set("mini-fiches",c.uid,c)}}}; +inputFacebookMini.prototype.add=function(a){console.log("MINI FICHE: ADD");if(null==a||null==a.uid)return!1;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.studies=null!=a.studies?a.studies:this.defaultData.studies;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;a.loc=null!=a.loc?a.loc:this.defaultData.loc;var b=lsi.get("contacts",a.uid);if(!1===b)return!1; +this.container.innerHTML+=fMiniFicheBuilder.build({name:readableName(b.username,b.firstname,b.lastname),countcall:b.countcall,countsms:b.countsms,uid:a.uid,reltypespecial:a.reltypeSpecial});b=$('[data-sublink="facebook"] 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="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+ +'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!=b&&b.setAttribute("selected","selected");for(var c=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[type="radio"][data-name="reltype"]'); +for(b=0;binput[type="radio"][data-name="loc"]');for(b=0;b span.active'),c=0;c'+ ++b+"");for(c in a)isNaN(c)||(b=$('[data-sublink="facebook"] #f_nav-mini [data-n="'+a[c].uid+'"]'),null!=b&&(!0===a[c].valid?b.addClass("done"):b.remClass("done")));this.nav($('[data-sublink="facebook"] #f_nav-mini [data-n="'+this.selected+'"]'))}; +inputFacebookMini.prototype.check=function(a){return""==a.sexe||"."==a.studies||"."==a.age||""==a.loc||""==a.reltype||"10"==a.reltype&&2>a.reltypeSpecial.length?!1:!0};inputFacebookMini.prototype.attach=function(a){console.log("MINI FICHE: ATTACH");lsi.createDataset("mini-fiches");this.storageToFields();this.handler=a;var b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1)}; diff --git a/js/includes/input-facebook-mini.js b/js/includes/input-facebook-mini.js new file mode 100644 index 0000000..db3a7e0 --- /dev/null +++ b/js/includes/input-facebook-mini.js @@ -0,0 +1,423 @@ +/* [0] Constructeur -> définit le conteneur et le bouton d'ajout +=========================================================*/ +function inputFacebookMini(container, navContainer){ + this.container = container; + this.nav_container = navContainer; +} + +/* [1] Attributs +=========================================================*/ +inputFacebookMini.prototype = { + container: this.container, // Conteneur des mini fiches relation + nav_container: this.nav_container, // Conteneur de la navigation entre les MINI fiches + selected: 0, // UID de la MINI fiche sélectionnée + handler: null, // Fonction pour l'enregistrement et la synchronisation des données + defaultData: { // Valeur par défaut + sexe: '0', + age: '.', + studies: '.', + loc: '0', + reltype: '0', + reltypeSpecial: '', + timestamp: 0, + valid: false + } +}; + + +/* [2] Gestion de l'enregistrement des formulaires mini fiches relation +=========================================================*/ +inputFacebookMini.prototype.fieldsToStorage = function(){ + console.log('MINI FICHE: FIELDS TO STORAGE'); + + // {1} Pour chaque formulaire de MINI fiche à l'écran // + var existingMiniFiches = $$('[data-sublink="facebook"] article.mini-relation-panel .mini-fiche-relation'); + for( var i = 0 ; i < existingMiniFiches.length ; i++ ){ + // {2} On initialise notre deflater pour récupérer les valeurs // + var deflater = new FormDeflater(existingMiniFiches[i], ['input', 'select'], ['data-name']); + + // {3} On enregistre ce contact si le numéro n'est pas vide et soit pseudo/prénom/nom // + var deflated = deflater.deflate(); + // On crée le hash + var deflatedHash = crc32(JSON.stringify(deflated)); + + + // console.log(deflated); + + + // {4} On récupère les données du LSI si elles existent // + var existingData = lsi.get('mini-fiches', deflated.uid); + + // Si n'existe pas, on passe à la suivante + if( existingData === false ) + continue; + + + // {5} On récupère et met en forme les valeurs du deflater // + // Si le hash est le même, on ne fait rien + if( existingData != null && existingData.hash != null && existingData.hash == deflatedHash ) + return; + + console.warn('> MINI UPDATE'); + + + var obj = { + uid: parseInt(deflated.uid), + sexe: deflated.sexe, // [0] Homme, [1] Femme + age: deflated.age, + studies: deflated.studies, + reltype: deflated.reltype, // [0] ... + reltypeSpecial: deflated.reltypeSpecial, + loc: deflated.loc, // [0] Choix 1 -> [3] Choix 4 + hash: deflatedHash + }; + + /* (8) On vérifie la validité des données et on l'enregistre dans l'objet avec la date de modification */ + obj.valid = this.check(obj); + + // On met à jour la date de modification, si on a pas qu'@uid de différent + if( diff(existingData, obj, ['hash', 'valid', 'timestamp']).length > 0 ){ + console.log( diff(existingData, obj, ['hash', 'valid', 'timestamp']) ); + console.warn('> FICHE UPDATE'); + obj.timestamp = Date.now(); + } + + + /* (9) On enregistre les données dans le 'localStorage' */ + lsi.set('mini-fiches', obj.uid, obj); + + } +}; + + + + + + + + + +/* [3] Gestion de l'ajout physique d'un nouveau contact +=========================================================*/ +/* +* +* @objectData Objet contenant les informations nécessaires à l'affichage +* +*/ +inputFacebookMini.prototype.add = function(objectData){ + console.log('MINI FICHE: ADD'); + + // Si pas d'UID, on retourne une erreur + if( objectData == null || objectData.uid == null ) + return false; + + /* (0) Gestion du formattage des valeur */ + objectData.age = (objectData.age != null) ? objectData.age : this.defaultData.age; + objectData.sexe = (objectData.sexe != null) ? objectData.sexe : this.defaultData.sexe; + objectData.studies = (objectData.studies != null) ? objectData.studies : this.defaultData.studies; + objectData.reltype = (objectData.reltype != null) ? objectData.reltype : this.defaultData.reltype; + objectData.reltypeSpecial = (objectData.reltypeSpecial != null) ? objectData.reltypeSpecial : this.defaultData.reltypeSpecial; + objectData.loc = (objectData.loc != null) ? objectData.loc : this.defaultData.loc; + + + // {1} On récupère username/firstname/lastname du contact associé // + var associatedContact = lsi.get('contacts', objectData.uid); + + // Si on ne trouve pas le contact, on ne fais rien + if( associatedContact === false ) + return false; + + + // {2} Création physique // + this.container.innerHTML += fMiniFicheBuilder.build({ + name: readableName(associatedContact.username, associatedContact.firstname, associatedContact.lastname), + countcall: associatedContact.countcall, + countsms: associatedContact.countsms, + uid: objectData.uid, + reltypespecial: objectData.reltypeSpecial + }); + + + /* {3} On sélectionne la valeur dans le select (manuellement) de la PROFESSION */ + var selectedOption = $('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+objectData.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+objectData.studies+'"]'); + if( selectedOption != null ) + selectedOption.setAttribute('selected', 'selected'); + + /* {4} On sélectionne la valeur dans le select (manuellement) de l'AGE */ + selectedOption = $('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+objectData.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+objectData.age+'"]'); + if( selectedOption != null ) + selectedOption.setAttribute('selected', 'selected'); + + /* {5} On sélectionna la valeur des boutons pour le SEXE */ + var sexeCreated = $$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+objectData.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'); + for( var i = 0 ; i < sexeCreated.length ; i++ ) + if( sexeCreated[i].value == objectData.sexe ) sexeCreated[i].setAttribute('checked', 'checked'); + else sexeCreated[i].removeAttribute('checked'); + + /* {6} On sélectionna la valeur des boutons pour le TYPE DE RELATION */ + var reltypeCreated = $$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+objectData.uid+'"] ~ h5>input[type="radio"][data-name="reltype"]'); + for( var i = 0 ; i < reltypeCreated.length ; i++ ) + if( reltypeCreated[i].value == objectData.reltype ) reltypeCreated[i].setAttribute('checked', 'checked'); + else reltypeCreated[i].removeAttribute('checked'); + + /* {7} On sélectionna la valeur des boutons pour la LOCATION */ + var locCreated = $$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+objectData.uid+'"] ~ h5>input[type="radio"][data-name="loc"]'); + for( var i = 0 ; i < locCreated.length ; i++ ) + if( locCreated[i].value == objectData.loc ) locCreated[i].setAttribute('checked', 'checked'); + else locCreated[i].removeAttribute('checked'); + +}; + + + + + + + + + + +/* [4] Gestion de l'affichage depuis le 'localStorage' +=========================================================*/ +inputFacebookMini.prototype.storageToFields = function(){ + console.log('MINI FICHE: STORAGE TO FIELDS'); + + // {1} Pour chaque contact du 'localStorage' // + var miniData = lsi.get('mini-fiches', this.selected); + + // Si on a rien trouvé, on ne fait rien + if( miniData == null ){ + this.updateNavBar(); + return false; + } + + // On réinitialise le HTML + this.container.innerHTML = ''; + + // {2} On affiche la MINI fiche sélectionnée // + this.add(miniData); + + // {3} On met à jour la navigation // + this.updateNavBar(); + +}; + + + + + + + + + + + +/* [5] Synchronisation des CONTACT vers les MINI fiches +=========================================================*/ +inputFacebookMini.prototype.sync = function(){ + console.log('MINI FICHE: SYNC'); + + /* (1) On récupère les clés de tous les CONTACTS */ + var contactData = lsi.export('contacts'); + + + /* (2) On enregistre les contacts qui sont déja dans les FICHES */ + var fiches = lsi.export('fiches'); + var ignoredContacts = []; + for( var id in fiches ) + if( ignoredContacts.indexOf( fiches[id].contact ) == -1 ) + ignoredContacts.push( fiches[id].contact ); + + + /* (3) Pour chaque CONTACT, on met à jour/crée la MINI fiche associée */ + for( var key in contactData ){ + + /* (4) Si le contact est déja dans une fiche, on le retire */ + if( ignoredContacts.indexOf(parseInt(key)) > -1 ){ + // On supprime au cas ou + lsi.del('mini-fiches', key); + continue; + } + + /* (5) Si le contact n'a aucun nominatif, on met inconnu par défaut, mais on ne l'affiche pas */ + var noName = contactData[key].username.length+contactData[key].firstname.length+contactData[key].lastname.length == 0; + + // On rajoute un '.' après pour dire qu'on affichera pas + var uid = noName ? key.toString()+'-' : key; + + /* (5) On récupère les informations de la MINI (si elle existe) */ + var miniData = lsi.get('mini-fiches', uid); + + + /* (6) Si la MINI fiche n'exise pas, on la crée avec les valeurs par défaut */ + if( miniData == null ){ + miniData = this.defaultData; + miniData.valid = false; + + // Si aucun nom, on met 'inconnu' par défaut pour la fiche de relation + if( isNaN(uid) ) + miniData.reltype = '9'; + } + + /* (7) On met à jour la MINI fiche */ + miniData.uid = parseInt(key); + + + /* (8) On enregistre les modification */ + lsi.set('mini-fiches', uid, miniData); + + } + + /* (9) On met à jour la mini-fiche en cours */ + var miniData = lsi.export('mini-fiches'); + + // Si la clé n'existe plus + if( miniData[this.selected] == null ){ + + // On cherche la première clé numérique + for( var key in miniData ) + if( !isNaN(key) ){ // La première qu'on trouve, on la définit + this.selected = parseInt(key); + break; + } + + } + +}; + + + + + + + +/* [6] Gestion de la navigation entre les fiches +=========================================================*/ +inputFacebookMini.prototype.nav = function(element){ + /* (1) On vérifie que l'élément contient un nombre et existe */ + if( element == null ) + return false; + + if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'f_nav-mini' ) + return false; + + /* (2) On désactive tous les éléments actifs */ + var activeElements = $$('[data-sublink="facebook"] #f_nav-mini > span.active'); + for( var i = 0 ; i < activeElements.length ; i++ ) + activeElements[i].remClass('active'); + + /* (3) On active l'élément courant */ + element.addClass('active'); + this.selected = parseInt(element.getData('n')); +}; + + + + + + + +/* [7] Mise à jour de la navigation +=========================================================*/ +inputFacebookMini.prototype.updateNavBar = function(){ + var miniData = lsi.export('mini-fiches'); + + + /* (1) On vide et remplit la barre de nav, si elle n'est pas à jour */ + this.nav_container.innerHTML = ''; + var i = 0; + + for( var key in miniData ) + if( !isNaN(key) ) // On affiche que les clés numériques + this.nav_container.innerHTML += ''+(++i)+''; + + + /* (2) On montre les MINI fiches qui sont correctes dans la navbar */ + for( var key in miniData ){ + + // Si la clé n'est pas numérique, on ne gère pas + if( isNaN(key) ) + continue; + + var currentElement = $('[data-sublink="facebook"] #f_nav-mini [data-n="'+miniData[key].uid+'"]'); + + if( currentElement == null ) + continue; + + // On remplit avec le numéro de la MINI fiche + // currentElement.setAttribute('data-n', miniData[key].uid); + // currentElement.innerHTML = miniData[key].uid + 1; + + // Si la MINI fiche est valide + if( miniData[key].valid === true ) currentElement.addClass('done'); + // Si elle est invalide + else currentElement.remClass('done'); + + } + + + + /* (3) On séléctionne par défaut la dernière MINI fiche sélectionnée */ + this.nav( $('[data-sublink="facebook"] #f_nav-mini [data-n="'+this.selected+'"]') ); +}; + + + + +/* [8] Vérification des données du formulaire +=========================================================*/ +inputFacebookMini.prototype.check = function(miniData){ + + // 1. Le sexe est défini + if( miniData.sexe == '' ) + return false; + // 2. Le métier est défini + if( miniData.studies == '.' ) + return false; + // 3. L'age est définie + if( miniData.age == '.' ) + return false; + // 4. La distance de localisation est définie + if( miniData.loc == '' ) + return false; + // 5. Le TYPE DE RELATION a un et un seul choix + if( miniData.reltype == '' ) + return false; + // 6. TYPE DE RELATION si autre est coché (indice 10), reltypeSpecial doit avoir au moins 2 caractère + if( miniData.reltype == '10' && miniData.reltypeSpecial.length < 2 ) + return false; + + + // Si aucune erreur, tout est ok + return true; +}; + + + + + +/* [9] Point d'amorçage de la gestion des contacts +=========================================================*/ +inputFacebookMini.prototype.attach = function(handler){ + console.log('MINI FICHE: ATTACH'); + + /* (1) On initialise le jeu de données */ + lsi.createDataset('mini-fiches'); + + /* (2) On charge les mini fiches depuis la mémoire ('localStorage') */ + this.storageToFields(); + + /* (3) On attache la barre de navigation à une fonction */ + // On enregistre le handler + this.handler = handler; + + /* (2) On attache l'évènement sur le conteneur de navigation */ + var ptr = this; + this.nav_container.addEventListener('click', function(e){ + // 1. On gère la navigation + ptr.nav(e.target); + // 2. On gere le chargement dynamique + ptr.handler(e.target); + }, false); + +}; diff --git a/js/includes/input-html-data-min.js b/js/includes/input-html-data-min.js deleted file mode 100644 index cfd04f2..0000000 --- a/js/includes/input-html-data-min.js +++ /dev/null @@ -1,3 +0,0 @@ -var contactBuilder=new HTMLBuilder;contactBuilder.setLayout("

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

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

@name

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

Type de relation

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

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

\n\t
\n\t\t\u00c0 combien de temps est-ce de chez vous ?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n
"); -var ficheBuilder=new HTMLBuilder;ficheBuilder.setLayout("
\n\t\n\t\n\t

@name

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

Type de relation

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

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

\n\t
\n\t\t\n\t\t
\n\t
\n\t
\n\t\tSi Toulouse : \n\t
\n\t
\n\t\t\u00c0 combien de temps est-ce de chez vous ?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\tDepuis quand connaissez-vous cette personne ?

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

Contexte de rencontre

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

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

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

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

\n\t
\n\t\tSes coordonn\u00e9es sont dans votre carnet d\u2019adresse
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tSon num\u00e9ro de mobile est enregistr\u00e9 sur votre mobile (ou vous-m\u00eames \u00eates sur le sien)
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif r\u00e9guli\u00e8rement
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous le suivez sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez avec cette personne sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez dans autre r\u00e9seau social : \n\t
\n\t
\n\t\tVous communiquez dans un autre dispositif (blogs, jeu vid\u00e9o ou autre) : \n\t
\n
\n"); diff --git a/js/includes/input-html-facebook-data-min.js b/js/includes/input-html-facebook-data-min.js new file mode 100644 index 0000000..24df2ef --- /dev/null +++ b/js/includes/input-html-facebook-data-min.js @@ -0,0 +1,3 @@ +var fContactBuilder=new HTMLBuilder;fContactBuilder.setLayout("

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

\n\n"); +var fMiniFicheBuilder=new HTMLBuilder;fMiniFicheBuilder.setLayout("
\n\t\n\t\n\t

@name

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

Type de relation

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

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

\n\t
\n\t\t\u00c0 combien de temps est-ce de chez vous ?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n
"); +var fFicheBuilder=new HTMLBuilder;fFicheBuilder.setLayout("
\n\t\n\t\n\t

@name

\n\t
\n\t\t\n\t\t   \n\t
\n\t
\n\t\t\n\t
\n\t
\n\t\t\n\t
\n\t
\n\t\tSituation familiale:
\n\t\t
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   \n\t
\n\t
\n\t\t\n\t
\n\t

Type de relation

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

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

\n\t
\n\t\t\n\t\t
\n\t
\n\t
\n\t\tSi Toulouse : \n\t
\n\t
\n\t\t\u00c0 combien de temps est-ce de chez vous ?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\tDepuis quand connaissez-vous cette personne ?

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

Contexte de rencontre

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

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

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

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

\n\t
\n\t\tSes coordonn\u00e9es sont dans votre carnet d\u2019adresse
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tSon num\u00e9ro de mobile est enregistr\u00e9 sur votre mobile (ou vous-m\u00eames \u00eates sur le sien)
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif r\u00e9guli\u00e8rement
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous le suivez sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez avec cette personne sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez dans autre r\u00e9seau social : \n\t
\n\t
\n\t\tVous communiquez dans un autre dispositif (blogs, jeu vid\u00e9o ou autre) : \n\t
\n
\n"); diff --git a/js/includes/input-html-facebook-data.js b/js/includes/input-html-facebook-data.js new file mode 100644 index 0000000..2967713 --- /dev/null +++ b/js/includes/input-html-facebook-data.js @@ -0,0 +1,439 @@ +/* [0] Gestion des constructeurs HTML +=========================================================*/ +/* (1) Constructeur de formulaire de contact */ +var fContactBuilder = new HTMLBuilder(); +fContactBuilder.setLayout( + "

\n"+ + + "\t\n"+ + + "\t \n"+ + "\t \n"+ + "\t \n"+ + "\t \n"+ + "\t \n"+ + "\t\n"+ + "

\n\n"); + + + + + + + + + + + + + + + + + + + + +/* (2) Constructeur de MINI fiche de relation */ +var fMiniFicheBuilder = new HTMLBuilder(); +fMiniFicheBuilder.setLayout( + "
\n"+ + + "\t\n"+ + + "\t\n"+ + "\t

@name

\n"+ + + "\t
\n"+ + "\t\t\n"+ + "\t\t   \n"+ + "\t
\n"+ + + + "\t
\n"+ + "\t\t\n"+ + "\t
\n"+ + + + + "\t
\n"+ + "\t\t\n"+ + "\t
\n"+ + + "\t

Type de relation

\n"+ + "\t
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t
\n"+ + + + "\t

Où habite t-elle/il ?

\n"+ + "\t
\n"+ + "\t\tÀ combien de temps est-ce de chez vous ?
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t
\n"+ + "
"); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/* (3) Constructeur de formulaire fiche relation */ +var fFicheBuilder = new HTMLBuilder(); +fFicheBuilder.setLayout( + "
\n"+ + + "\t\n"+ + "\t\n"+ + + "\t

@name

\n"+ + + "\t
\n"+ + "\t\t\n"+ + "\t\t   \n"+ + "\t
\n"+ + + + "\t
\n"+ + "\t\t\n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\t\n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tSituation familiale:
\n"+ + "\t\t
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\t\n"+ + "\t
\n"+ + + "\t

Type de relation

\n"+ + "\t
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t
\n"+ + + "\t

Où habite t-elle/il ?

\n"+ + + "\t
\n"+ + "\t\t\n"+ + "\t\t
\n"+ + "\t
\n"+ + "\t
\n"+ + "\t\tSi Toulouse : \n"+ + "\t
\n"+ + + + "\t
\n"+ + "\t\tÀ combien de temps est-ce de chez vous ?
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tDepuis quand connaissez-vous cette personne ?

\n"+ + "\t\tmois\n"+ + "\t\tet    ans.\n"+ + "\t
\n"+ + + + "\t

Contexte de rencontre

\n"+ + "\t
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t\t   
\n"+ + "\t
\n"+ + + "\t

Avec quelle fréquence discutez-vous avec cette personne ?

\n"+ + "\t
\n"+ + "\t\tFace à face
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tTéléphone ou skype et équivalent
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tSMS, et équivalents
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tCourrier électronique
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tFacebook ou autre réseau social
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + + "\t

Comment êtes-vous « connecté » à cette personne ?

\n"+ + "\t
\n"+ + "\t\tSes coordonnées sont dans votre carnet d’adresse
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tSon numéro de mobile est enregistré sur votre mobile (ou vous-mêmes êtes sur le sien)
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tElle figure parmi vos amis facebook
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tElle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif régulièrement
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tVous le suivez sur Twitter
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tVous communiquez avec cette personne sur Twitter
\n"+ + "\t\t   \n"+ + "\t\t   \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tVous communiquez dans autre réseau social : \n"+ + "\t
\n"+ + + "\t
\n"+ + "\t\tVous communiquez dans un autre dispositif (blogs, jeu vidéo ou autre) : \n"+ + "\t
\n"+ + + "
\n"); diff --git a/js/includes/input-html-phone-data-min.js b/js/includes/input-html-phone-data-min.js new file mode 100644 index 0000000..e691368 --- /dev/null +++ b/js/includes/input-html-phone-data-min.js @@ -0,0 +1,3 @@ +var pContactBuilder=new HTMLBuilder;pContactBuilder.setLayout("

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

\n\n"); +var pMiniFicheBuilder=new HTMLBuilder;pMiniFicheBuilder.setLayout("
\n\t\n\t\n\t

@name

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

Type de relation

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

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

\n\t
\n\t\t\u00c0 combien de temps est-ce de chez vous ?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n
"); +var pFicheBuilder=new HTMLBuilder;pFicheBuilder.setLayout("
\n\t\n\t\n\t

@name

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

Type de relation

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

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

\n\t
\n\t\t\n\t\t
\n\t
\n\t
\n\t\tSi Toulouse : \n\t
\n\t
\n\t\t\u00c0 combien de temps est-ce de chez vous ?
\n\t\t   
\n\t\t   
\n\t\t   
\n\t\t   
\n\t
\n\t
\n\t\tDepuis quand connaissez-vous cette personne ?

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

Contexte de rencontre

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

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

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

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

\n\t
\n\t\tSes coordonn\u00e9es sont dans votre carnet d\u2019adresse
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tSon num\u00e9ro de mobile est enregistr\u00e9 sur votre mobile (ou vous-m\u00eames \u00eates sur le sien)
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tElle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif r\u00e9guli\u00e8rement
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous le suivez sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez avec cette personne sur Twitter
\n\t\t   \n\t\t   \n\t
\n\t
\n\t\tVous communiquez dans autre r\u00e9seau social : \n\t
\n\t
\n\t\tVous communiquez dans un autre dispositif (blogs, jeu vid\u00e9o ou autre) : \n\t
\n
\n"); diff --git a/js/includes/input-html-data.js b/js/includes/input-html-phone-data.js similarity index 99% rename from js/includes/input-html-data.js rename to js/includes/input-html-phone-data.js index 1ad7ae2..1627322 100644 --- a/js/includes/input-html-data.js +++ b/js/includes/input-html-phone-data.js @@ -1,8 +1,8 @@ /* [0] Gestion des constructeurs HTML =========================================================*/ /* (1) Constructeur de formulaire de contact */ -var contactBuilder = new HTMLBuilder(); -contactBuilder.setLayout( +var pContactBuilder = new HTMLBuilder(); +pContactBuilder.setLayout( "

\n"+ "\t\n"+ @@ -41,8 +41,8 @@ contactBuilder.setLayout( /* (2) Constructeur de MINI fiche de relation */ -var miniFicheBuilder = new HTMLBuilder(); -miniFicheBuilder.setLayout( +var pMiniFicheBuilder = new HTMLBuilder(); +pMiniFicheBuilder.setLayout( "
\n"+ "\t\n"+ @@ -174,8 +174,8 @@ miniFicheBuilder.setLayout( /* (3) Constructeur de formulaire fiche relation */ -var ficheBuilder = new HTMLBuilder(); -ficheBuilder.setLayout( +var pFicheBuilder = new HTMLBuilder(); +pFicheBuilder.setLayout( "
\n"+ "\t\n"+ diff --git a/js/includes/input-phone-contact-min.js b/js/includes/input-phone-contact-min.js index db16074..63047e7 100644 --- a/js/includes/input-phone-contact-min.js +++ b/js/includes/input-phone-contact-min.js @@ -1,8 +1,8 @@ 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.check=function(a){var b=0=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"))||"nav-contact"!=a.parentNode.id)return!1;for(var b=$$('[data-sublink="phone"] #p_nav-contact > span.active'),c=0;c 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("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/includes/input-phone-contact.js b/js/includes/input-phone-contact.js index 28084f4..cf0a3c7 100644 --- a/js/includes/input-phone-contact.js +++ b/js/includes/input-phone-contact.js @@ -25,7 +25,7 @@ inputPhoneContact.prototype.check = function(deflated){ validForm = validForm && deflated.username.length+deflated.firstname.length+deflated.lastname.length > 0; /* (3) On retourne la validité du formulaire */ - return validForm + return validForm; } @@ -106,7 +106,7 @@ inputPhoneContact.prototype.add = function(objectData){ // {1} On ajoute le HTML // - this.container.innerHTML += contactBuilder.build(objectData); + this.container.innerHTML += pContactBuilder.build(objectData); // {2} On attache les évènements sur les formulaires // var contactForms = $$('[data-sublink="phone"] article.contact-panel .new-contact'); @@ -169,7 +169,7 @@ inputPhoneContact.prototype.nav = function(element){ if( element == null ) return false; - if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'nav-contact' ) + if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'p_nav-contact' ) return false; /* (2) On désactive tous les éléments actifs */ diff --git a/js/includes/input-phone-fiche-min.js b/js/includes/input-phone-fiche-min.js index 159382a..8f8863c 100644 --- a/js/includes/input-phone-fiche-min.js +++ b/js/includes/input-phone-fiche-min.js @@ -4,7 +4,7 @@ city:c.city,quartier:c.quartier,cp:c.cp,loc:c.loc,duration:c.duration,context:c. inputPhoneFiche.prototype.add=function(a){console.log("FICHE: ADD");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 b=lsi.get("contacts",a.contact);if(!1===b)return!1;this.container.innerHTML+=ficheBuilder.build({name:readableName(b.username,b.firstname,b.lastname),countcall:b.countcall,countsms:b.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], +a.connect=null!=a.connect?a.connect:this.defaultData.connect;var b=lsi.get("contacts",a.contact);if(!1===b)return!1;this.container.innerHTML+=pFicheBuilder.build({name:readableName(b.username,b.firstname,b.lastname),countcall:b.countcall,countsms:b.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]});b=$('[data-sublink="phone"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="job"]>option[value="'+a.job+'"]');null!=b&&b.setAttribute("selected","selected");b=$('[data-sublink="phone"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=b&&b.setAttribute("selected","selected");b=$('[data-sublink="phone"] article.fiche-relation input[data-name="uid"][value="'+ a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!=b&&b.setAttribute("selected","selected");for(var c=$$('[data-sublink="phone"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[type="radio"][data-name="famsit"]'); for(b=0;binput[type="radio"][data-name="reltype"]');for(b=0;binput[type="radio"][data-name="loc"]'); @@ -13,7 +13,7 @@ for(b=0;blsi.keys("contacts").length?lsi.keys("contacts").length:20;if(b.length=e)break}for(var f in d)b=lsi.get("contacts",d[f].contact),null!=b&&-1!=b.sms&&-1!=b.call&&(b=10>parseInt(f)?10+b.sms:b.call,b=d[b],b.timestamp>=d[f].timestamp||(c=d[f],c.uid=b.uid,lsi.set("fiches",b.uid,c)))}; -inputPhoneFiche.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"nav-fiche"!=a.parentNode.id)return!1;for(var b=$$('[data-sublink="phone"] #p_nav-fiche > span.active'),c=0;c span.active'),c=0;cAPPELS");10>e&&c'+(e%10+1)+"  ":(10==e&&(this.nav_container.innerHTML+='SMS'),this.nav_container.innerHTML+=''+(e%10+1)+"")}for(var d in a)b= $('[data-sublink="phone"] #p_nav-fiche [data-n="'+a[d].uid+'"]'),null!=b&&(!0===a[d].valid?b.addClass("done"):b.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|| diff --git a/js/includes/input-phone-fiche.js b/js/includes/input-phone-fiche.js index a53e305..c0b6e15 100644 --- a/js/includes/input-phone-fiche.js +++ b/js/includes/input-phone-fiche.js @@ -170,7 +170,7 @@ inputPhoneFiche.prototype.add = function(objectData){ // {5} Création physique // - this.container.innerHTML += ficheBuilder.build({ + this.container.innerHTML += pFicheBuilder.build({ name: readableName(associatedContact.username, associatedContact.firstname, associatedContact.lastname), countcall: associatedContact.countcall, countsms: associatedContact.countsms, @@ -448,7 +448,7 @@ inputPhoneFiche.prototype.nav = function(element){ if( element == null ) return false; - if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'nav-fiche' ) + if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'p_nav-fiche' ) return false; /* (2) On désactive tous les éléments actifs */ diff --git a/js/includes/input-phone-mini-min.js b/js/includes/input-phone-mini-min.js index 0cb7101..c7d3370 100644 --- a/js/includes/input-phone-mini-min.js +++ b/js/includes/input-phone-mini-min.js @@ -2,11 +2,11 @@ function inputPhoneMini(a,b){this.container=a;this.nav_container=b}inputPhoneMin inputPhoneMini.prototype.fieldsToStorage=function(){console.log("MINI FICHE: 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,hash:e};c.valid=this.check(c);0 FICHE UPDATE"),c.timestamp=Date.now());lsi.set("mini-fiches",c.uid,c)}}}; inputPhoneMini.prototype.add=function(a){console.log("MINI FICHE: ADD");if(null==a||null==a.uid)return!1;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.studies=null!=a.studies?a.studies:this.defaultData.studies;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;a.loc=null!=a.loc?a.loc:this.defaultData.loc;var b=lsi.get("contacts",a.uid);if(!1===b)return!1; -this.container.innerHTML+=miniFicheBuilder.build({name:readableName(b.username,b.firstname,b.lastname),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="'+ +this.container.innerHTML+=pMiniFicheBuilder.build({name:readableName(b.username,b.firstname,b.lastname),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");for(var c=$$('[data-sublink="phone"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[type="radio"][data-name="reltype"]');for(b=0;binput[type="radio"][data-name="loc"]');for(b=0;b span.active'),c=0;c span.active'),c=0;c'+ ++b+"");for(c in a)isNaN(c)||(b=$('[data-sublink="phone"] #p_nav-mini [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 [data-n="'+this.selected+'"]'))}; inputPhoneMini.prototype.check=function(a){return""==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.log("MINI FICHE: ATTACH");lsi.createDataset("mini-fiches");this.storageToFields();this.handler=a;var b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1)}; diff --git a/js/includes/input-phone-mini.js b/js/includes/input-phone-mini.js index 9146b9c..61fd680 100644 --- a/js/includes/input-phone-mini.js +++ b/js/includes/input-phone-mini.js @@ -129,7 +129,7 @@ inputPhoneMini.prototype.add = function(objectData){ // {2} Création physique // - this.container.innerHTML += miniFicheBuilder.build({ + this.container.innerHTML += pMiniFicheBuilder.build({ name: readableName(associatedContact.username, associatedContact.firstname, associatedContact.lastname), countcall: associatedContact.countcall, countsms: associatedContact.countsms, @@ -298,7 +298,7 @@ inputPhoneMini.prototype.nav = function(element){ if( element == null ) return false; - if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'nav-mini' ) + if( element.getData('n') === false || isNaN(element.getData('n')) || element.parentNode.id != 'p_nav-mini' ) return false; /* (2) On désactive tous les éléments actifs */ diff --git a/view.php b/view.php index 117f6ad..3ae7794 100755 --- a/view.php +++ b/view.php @@ -37,7 +37,8 @@ - + + diff --git a/view/input.php b/view/input.php index 289b08e..3d37431 100755 --- a/view/input.php +++ b/view/input.php @@ -18,18 +18,6 @@ - - - Donnees de Facebook -=========================================================*/ -?>
- Facebook -
- - - - - Donnees du Telephone =========================================================*/ ?>
diff --git a/view/js/input-min.js b/view/js/input-min.js index fa0f722..d2f9f4f 100644 --- a/view/js/input-min.js +++ b/view/js/input-min.js @@ -14,7 +14,7 @@ var c=$('[data-sublink="phone"] #p_download-target');c.download="local-phone-dat cDynamicUpdate(!0)})},!1);$('[data-sublink="phone"] #p_submit-all').addEventListener("click",function(a){console.log("> GATHERING ALL DATA");cSubjectManager.fieldsToStorage();cContactManager.fieldsToStorage();cMiniManager.fieldsToStorage();cFicheManager.fieldsToStorage();if(!cSubjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("mini-fiches");var c=0,b;for(b in a)if(!isNaN(b)&&(c++,!a[b].valid))return Notification.warning("Attention", "La fiche rapide "+c+" est incompl\u00e8te et/ou incorrecte"),!1;b={path:"input/phone",subject:lsi["export"]("subject")[0],contacts:lsi["export"]("contacts"),mini:lsi["export"]("mini-fiches"),fiches:lsi["export"]("fiches"),matrice:lsi["export"]("matrice")[0]};api.send(b,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;console.log(a)},!1)},!1)})})})})})}var fSubjectManager,fContactManager,fMiniManager,fFicheManager,fMatriceManager; if(null!=pageManager.vars[0]&&"facebook"==pageManager.vars[0]){var fDynamicUpdate=function(a){var c=a instanceof Element,b=c&&"SPAN"==a.tagName&&"switch-left"==a.className,e=c&&"SPAN"==a.tagName&&"switch-both"==a.className,d=c&&"INPUT"==a.tagName&&"submit"==a.type,f=c&&"SPAN"==a.tagName&&("f_nav-mini"==a.parentNode.id||"f_nav-fiche"==a.parentNode.id),c=c&&"SPAN"==a.tagName&&"f_nav-contact"==a.parentNode.id;if(!(e||b||d||f||c)&&!0!==a)return!1;if(e)console.log("> switch firstname <-> lastname"),b= -a.parentNode,a=b.children[8],b=b.children[10],e=a.value,a.value=b.value,b.value=e;else if(b){console.log("> switch firstname+lastname -> username");b=a.parentNode;e=b.children[6];a=b.children[8];b=b.children[10];if(0 dynamic update"),fMiniManager.fieldsToStorage(),fFicheManager.fieldsToStorage(),fContactManager.fieldsToStorage(),fMatriceManager.fieldsToStorage(),fFicheManager.sync(), +a.parentNode,a=b.children[2],b=b.children[3],e=a.value,a.value=b.value,b.value=e;else if(b){console.log("> switch firstname+lastname -> username");b=a.parentNode;e=b.children[1];a=b.children[2];b=b.children[3];if(0 dynamic update"),fMiniManager.fieldsToStorage(),fFicheManager.fieldsToStorage(),fContactManager.fieldsToStorage(),fMatriceManager.fieldsToStorage(),fFicheManager.sync(), fMiniManager.sync(),fMiniManager.storageToFields(),fFicheManager.storageToFields(),fMatriceManager.storageToFields(),(d||c)&&fContactManager.storageToFields()};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="username"]'), $('[data-sublink="facebook"] article.subject-panel [data-name="firstname"]'),$('[data-sublink="facebook"] article.subject-panel [data-name="lastname"]'),$('[data-sublink="facebook"] article.subject-panel [data-name="submit"]'));fSubjectManager.attach();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("subject");lsi.clear("contacts"); diff --git a/view/js/input.js b/view/js/input.js index 8662628..ff92113 100644 --- a/view/js/input.js +++ b/view/js/input.js @@ -692,8 +692,8 @@ if( pageManager.vars[0] != null && pageManager.vars[0] == 'facebook' ){ var currentForm = target.parentNode; /* (2) On récupère Nom et Prénom */ - var firstname = currentForm.children[8]; - var lastname = currentForm.children[10]; + var firstname = currentForm.children[2]; + var lastname = currentForm.children[3]; /* (3) On échange leurs valeurs */ var tmp = firstname.value; @@ -709,9 +709,9 @@ if( pageManager.vars[0] != null && pageManager.vars[0] == 'facebook' ){ var currentForm = target.parentNode; /* (2) On récupère Pseudo, Nom et Prénom */ - var username = currentForm.children[6]; - var firstname = currentForm.children[8]; - var lastname = currentForm.children[10]; + var username = currentForm.children[1]; + var firstname = currentForm.children[2]; + var lastname = currentForm.children[3]; /* (3) Vérification de la validité */ // Si pseudo pas vide, ou nom et prenom vide -> on ne fais rien