Migration des modifications de `phone.fiche` et `phone.mini` vers `facebook.fiche` et `facebook.mini` ?? Pb de timestamp et de synchronisation [FONCT]

This commit is contained in:
xdrm-brackets 2016-10-17 11:45:25 +02:00
parent 4f09c888bf
commit 247fb83b3e
8 changed files with 231 additions and 128 deletions

View File

@ -104,7 +104,8 @@ inputFacebookFiche.prototype.fieldsToStorage = function(){
console.log( diff(existingData, obj, ['hash', 'valid', 'timestamp']) );
console.warn('> FICHE UPDATE');
obj.timestamp = Date.now();
}
}else if( existingData['timestamp'] == undefined )
obj.timestamp = this.defaultData.timestamp;
/* (7) On enregistre les données dans le 'localStorage' */
lsi.set('f_fiches', obj.uid, obj);
@ -352,108 +353,216 @@ inputFacebookFiche.prototype.storageToFields = function(){
inputFacebookFiche.prototype.sync = function(){
console.group('[facebook.fiche] synchronisation');
/* (1) Initialisation
---------------------------------------------------------*/
/* (1) On récupère tous les CONTACTS */
var contacts = lsi.export('f_contacts');
/* (2) Contiendra les uids des fiches qui seront crées */
var addedFicheUids = [];
var ficheData, contactData;
{ /* (1) Initialisation
---------------------------------------------------------*/
/* (1) On récupère tous les CONTACTS */
var contacts = lsi.export('f_contacts');
/* (2) Contiendra les uids des fiches qui seront crées */
var addedFicheUids = [];
var ficheData, contactData, miniData;
/* (2) Mise à jour en fonction des contacts APRÈS SAISIE
---------------------------------------------------------*/
// Nombre maximum de fiches (40, sauf si moins de 40 contacts, dans ce cas, le nombre de contacts);
var nbMaxFiche = lsi.keys('f_contacts').length < 2*this.top_size ? lsi.keys('f_contacts').length : 2*this.top_size;
/* (1) Pour chaque CONTACT, on met à jour/crée la FICHE associée */
for( var uid in contacts ){
/* (1) On cherche un uid de fiche non existant dans l'intervalle [0;40[ */
ficheUid = 0;
while( addedFicheUids.indexOf(ficheUid) > -1 && ficheUid < nbMaxFiche )
ficheUid++;
// On enregistre le nouvel UID dans les uid crées
addedFicheUids.push(ficheUid);
/* (2) On récupère les informations de la FICHE (si elle existe) */
var ficheData = lsi.get('f_fiches', ficheUid);
// Si la fiche n'existe pas, on la crée avec les valeurs par défaut
!ficheData && ( ficheData = this.defaultData );
/* (3) On met à jour la fiche ET on l'enregistre */
ficheData.uid = ficheUid;
ficheData.contact = parseInt(uid);
lsi.set('f_fiches', ficheUid, ficheData);
/* (4) Si on a déja crée 20+20 fiches, on arrête */
if( addedFicheUids.length >= nbMaxFiche )
break;
}
/* (3) Gestion des fiches dupliquées
---------------------------------------------------------*/
ficheData = lsi.export('f_fiches');
{ /* (2) Mise à jour en fonction des contacts APRÈS SAISIE
---------------------------------------------------------*/
for( var key in ficheData ){
// Nombre maximum de fiches (40, sauf si moins de 40 contacts, dans ce cas, le nombre de contacts);
var nbMaxFiche = lsi.keys('f_contacts').length < 2*this.top_size ? lsi.keys('f_contacts').length : 2*this.top_size;
/* (1) On récupère le contact associé */
var associatedContact = lsi.get('f_contacts', ficheData[key].contact);
/* (1) Pour chaque CONTACT, on met à jour/crée la FICHE associée */
for( var uid in contacts ){
// Si erreur, on passe au suivant
if( !associatedContact )
continue;
/* (1) On cherche un uid de fiche non existant dans l'intervalle [0;40[ */
ficheUid = 0;
while( addedFicheUids.indexOf(ficheUid) > -1 && ficheUid < nbMaxFiche )
ficheUid++;
/* (3) On récupère la/les autre(s) fiche(s) (clone(s)) */
var clone = null;
var inCall = parseInt( ficheData[key].uid ) < this.top_size; // vrai si dans les APPELS, sinon dans les SMS
// On enregistre le nouvel UID dans les uid crées
addedFicheUids.push(ficheUid);
for( var i in ficheData ){
/* (2) On récupère les informations de la FICHE (si elle existe) */
var ficheData = lsi.get('f_fiches', ficheUid);
// si on est pas dans le bonne tranche, on passe au suivant
if( inCall && i < this.top_size || !inCall && i >= this.top_size )
continue;
// Si la fiche n'existe pas, on la crée avec les valeurs par défaut
!ficheData && ( ficheData = this.defaultData );
// on récupère le contact associé (si on est dans `call`, celui dans la tranche avec `sms` / et inversement)
contactData = lsi.get('f_contacts', ficheData[i].contact);
/* (3) On met à jour la fiche ET on l'enregistre */
ficheData.uid = ficheUid;
ficheData.contact = parseInt(uid);
lsi.set('f_fiches', ficheUid, ficheData);
if( i == key || !contactData )
continue;
// meme pseudo
var hasSameUsername = contactData.username.length > 0 && associatedContact.username === contactData.username;
// meme lien de contact
var hasSameLink = !isNaN(contactData.existing) && associatedContact.existing === contactData.existing;
// si ont le même contact, alors on enregistre le clone (sauf si la même fiche)
( hasSameUsername || hasSameLink ) && ( clone = ficheData[i] );
if( clone !== null )
/* (4) Si on a déja crée 20+20 fiches, on arrête */
if( addedFicheUids.length >= nbMaxFiche )
break;
}
}
{ /* (3) Gestion des liens entre mini-fiches et fiches
---------------------------------------------------------*/
var hasSameUsername, hasSameLink;
ficheData = lsi.export('f_fiches');
miniData = lsi.export('f_mini-fiches');
// Pour chaque fiche
for( var key in ficheData ){
/* (1) On récupère le contact associé */
var associatedContact = lsi.get('f_contacts', ficheData[key].contact);
// Si erreur, on passe au suivant
if( !associatedContact )
continue;
/* (3) On récupère la mini-fiche clone si existe */
var clone = null;
// Pour chaque mini-fiche
for( var i in miniData ){
// on récupère le contact associé (si on est dans `call`, celui dans la tranche avec `sms` / et inversement)
contactData = lsi.get('f_contacts', miniData[i].contact);
if( !contactData )
continue;
// meme pseudo
hasSameUsername = contactData.username.length > 0 && associatedContact.username === contactData.username;
// meme lien de contact
hasSameLink = !isNaN(contactData.existing) && associatedContact.existing === contactData.existing;
// si ont le même contact, alors on enregistre le clone (sauf si la même fiche)
( hasSameUsername || hasSameLink ) && ( clone = miniData[i] );
if( clone !== null )
break;
}
/* (4) Si c'est le clone qui a été modifié en dernier, on ne fait rien */
var fiche_ts = ( ficheData[key].hasOwnProperty('timestamp') ) ? ficheData[key].timestamp : 0;
var mini_ts = ( clone instanceof Object && clone.hasOwnProperty('timestamp') ) ? clone.timestamp : 0;
if( clone === null )
continue;
/* (5.1) Si clone modifiée en dernier > On copie les données de la mini (CLONE) dans la FICHE */
var copied;
if( mini_ts > fiche_ts ){
// console.warn('copying mini#'+clone.uid+' to fiche#'+ficheData[key].uid, mini_ts-global_start_timestamp, fiche_ts-global_start_timestamp);
copied = ficheData[key];
copied.age = clone.age;
copied.sexe = clone.sexe;
copied.loc = clone.loc;
copied.reltype = clone.reltype;
copied.reltypeSpecial = clone.reltypeSpecial;
copied.timestamp = Date.now();
lsi.set('f_fiches', copied.uid, copied);
// clone.timestamp = copied.timestamp;
// lsi.set('f_mini-fiches', clone.uid, clone);
/* (5.2) Si fiche modifiée en dernier > On copie les données de la FICHE dans la mini (CLONE) */
}else if( fiche_ts > mini_ts ){
// console.warn('copying fiche#'+ficheData[key].uid+' to mini#'+clone.uid, fiche_ts-global_start_timestamp, mini_ts-global_start_timestamp);
copied = clone;
copied.age = ficheData[key].age;
copied.sexe = ficheData[key].sexe;
copied.loc = ficheData[key].loc;
copied.reltype = ficheData[key].reltype;
copied.reltypeSpecial = ficheData[key].reltypeSpecial;
copied.timestamp = Date.now();
lsi.set('f_mini-fiches', copied.uid, copied);
// ficheData[key].timestamp = copied.timestamp;
// lsi.set('f_fiches', ficheData[key].uid, ficheData[key]);
}
}
/* (4) Si c'est le clone qui a été modifié en dernier, on ne fait rien */
var fiche_ts = ( ficheData[key].hasOwnProperty('timestamp') ) ? ficheData[key].timestamp : 0;
var clone_ts = ( clone instanceof Object && clone.hasOwnProperty('timestamp') ) ? clone.timestamp : 0;
if( clone === null || clone_ts > fiche_ts )
continue;
}
/* (5) On copie les données de la FICHE dans le CLONE */
var obj = ficheData[key];
obj.uid = clone.uid;
obj.timestamp = Date.now();
lsi.set('f_fiches', clone.uid, obj);
{ /* (4) Gestion des fiches dupliquées
---------------------------------------------------------*/
ficheData = lsi.export('f_fiches');
for( var key in ficheData ){
/* (1) On récupère le contact associé */
var associatedContact = lsi.get('f_contacts', ficheData[key].contact);
// Si erreur, on passe au suivant
if( !associatedContact )
continue;
/* (3) On récupère la/les autre(s) fiche(s) (clone(s)) */
var clone = null;
var inHistory = parseInt( ficheData[key].uid ) < this.top_size; // vrai si dans l'HISTORIQUE, sinon dans MESSENGER
for( var i in ficheData ){
// si on est pas dans le bonne tranche, on passe au suivant
if( inHistory && i < this.top_size || !inHistory && i >= this.top_size )
continue;
// on récupère le contact associé (si on est dans `history`, celui dans la tranche avec `messenger` / et inversement)
contactData = lsi.get('f_contacts', ficheData[i].contact);
if( i == key || !contactData )
continue;
// meme pseudo
hasSameUsername = contactData.username.length > 0 && associatedContact.username === contactData.username;
// meme lien de contact
hasSameLink = !isNaN(contactData.existing) && associatedContact.existing === contactData.existing;
// si ont le même contact, alors on enregistre le clone (sauf si la même fiche)
( hasSameUsername || hasSameLink ) && ( clone = ficheData[i] );
if( clone !== null )
break;
}
/* (4) Si c'est le clone qui a été modifié en dernier, on ne fait rien */
var fiche_ts = ( ficheData[key].hasOwnProperty('timestamp') ) ? ficheData[key].timestamp : 0;
var clone_ts = ( clone instanceof Object && clone.hasOwnProperty('timestamp') ) ? clone.timestamp : 0;
if( clone === null || clone_ts > fiche_ts )
continue;
// console.warn('copying fiche#'+ficheData[key].uid+' to fiche#'+clone.uid, fiche_ts-global_start_timestamp, clone_ts-global_start_timestamp);
/* (5) On copie les données de la FICHE dans le CLONE */
var copied = ficheData[key];
copied.uid = clone.uid;
// copied.timestamp = Date.now();
lsi.set('f_fiches', copied.uid, copied);
// ficheData[key].timestamp = copied.timestamp;
// lsi.set('f_fiches', ficheData[key].uid, ficheData[key]);
}
}
console.groupEnd();
};

View File

@ -13,13 +13,14 @@ inputFacebookMini.prototype = {
selected: null, // 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
contact: null,
sexe: '2',
age: '.',
studies: '0',
loc: '.',
reltype: '9',
unknown: false,
reltypeSpecial: '',
unknown: false,
timestamp: 0,
valid: false
}
@ -64,6 +65,7 @@ inputFacebookMini.prototype.fieldsToStorage = function(){
var obj = {
uid: parseInt(deflated.uid),
contact: parseInt(deflated.uid),
sexe: deflated.sexe, // [0] Homme, [1] Femme, [2] Indéterminé
age: deflated.age,
studies: deflated.studies,
@ -80,9 +82,10 @@ inputFacebookMini.prototype.fieldsToStorage = function(){
// 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');
console.warn('> MINI UPDATE');
obj.timestamp = Date.now();
}
}else if( existingData['timestamp'] == undefined )
obj.timestamp = this.defaultData.timestamp;
/* (9) On enregistre les données dans le 'localStorage' */
@ -137,6 +140,7 @@ inputFacebookMini.prototype.add = function(objectData){
// On récupère les données communes
associatedContact.username = existingData.name;
objectData.contact = existingData.contact;
objectData.age = existingData.age;
objectData.sexe = existingData.sexe;
objectData.loc = existingData.dist;
@ -281,49 +285,36 @@ inputFacebookMini.prototype.sync = function(){
/* (1) On récupère les clés de tous les CONTACTS */
var contactData = lsi.export('f_contacts');
var ficheData, miniData;
/* (2) On enregistre les contacts qui ne sont pas déja dans les FICHES */
ficheIndexes = lsi.keys('f_fiches');
/* (2) On enregistre les contacts qui sont déja dans les FICHES */
var fiches = lsi.export('f_fiches');
var ignoredContacts = [];
for( var id in fiches )
if( ignoredContacts.indexOf( fiches[id].contact ) == -1 )
ignoredContacts.push( fiches[id].contact );
for( var i in ficheIndexes )
delete contactData[ ficheIndexes[i] ];
/* (3) Pour chaque CONTACT, on met à jour/crée la MINI fiche associée */
/* (3) Pour chaque CONTACT restant, 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('f_mini-fiches', key);
continue;
}
/* (5) Si le contact n'a aucun nominatif, on met inconnu par défaut, mais on ne l'affiche pas */
/* (4) 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 == 0;
// On rajoute un '.' après pour dire qu'on affichera pas
// 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('f_mini-fiches', uid);
miniData = lsi.get('f_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';
miniData = this.defaultData;
miniData.contact = contactData[key].uid;
miniData.valid = false;
}
/* (7) On met à jour la MINI fiche */
miniData.uid = parseInt(key);
miniData.uid = parseInt( key );
/* (8) On enregistre les modification */
lsi.set('f_mini-fiches', uid, miniData);
@ -331,7 +322,7 @@ inputFacebookMini.prototype.sync = function(){
}
/* (9) On met à jour la mini-fiche en cours */
var miniData = lsi.export('f_mini-fiches');
miniData = lsi.export('f_mini-fiches');
// Si la clé n'existe plus
if( miniData[this.selected] == null ){
@ -486,5 +477,6 @@ inputFacebookMini.prototype.attach = function(handler){
this.handler(e.target);
}.bind(this), false);
console.groupEnd();
};

View File

@ -83,7 +83,7 @@ inputPhoneMini.prototype.fieldsToStorage = function(){
if( diff(existingData, obj, ['hash', 'valid', 'timestamp']).length > 0 ){
console.log( diff(existingData, obj, ['hash', 'valid', 'timestamp']) );
console.warn('> FICHE UPDATE');
console.warn('> MINI UPDATE');
obj.timestamp = Date.now();
}else if( existingData['timestamp'] == undefined )
obj.timestamp = this.defaultData.timestamp;

View File

@ -1,6 +1,6 @@
function inputFacebookFiche(a,c){this.container=a;this.nav_container=c;this.top_size=10}inputFacebookFiche.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{sexe:"2",age:".",job:".",famsit:"0",studies:"0",reltype:"0",reltypeSpecial:"",city:"",quartier:"",cp:"",loc:"0",duration:["",""],context:"0",contextSpecial:["","",""],freq:["4","9","14","19","24"],connect:"1 3 5 7 9 11".split(" "),connectSpecial:["",""],timestamp:0,valid:!1}};
inputFacebookFiche.prototype.fieldsToStorage=function(){console.group("[facebook.fiche] fields to storage");for(var a=$$('[data-sublink="facebook"] article.relation-panel .fiche-relation'),c=0;c<a.length;c++){var b=(new FormDeflater(a[c],["input","select"],["data-name"])).deflate(),d=crc32(JSON.stringify(b)),e=lsi.get("f_fiches",b.uid);if(!1!==e){if(null!=e.hash&&e.hash==d)return;b={contact:parseInt(b.contact),uid:parseInt(b.uid),sexe:b.sexe,age:b.age,job:b.job,famsit:b.famsit,studies:b.studies,reltype:b.reltype,
reltypeSpecial:b.reltypeSpecial,city:b.city,quartier:b.quartier,cp:b.cp,loc:b.loc,duration:b.duration,context:b.context,contextSpecial:b.contextSpecial,freq:b.freq,connect:b.connect,connectSpecial:b.connectSpecial,hash:d};b.valid=this.check(b);0<diff(e,b,["hash","valid","timestamp"]).length&&(console.log(diff(e,b,["hash","valid","timestamp"])),console.warn("> FICHE UPDATE"),b.timestamp=Date.now());lsi.set("f_fiches",b.uid,b)}}console.groupEnd()};
inputFacebookFiche.prototype.fieldsToStorage=function(){console.group("[facebook.fiche] fields to storage");for(var a=$$('[data-sublink="facebook"] article.relation-panel .fiche-relation'),c=0;c<a.length;c++){var b=(new FormDeflater(a[c],["input","select"],["data-name"])).deflate(),e=crc32(JSON.stringify(b)),d=lsi.get("f_fiches",b.uid);if(!1!==d){if(null!=d.hash&&d.hash==e)return;b={contact:parseInt(b.contact),uid:parseInt(b.uid),sexe:b.sexe,age:b.age,job:b.job,famsit:b.famsit,studies:b.studies,reltype:b.reltype,
reltypeSpecial:b.reltypeSpecial,city:b.city,quartier:b.quartier,cp:b.cp,loc:b.loc,duration:b.duration,context:b.context,contextSpecial:b.contextSpecial,freq:b.freq,connect:b.connect,connectSpecial:b.connectSpecial,hash:e};b.valid=this.check(b);0<diff(d,b,["hash","valid","timestamp"]).length?(console.log(diff(d,b,["hash","valid","timestamp"])),console.warn("> FICHE UPDATE"),b.timestamp=Date.now()):void 0==d.timestamp&&(b.timestamp=this.defaultData.timestamp);lsi.set("f_fiches",b.uid,b)}}console.groupEnd()};
inputFacebookFiche.prototype.add=function(a){if(null==a.uid||isNaN(a.uid)||null==a.contact||isNaN(a.contact))return!1;a.city=null!=a.city?a.city:this.defaultData.city;a.quartier=null!=a.quartier?a.quartier:this.defaultData.quartier;a.cp=null!=a.cp?a.cp:this.defaultData.cp;a.duration[0]=null!=a.duration[0]?a.duration[0]:this.defaultData.duration[0];a.duration[1]=null!=a.duration[1]?a.duration[1]:this.defaultData.duration[1];a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;
a.contextSpecial[0]=null!=a.contextSpecial[0]?a.contextSpecial[0]:this.defaultData.contextSpecial[0];a.contextSpecial[1]=null!=a.contextSpecial[1]?a.contextSpecial[1]:this.defaultData.contextSpecial[1];a.contextSpecial[2]=null!=a.contextSpecial[2]?a.contextSpecial[2]:this.defaultData.contextSpecial[2];a.connectSpecial[0]=null!=a.connectSpecial[0]?a.connectSpecial[0]:this.defaultData.connectSpecial[0];a.connectSpecial[1]=null!=a.connectSpecial[1]?a.connectSpecial[1]:this.defaultData.connectSpecial[1];
a.job=null!=a.job?a.job:this.defaultData.job;a.studies=null!=a.studies?a.studies:this.defaultData.studies;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.famsit=null!=a.famsit?a.famsit:this.defaultData.famsit;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.loc=null!=a.loc?a.loc:this.defaultData.loc;a.context=null!=a.context?a.context:this.defaultData.context;a.freq=null!=a.freq?a.freq:this.defaultData.freq;a.connect=null!=a.connect?a.connect:
@ -12,10 +12,12 @@ a.uid+'"] ~ h5>input[type="radio"][data-name="famsit"]');for(c=0;c<b.length;c++)
a.uid+'"] ~ h5>input[type="radio"][data-name="loc"]');for(c=0;c<b.length;c++)b[c].value==a.loc?b[c].setAttribute("checked","checked"):b[c].removeAttribute("checked");b=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="context"]');for(c=0;c<b.length;c++)b[c].value==a.context?b[c].setAttribute("checked","checked"):b[c].removeAttribute("checked");b=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+
a.uid+'"] ~ h5>input[type="radio"][data-name="freq"]');for(c=0;c<b.length;c++)-1<a.freq.indexOf(b[c].value)?b[c].setAttribute("checked","checked"):b[c].removeAttribute("checked");b=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="connect"]');for(c=0;c<b.length;c++)-1<a.connect.indexOf(b[c].value)?b[c].setAttribute("checked","checked"):b[c].removeAttribute("checked")};
inputFacebookFiche.prototype.storageToFields=function(){console.group("[facebook.fiche] storage to fields");var a=lsi["export"]("f_fiches");this.container.innerHTML="";for(var c in a)a[c].uid==this.selected&&this.add(a[c]);this.updateNavBar();console.groupEnd()};
inputFacebookFiche.prototype.sync=function(){console.group("[facebook.fiche] synchronisation");var a=lsi["export"]("f_contacts"),c=[],b,d=lsi.keys("f_contacts").length<2*this.top_size?lsi.keys("f_contacts").length:2*this.top_size,e;for(e in a){for(ficheUid=0;-1<c.indexOf(ficheUid)&&ficheUid<d;)ficheUid++;c.push(ficheUid);a=lsi.get("f_fiches",ficheUid);!a&&(a=this.defaultData);a.uid=ficheUid;a.contact=parseInt(e);lsi.set("f_fiches",ficheUid,a);if(c.length>=d)break}var a=lsi["export"]("f_fiches"),f;
for(f in a)if(d=lsi.get("f_contacts",a[f].contact)){c=null;e=parseInt(a[f].uid)<this.top_size;for(var g in a)if(!(e&&g<this.top_size||!e&&g>=this.top_size)&&(b=lsi.get("f_contacts",a[g].contact),g!=f&&b)){var h=0<b.username.length&&d.username===b.username;b=!isNaN(b.existing)&&d.existing===b.existing;(h||b)&&(c=a[g]);if(null!==c)break}d=a[f].hasOwnProperty("timestamp")?a[f].timestamp:0;e=c instanceof Object&&c.hasOwnProperty("timestamp")?c.timestamp:0;null===c||e>d||(d=a[f],d.uid=c.uid,d.timestamp=
Date.now(),lsi.set("f_fiches",c.uid,d))}console.groupEnd()};inputFacebookFiche.prototype.nav=function(a){if(!(a instanceof Element&&a.getData("n"))||isNaN(a.getData("n"))||"f_nav-fiche"!=a.parentNode.id)return!1;for(var c=$$('[data-sublink="facebook"] #f_nav-fiche > span.active'),b=0;b<c.length;b++)c[b].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
inputFacebookFiche.prototype.updateNavBar=function(){var a=lsi["export"]("f_fiches");this.nav_container.innerHTML="";for(var c=Object.keys(a),b=0;b<c.length;b++){var d=parseInt(c[b]);0==d&&(this.nav_container.innerHTML+="<span>HISTORIQUE</span>");20>d&&b<c.length-1&&20<=c[b+1]?this.nav_container.innerHTML+='<span data-n="'+d+'" class="lc">'+(d%20+1)+"</span>&nbsp;&nbsp;":(20==d&&(this.nav_container.innerHTML+='<br><span class="fc">MESSENGER&nbsp;</span>'),this.nav_container.innerHTML+='<span data-n="'+
d+'">'+(d%20+1)+"</span>")}for(var e in a)c=$('[data-sublink="facebook"] #f_nav-fiche [data-n="'+a[e].uid+'"]'),null!=c&&(!0===a[e].valid?c.addClass("done"):c.remClass("done"));this.nav($('[data-sublink="facebook"] #f_nav-fiche [data-n="'+this.selected+'"]'))};
inputFacebookFiche.prototype.sync=function(){console.group("[facebook.fiche] synchronisation");var a=lsi["export"]("f_contacts"),c=[],b,e;e=lsi.keys("f_contacts").length<2*this.top_size?lsi.keys("f_contacts").length:2*this.top_size;for(var d in a){for(ficheUid=0;-1<c.indexOf(ficheUid)&&ficheUid<e;)ficheUid++;c.push(ficheUid);a=lsi.get("f_fiches",ficheUid);!a&&(a=this.defaultData);a.uid=ficheUid;a.contact=parseInt(d);lsi.set("f_fiches",ficheUid,a);if(c.length>=e)break}a=lsi["export"]("f_fiches");e=
lsi["export"]("f_mini-fiches");for(var f in a){var g=lsi.get("f_contacts",a[f].contact);if(g){var c=null,h;for(h in e)if(b=lsi.get("f_contacts",e[h].contact))if(d=0<b.username.length&&g.username===b.username,b=!isNaN(b.existing)&&g.existing===b.existing,(d||b)&&(c=e[h]),null!==c)break;d=a[f].hasOwnProperty("timestamp")?a[f].timestamp:0;g=c instanceof Object&&c.hasOwnProperty("timestamp")?c.timestamp:0;null!==c&&(g>d?(d=a[f],d.age=c.age,d.sexe=c.sexe,d.loc=c.loc,d.reltype=c.reltype,d.reltypeSpecial=
c.reltypeSpecial,d.timestamp=Date.now(),lsi.set("f_fiches",d.uid,d)):d>g&&(d=c,d.age=a[f].age,d.sexe=a[f].sexe,d.loc=a[f].loc,d.reltype=a[f].reltype,d.reltypeSpecial=a[f].reltypeSpecial,d.timestamp=Date.now(),lsi.set("f_mini-fiches",d.uid,d)))}}a=lsi["export"]("f_fiches");for(f in a)if(g=lsi.get("f_contacts",a[f].contact)){c=null;e=parseInt(a[f].uid)<this.top_size;for(h in a)if(!(e&&h<this.top_size||!e&&h>=this.top_size)&&(b=lsi.get("f_contacts",a[h].contact),h!=f&&b&&(d=0<b.username.length&&g.username===
b.username,b=!isNaN(b.existing)&&g.existing===b.existing,(d||b)&&(c=a[h]),null!==c)))break;d=a[f].hasOwnProperty("timestamp")?a[f].timestamp:0;e=c instanceof Object&&c.hasOwnProperty("timestamp")?c.timestamp:0;null===c||e>d||(d=a[f],d.uid=c.uid,lsi.set("f_fiches",d.uid,d))}console.groupEnd()};
inputFacebookFiche.prototype.nav=function(a){if(!(a instanceof Element&&a.getData("n"))||isNaN(a.getData("n"))||"f_nav-fiche"!=a.parentNode.id)return!1;for(var c=$$('[data-sublink="facebook"] #f_nav-fiche > span.active'),b=0;b<c.length;b++)c[b].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
inputFacebookFiche.prototype.updateNavBar=function(){var a=lsi["export"]("f_fiches");this.nav_container.innerHTML="";for(var c=Object.keys(a),b=0;b<c.length;b++){var e=parseInt(c[b]);0==e&&(this.nav_container.innerHTML+="<span>HISTORIQUE</span>");20>e&&b<c.length-1&&20<=c[b+1]?this.nav_container.innerHTML+='<span data-n="'+e+'" class="lc">'+(e%20+1)+"</span>&nbsp;&nbsp;":(20==e&&(this.nav_container.innerHTML+='<br><span class="fc">MESSENGER&nbsp;</span>'),this.nav_container.innerHTML+='<span data-n="'+
e+'">'+(e%20+1)+"</span>")}for(var d in a)c=$('[data-sublink="facebook"] #f_nav-fiche [data-n="'+a[d].uid+'"]'),null!=c&&(!0===a[d].valid?c.addClass("done"):c.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]))&&0<a.duration[0].length||isNaN(parseInt(a.duration[1]))&&0<a.duration[1].length||0==a.duration[0].length+a.duration[1].length||"."==a.job||"."==a.studies||"."==a.age||""==a.sexe||""==a.famsit||""==a.reltype||""==a.loc||""==a.context)return!1;for(var c=0;c<a.freq.length;c++)if(""==a.freq[c])return!1;for(c=0;c<a.connect.length;c++)if(""==a.connect[c])return!1;return"10"==a.reltype&&2>a.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.group("[facebook.fiche] attaching events");lsi.createDataset("f_fiches");this.storageToFields();this.handler=a;var c=this,c=this;this.nav_container.addEventListener("click",function(a){c.nav(a.target);c.handler(a.target)},!1);console.groupEnd()};

View File

@ -1,13 +1,13 @@
function inputFacebookMini(a,c){this.container=a;this.nav_container=c}inputFacebookMini.prototype={container:this.container,nav_container:this.nav_container,selected:null,handler:null,defaultData:{sexe:"2",age:".",studies:"0",loc:".",reltype:"9",unknown:!1,reltypeSpecial:"",timestamp:0,valid:!1}};
inputFacebookMini.prototype.fieldsToStorage=function(){console.group("[facebook.mini] fields to storage");for(var a=$$('[data-sublink="facebook"] article.mini-relation-panel .mini-fiche-relation'),c=0;c<a.length;c++){var b=(new FormDeflater(a[c],["input","select"],["data-name"])).deflate(),d=crc32(JSON.stringify(b)),e=lsi.get("f_mini-fiches",b.uid);if(!1!==e){if(null!=e&&null!=e.hash&&e.hash==d)return;console.warn("> MINI UPDATE");b={uid:parseInt(b.uid),sexe:b.sexe,age:b.age,studies:b.studies,reltype:b.reltype,
reltypeSpecial:b.reltypeSpecial,loc:b.loc,unknown:null!=b.unknown,hash:d};b.valid=this.check(b);0<diff(e,b,["hash","valid","timestamp"]).length&&(console.log(diff(e,b,["hash","valid","timestamp"])),console.warn("> FICHE UPDATE"),b.timestamp=Date.now());lsi.set("f_mini-fiches",b.uid,b)}}console.groupEnd()};
function inputFacebookMini(a,c){this.container=a;this.nav_container=c}inputFacebookMini.prototype={container:this.container,nav_container:this.nav_container,selected:null,handler:null,defaultData:{contact:null,sexe:"2",age:".",studies:"0",loc:".",reltype:"9",reltypeSpecial:"",unknown:!1,timestamp:0,valid:!1}};
inputFacebookMini.prototype.fieldsToStorage=function(){console.group("[facebook.mini] fields to storage");for(var a=$$('[data-sublink="facebook"] article.mini-relation-panel .mini-fiche-relation'),c=0;c<a.length;c++){var b=(new FormDeflater(a[c],["input","select"],["data-name"])).deflate(),e=crc32(JSON.stringify(b)),d=lsi.get("f_mini-fiches",b.uid);if(!1!==d){if(null!=d&&null!=d.hash&&d.hash==e)return;console.warn("> MINI UPDATE");b={uid:parseInt(b.uid),contact:parseInt(b.uid),sexe:b.sexe,age:b.age,
studies:b.studies,reltype:b.reltype,reltypeSpecial:b.reltypeSpecial,loc:b.loc,unknown:null!=b.unknown,hash:e};b.valid=this.check(b);0<diff(d,b,["hash","valid","timestamp"]).length?(console.log(diff(d,b,["hash","valid","timestamp"])),console.warn("> MINI UPDATE"),b.timestamp=Date.now()):void 0==d.timestamp&&(b.timestamp=this.defaultData.timestamp);lsi.set("f_mini-fiches",b.uid,b)}}console.groupEnd()};
inputFacebookMini.prototype.add=function(a){if(null==a||null==a.uid)return!1;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.studies=null!=a.studies?a.studies:this.defaultData.studies;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;a.loc=null!=a.loc?a.loc:this.defaultData.loc;a.unknown=null!=a.unknown?a.unknown:this.defaultData.unknown;var c=lsi.get("f_contacts",
a.uid);if(!1===c)return!1;if(!isNaN(c.existing)){var b=lsi.get("f_friends",c.existing);c.username=b.name;a.age=b.age;a.sexe=b.sexe;a.loc=b.dist;isNaN(b.reltype)?(a.reltype=10,a.reltypeSpecial=b.reltype):(a.reltype=b.reltype,a.reltypeSpecial="");null!=b.studies1&&(a.studies=b.studies1)}this.container.innerHTML+=fMiniFicheBuilder.build({name:c.username,uid:a.uid,reltypespecial:a.reltypeSpecial});c=$('[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!=c&&c.setAttribute("selected","selected");c=$('[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!=c&&c.setAttribute("selected","selected");b=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]');for(c=0;c<b.length;c++)b[c].value==a.sexe?b[c].setAttribute("checked","checked"):
b[c].removeAttribute("checked");b=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="reltype"]');for(c=0;c<b.length;c++)b[c].value==a.reltype?b[c].setAttribute("checked","checked"):b[c].removeAttribute("checked");b=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="loc"]');for(c=0;c<b.length;c++)b[c].value==a.loc?b[c].setAttribute("checked",
"checked"):b[c].removeAttribute("checked");c=$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="checkbox"][data-name="unknown"]');null!=c&&a.unknown&&c.setAttribute("checked","checked")};
a.uid);if(!1===c)return!1;if(!isNaN(c.existing)){var b=lsi.get("f_friends",c.existing);c.username=b.name;a.contact=b.contact;a.age=b.age;a.sexe=b.sexe;a.loc=b.dist;isNaN(b.reltype)?(a.reltype=10,a.reltypeSpecial=b.reltype):(a.reltype=b.reltype,a.reltypeSpecial="");null!=b.studies1&&(a.studies=b.studies1)}this.container.innerHTML+=fMiniFicheBuilder.build({name:c.username,uid:a.uid,reltypespecial:a.reltypeSpecial});c=$('[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!=c&&c.setAttribute("selected","selected");c=$('[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!=c&&c.setAttribute("selected","selected");b=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]');for(c=0;c<b.length;c++)b[c].value==
a.sexe?b[c].setAttribute("checked","checked"):b[c].removeAttribute("checked");b=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="reltype"]');for(c=0;c<b.length;c++)b[c].value==a.reltype?b[c].setAttribute("checked","checked"):b[c].removeAttribute("checked");b=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="loc"]');for(c=0;c<b.length;c++)b[c].value==
a.loc?b[c].setAttribute("checked","checked"):b[c].removeAttribute("checked");c=$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="checkbox"][data-name="unknown"]');null!=c&&a.unknown&&c.setAttribute("checked","checked")};
inputFacebookMini.prototype.storageToFields=function(){console.group("[facebook.mini] storage to fields");var a=lsi.get("f_mini-fiches",this.selected);if(null===a){if(null===this.selected)return a=lsi.keys("f_mini-fiches"),0<a.length?(this.selected=a[0],this.storageToFields()):!1;this.updateNavBar();return!1}this.container.innerHTML="";this.add(a);this.updateNavBar();console.groupEnd()};
inputFacebookMini.prototype.sync=function(){console.group("[facebook.mini] synchronisation");var a=lsi["export"]("f_contacts"),c=lsi["export"]("f_fiches"),b=[],d;for(d in c)-1==b.indexOf(c[d].contact)&&b.push(c[d].contact);for(var e in a)-1<b.indexOf(parseInt(e))?lsi.del("f_mini-fiches",e):(c=0==a[e].username.length?e.toString()+"-":e,d=lsi.get("f_mini-fiches",c),null==d&&(d=this.defaultData,d.valid=!1,isNaN(c)&&(d.reltype="9")),d.uid=parseInt(e),lsi.set("f_mini-fiches",c,d));d=lsi["export"]("f_mini-fiches");
if(null==d[this.selected])for(e in d)if(!isNaN(e)){this.selected=parseInt(e);break}console.groupEnd()};inputFacebookMini.prototype.nav=function(a){if(!(a instanceof Element&&a.getData("n"))||isNaN(a.getData("n"))||"f_nav-mini"!=a.parentNode.id)return!1;for(var c=$$('[data-sublink="facebook"] #f_nav-mini > span.active'),b=0;b<c.length;b++)c[b].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
inputFacebookMini.prototype.sync=function(){console.group("[facebook.mini] synchronisation");var a=lsi["export"]("f_contacts"),c;ficheIndexes=lsi.keys("f_fiches");for(c in ficheIndexes)delete a[ficheIndexes[c]];for(var b in a){var e=0==a[b].username.length?b.toString()+"-":b;c=lsi.get("f_mini-fiches",e);null==c&&(c=this.defaultData,c.contact=a[b].uid,c.valid=!1);c.uid=parseInt(b);lsi.set("f_mini-fiches",e,c)}c=lsi["export"]("f_mini-fiches");if(null==c[this.selected])for(b in c)if(!isNaN(b)){this.selected=
parseInt(b);break}console.groupEnd()};inputFacebookMini.prototype.nav=function(a){if(!(a instanceof Element&&a.getData("n"))||isNaN(a.getData("n"))||"f_nav-mini"!=a.parentNode.id)return!1;for(var c=$$('[data-sublink="facebook"] #f_nav-mini > span.active'),b=0;b<c.length;b++)c[b].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
inputFacebookMini.prototype.updateNavBar=function(){var a=lsi["export"]("f_mini-fiches");this.nav_container.innerHTML="";var c=0,b;for(b in a)isNaN(b)||(this.nav_container.innerHTML+='<span data-n="'+b+'">'+ ++c+"</span>");for(b in a)isNaN(b)||(c=$('[data-sublink="facebook"] #f_nav-mini [data-n="'+a[b].uid+'"]'),null!=c&&(!0===a[b].valid?c.addClass("done"):c.remClass("done")));this.nav($('[data-sublink="facebook"] #f_nav-mini [data-n="'+this.selected+'"]'))};
inputFacebookMini.prototype.check=function(a){return a.unknown?!0:""==a.sexe||"."==a.studies||"."==a.age||""==a.loc||""==a.reltype||"10"==a.reltype&&2>a.reltypeSpecial.length?!1:!0};inputFacebookMini.prototype.attach=function(a){console.group("[facebook.mini] attaching events");lsi.createDataset("f_mini-fiches");this.storageToFields();this.handler=a;this.nav_container.addEventListener("click",function(a){this.nav(a.target);this.handler(a.target)}.bind(this),!1);console.groupEnd()};

View File

@ -1,6 +1,6 @@
function inputPhoneMini(a,c){this.container=a;this.nav_container=c}inputPhoneMini.prototype={container:this.container,nav_container:this.nav_container,selected:null,handler:null,defaultData:{contact:null,sexe:"2",age:".",studies:"0",loc:".",reltype:"9",reltypeSpecial:"",unknown:!1,timestamp:0,valid:!1}};
inputPhoneMini.prototype.fieldsToStorage=function(){console.group("[phone.mini] fields to storage");for(var a=$$('[data-sublink="phone"] article.mini-relation-panel .mini-fiche-relation'),c=0;c<a.length;c++){var b=(new FormDeflater(a[c],["input","select"],["data-name"])).deflate(),e=crc32(JSON.stringify(b)),d=lsi.get("p_mini-fiches",b.uid);if(!1!==d){if(null!=d&&null!=d.hash&&d.hash==e)return;console.warn("> MINI UPDATE");b={uid:parseInt(b.uid),contact:parseInt(b.uid),sexe:b.sexe,age:b.age,studies:b.studies,
reltype:b.reltype,reltypeSpecial:b.reltypeSpecial,loc:b.loc,unknown:null!=b.unknown,hash:e};b.valid=this.check(b);0<diff(d,b,["hash","valid","timestamp"]).length?(console.log(diff(d,b,["hash","valid","timestamp"])),console.warn("> FICHE UPDATE"),b.timestamp=Date.now()):void 0==d.timestamp&&(b.timestamp=this.defaultData.timestamp);lsi.set("p_mini-fiches",b.uid,b)}}console.groupEnd()};
reltype:b.reltype,reltypeSpecial:b.reltypeSpecial,loc:b.loc,unknown:null!=b.unknown,hash:e};b.valid=this.check(b);0<diff(d,b,["hash","valid","timestamp"]).length?(console.log(diff(d,b,["hash","valid","timestamp"])),console.warn("> MINI UPDATE"),b.timestamp=Date.now()):void 0==d.timestamp&&(b.timestamp=this.defaultData.timestamp);lsi.set("p_mini-fiches",b.uid,b)}}console.groupEnd()};
inputPhoneMini.prototype.add=function(a){if(null==a||null==a.uid)return!1;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.studies=null!=a.studies?a.studies:this.defaultData.studies;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;a.loc=null!=a.loc?a.loc:this.defaultData.loc;a.unknown=null!=a.unknown?a.unknown:this.defaultData.unknown;var c=lsi.get("p_contacts",
a.uid);if(!1===c)return!1;if(!isNaN(c.existing)){var b=lsi.get("p_friends",c.existing);c.username=b.name;a.contact=c.uid;a.age=b.age;a.sexe=b.sexe;a.loc=b.dist;isNaN(b.reltype)?(a.reltype=10,a.reltypeSpecial=b.reltype):(a.reltype=b.reltype,a.reltypeSpecial="");null!=b.studies1&&(a.studies=b.studies1)}this.container.innerHTML+=pMiniFicheBuilder.build({name:c.username,countcall:c.countcall,countsms:c.countsms,uid:a.uid,reltypespecial:a.reltypeSpecial});c=$('[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!=c&&c.setAttribute("selected","selected");c=$('[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!=c&&c.setAttribute("selected","selected");b=$$('[data-sublink="phone"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]');for(c=0;c<b.length;c++)b[c].value==

View File

@ -465,7 +465,7 @@ var facebookRoutine = function(){
/* (2) On lance le téléchargement */
var downloadTarget = $('[data-sublink="facebook"] #f_download-target'); // On récupère le lien (<a>) caché qui fera le téléchargement
downloadTarget.download = 'local-phone-data.json'; // Nom du fichier qui sera téléchargé
downloadTarget.download = 'local-facebook-data.json'; // Nom du fichier qui sera téléchargé
downloadTarget.href = 'data:application/octet-stream,' + encodeURIComponent(JSON.stringify(data)); // Contenu
downloadTarget.click(); // On lance le téléchargement

View File

@ -14,7 +14,7 @@ console.log(a)},!1)},!1),console.groupEnd())};include("/js/includes/input-phone-
var fAlready=0,fLoaded=[0,0,0,0,0],facebookRoutine=function(){!Math.min.apply(Math,fLoaded)|fAlready||(fAlready=1,console.groupEnd(),console.group("[facebook] Initialization"),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.top_size=20,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-phone-data.json";b.href="data:application/octet-stream,"+encodeURIComponent(JSON.stringify(a));
!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);pSubjectManager.storageToFields();pContactManager.storageToFields();pMatriceManager.storageToFields();pDynamicUpdate(!0)})},!1),$('[data-sublink="facebook"] #f_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 <i>sujet</i>"),!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 <i>fiche rapide</i> <b>"+b+"</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",