Propagation de la gestion du clonage des `fiches` et des `mini-fiches` de `input.phone` vers `input.facebook` (`fieldsToStorage`, `storageToFields`, `sync`)
This commit is contained in:
parent
b41f50e23e
commit
05efdedd02
|
@ -6,6 +6,7 @@ function inputFacebookFiche(container, navContainer){
|
||||||
this.top_size = 10;
|
this.top_size = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* [1] Attributs
|
/* [1] Attributs
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookFiche.prototype = {
|
inputFacebookFiche.prototype = {
|
||||||
|
@ -42,39 +43,29 @@ inputFacebookFiche.prototype = {
|
||||||
inputFacebookFiche.prototype.fieldsToStorage = function(){
|
inputFacebookFiche.prototype.fieldsToStorage = function(){
|
||||||
console.group('[facebook.fiche] fields to storage');
|
console.group('[facebook.fiche] fields to storage');
|
||||||
|
|
||||||
// {1} Pour chaque formulaire de contact présent //
|
var i, l, deflater, deflated, existingData, obj, hash;
|
||||||
|
|
||||||
|
/* (1) Pour chaque formulaire de contact présent
|
||||||
|
---------------------------------------------------------*/
|
||||||
var existingFiches = $$('[data-sublink="facebook"] article.relation-panel .fiche-relation');
|
var existingFiches = $$('[data-sublink="facebook"] article.relation-panel .fiche-relation');
|
||||||
for( var i = 0 ; i < existingFiches.length ; i++ ){
|
for( i = 0, l = existingFiches.length ; i < l ; i++ ){
|
||||||
|
|
||||||
// {2} On initialise notre deflater pour récupérer les valeurs //
|
/* (1) On initialise notre deflater pour récupérer les valeurs */
|
||||||
var deflater = new FormDeflater(existingFiches[i], ['input', 'select'], ['data-name']);
|
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 //
|
/* (2) On récupère les données */
|
||||||
var deflated = deflater.deflate();
|
deflated = deflater.deflate();
|
||||||
// On crée le hash
|
|
||||||
var deflatedHash = crc32(JSON.stringify(deflated));
|
|
||||||
|
|
||||||
|
/* (3) On récupère les données du LSI si elles existent */
|
||||||
|
existingData = lsi.get('f_fiches', deflated.uid);
|
||||||
|
|
||||||
// console.log( deflated );
|
// Si erreur, on passe à la fiche suivante
|
||||||
|
|
||||||
|
|
||||||
// {4} On récupère les données du LSI si elles existent //
|
|
||||||
var existingData = lsi.get('f_fiches', deflated.uid);
|
|
||||||
|
|
||||||
// Si n'existe pas, on passe au suivant
|
|
||||||
if( existingData === false )
|
if( existingData === false )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
||||||
// {5} On récupère et met en forme les valeurs du deflater //
|
/* (4) On récupère et met en forme les valeurs du deflater */
|
||||||
// Si le hash est le même, on ne fait rien
|
obj = {
|
||||||
if( existingData.hash != null && existingData.hash == deflatedHash )
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
var obj = {
|
|
||||||
contact: parseInt(deflated.contact),
|
|
||||||
uid: parseInt(deflated.uid),
|
|
||||||
sexe: deflated.sexe,
|
sexe: deflated.sexe,
|
||||||
age: deflated.age,
|
age: deflated.age,
|
||||||
job: deflated.job,
|
job: deflated.job,
|
||||||
|
@ -92,22 +83,31 @@ inputFacebookFiche.prototype.fieldsToStorage = function(){
|
||||||
freq: deflated.freq,
|
freq: deflated.freq,
|
||||||
connect: deflated.connect,
|
connect: deflated.connect,
|
||||||
connectSpecial: deflated.connectSpecial,
|
connectSpecial: deflated.connectSpecial,
|
||||||
hash: deflatedHash
|
uid: parseInt(deflated.uid),
|
||||||
|
contact: parseInt(deflated.contact)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* (5) On calcule/compare le hash */
|
||||||
|
|
||||||
/* (6) On vérifie la validité des données et on l'enregistre dans l'objet avec la date de modification */
|
// {5.1} On calcule le hash //
|
||||||
|
hash = crc32( JSON.stringify(obj) );
|
||||||
|
|
||||||
|
// {5.2} Si le hash est identique, on ne fait rien //
|
||||||
|
if( existingData['hash'] != undefined && hash == existingData.hash )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// {5.3} On enregistre le hash //
|
||||||
|
obj.hash = hash;
|
||||||
|
|
||||||
|
|
||||||
|
/* (6) On calcule la validité des données */
|
||||||
obj.valid = this.check(obj);
|
obj.valid = this.check(obj);
|
||||||
|
|
||||||
// On met à jour la date de modification, si on a pas qu'@uid de différent
|
/* (7) On met à jour le `timestamp` (car à ce point, on a une modification) */
|
||||||
if( diff(existingData, obj, ['hash', 'valid', 'timestamp']).length > 0 ){
|
obj.timestamp = Date.now();
|
||||||
console.log( diff(existingData, obj, ['hash', 'valid', 'timestamp']) );
|
console.warn('> FICHE UPDATE ('+(obj.timestamp-input_ts)+')');
|
||||||
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' */
|
/* (8) On enregistre les données dans le 'localStorage' */
|
||||||
lsi.set('f_fiches', obj.uid, obj);
|
lsi.set('f_fiches', obj.uid, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,13 +115,6 @@ inputFacebookFiche.prototype.fieldsToStorage = function(){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [3] Gestion de l'ajout physique d'une nouvelle fiche
|
/* [3] Gestion de l'ajout physique d'une nouvelle fiche
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
/*
|
/*
|
||||||
|
@ -308,46 +301,46 @@ inputFacebookFiche.prototype.add = function(objectData){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [4] Gestion de l'affichage depuis le 'localStorage'
|
/* [4] Gestion de l'affichage depuis le 'localStorage'
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookFiche.prototype.storageToFields = function(){
|
inputFacebookFiche.prototype.storageToFields = function(){
|
||||||
console.group('[facebook.fiche] storage to fields');
|
console.group('[facebook.fiche] storage to fields');
|
||||||
|
|
||||||
// {1} Pour chaque contact du 'localStorage' //
|
var clone, hash;
|
||||||
|
|
||||||
|
/* (1) On récupère les fiches du 'localStorage' */
|
||||||
var ficheData = lsi.export('f_fiches');
|
var ficheData = lsi.export('f_fiches');
|
||||||
|
|
||||||
// On réinitialise le HTML
|
/* (2) On réinitialise le HTML */
|
||||||
this.container.innerHTML = '';
|
this.container.innerHTML = '';
|
||||||
|
|
||||||
for( var key in ficheData )
|
/* (3) Pour chaque fiche */
|
||||||
|
for( var key in ficheData ){
|
||||||
|
|
||||||
|
// {3.1} On calcule/enregistre le hash (sans `timestamp`, `hash`, `valid`) //
|
||||||
|
clone = cloneObject( ficheData[key] );
|
||||||
|
delete clone['hash'];
|
||||||
|
delete clone['timestamp'];
|
||||||
|
delete clone['valid'];
|
||||||
|
ficheData[key].hash = crc32( JSON.stringify(clone) );
|
||||||
|
|
||||||
|
// On enregistre dans le `localStorage`
|
||||||
|
lsi.set('f_fiches', ficheData[key].uid, ficheData[key]);
|
||||||
|
|
||||||
|
// {3.2} Pour la fiche à rendre graphiquement //
|
||||||
if( ficheData[key].uid == this.selected )
|
if( ficheData[key].uid == this.selected )
|
||||||
this.add(ficheData[key]);
|
this.add(ficheData[key]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// {4} On met à jour la navigation //
|
|
||||||
|
/* (4) On met à jour la navigation */
|
||||||
this.updateNavBar();
|
this.updateNavBar();
|
||||||
|
|
||||||
console.groupEnd();
|
console.groupEnd();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [5] Synchronisation des CONTACT vers les MINI fiches
|
/* [5] Synchronisation des CONTACT vers les MINI fiches
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookFiche.prototype.sync = function(){
|
inputFacebookFiche.prototype.sync = function(){
|
||||||
|
@ -362,7 +355,7 @@ inputFacebookFiche.prototype.sync = function(){
|
||||||
|
|
||||||
/* (2) Contiendra les uids des fiches qui seront crées */
|
/* (2) Contiendra les uids des fiches qui seront crées */
|
||||||
var addedFicheUids = [];
|
var addedFicheUids = [];
|
||||||
var ficheData, contactData, miniData;
|
var ficheData, contactData, miniData, i, ficheUid, uid, nbMaxFiche;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,34 +364,22 @@ inputFacebookFiche.prototype.sync = function(){
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
|
|
||||||
// Nombre maximum de fiches (40, sauf si moins de 40 contacts, dans ce cas, le nombre de contacts);
|
// 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;
|
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 */
|
/* (1) Pour chaque CONTACT, on met à jour/crée la FICHE associée */
|
||||||
for( var uid in contacts ){
|
for( uid = 0 ; uid < nbMaxFiche ; uid++ ){
|
||||||
|
|
||||||
/* (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) */
|
/* (2) On récupère les informations de la FICHE (si elle existe) */
|
||||||
var ficheData = lsi.get('f_fiches', ficheUid);
|
ficheData = lsi.get('f_fiches', uid);
|
||||||
|
|
||||||
// Si la fiche n'existe pas, on la crée avec les valeurs par défaut
|
// Si la fiche n'existe pas, on la crée avec les valeurs par défaut
|
||||||
!ficheData && ( ficheData = this.defaultData );
|
!ficheData && ( ficheData = this.defaultData );
|
||||||
|
|
||||||
/* (3) On met à jour la fiche ET on l'enregistre */
|
/* (3) On met à jour la fiche ET on l'enregistre */
|
||||||
ficheData.uid = ficheUid;
|
ficheData.uid = uid;
|
||||||
ficheData.contact = parseInt(uid);
|
ficheData.contact = uid;
|
||||||
lsi.set('f_fiches', ficheUid, ficheData);
|
lsi.set('f_fiches', uid, ficheData);
|
||||||
|
|
||||||
|
|
||||||
/* (4) Si on a déja crée 20+20 fiches, on arrête */
|
|
||||||
if( addedFicheUids.length >= nbMaxFiche )
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -406,156 +387,143 @@ inputFacebookFiche.prototype.sync = function(){
|
||||||
|
|
||||||
{ /* (3) Gestion des liens entre mini-fiches et fiches
|
{ /* (3) Gestion des liens entre mini-fiches et fiches
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
var hasSameUsername, hasSameLink;
|
var originalContact, cloneContact,
|
||||||
|
hasSameUsername, hasSameLink,
|
||||||
|
copied;
|
||||||
|
|
||||||
|
var alreadyProcessedUsername = {},
|
||||||
|
alreadyProcessedExisting = {};
|
||||||
|
|
||||||
ficheData = lsi.export('f_fiches');
|
ficheData = lsi.export('f_fiches');
|
||||||
miniData = lsi.export('f_mini-fiches');
|
miniData = lsi.export('f_mini-fiches');
|
||||||
|
|
||||||
// Pour chaque fiche
|
// Pour chaque mini-fiche
|
||||||
for( var key in ficheData ){
|
for( var key in ficheData ){
|
||||||
|
|
||||||
/* (1) On récupère le contact associé */
|
/* (1) On récupère le contact associé */
|
||||||
var associatedContact = lsi.get('f_contacts', ficheData[key].contact);
|
originalContact = lsi.get('f_contacts', ficheData[key].contact);
|
||||||
|
|
||||||
// Si erreur, on passe au suivant
|
// {1.1} On vérifie que le contact n'a pas déja été traité //
|
||||||
if( !associatedContact )
|
if( originalContact.username.length > 0 && alreadyProcessedUsername[originalContact.username] != undefined
|
||||||
|
|| originalContact.username.length == 0 && alreadyProcessedExisting[originalContact.existing] != undefined )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* (3) On récupère la mini-fiche clone si existe */
|
// {1.2} On enregistre username || existing //
|
||||||
var clone = null;
|
if( originalContact.username.length > 0 ) alreadyProcessedUsername[originalContact.username] = 0;
|
||||||
|
else alreadyProcessedExisting[originalContact.existing] = 0;
|
||||||
|
|
||||||
// Pour chaque mini-fiche
|
// Si erreur, on passe au suivant
|
||||||
for( var i in miniData ){
|
if( !originalContact )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* (3) On récupère la liste des fiches/mini-fiches de même contact*/
|
||||||
|
var clone = [
|
||||||
|
[ 'fiche', ficheData[key] ]
|
||||||
|
];
|
||||||
|
|
||||||
|
// {3.1} On récupère les fiches de même contact //
|
||||||
|
for( i in ficheData ){
|
||||||
|
|
||||||
// on récupère le contact associé (si on est dans `call`, celui dans la tranche avec `sms` / et inversement)
|
// 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);
|
cloneContact = lsi.get('f_contacts', ficheData[i].contact);
|
||||||
|
|
||||||
if( !contactData )
|
if( i == key || !cloneContact )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// meme pseudo
|
// meme pseudo
|
||||||
hasSameUsername = contactData.username.length > 0 && associatedContact.username === contactData.username;
|
hasSameUsername = cloneContact.username.length > 0 && originalContact.username === cloneContact.username;
|
||||||
// meme lien de contact
|
// meme lien de contact
|
||||||
hasSameLink = !isNaN(contactData.existing) && associatedContact.existing === contactData.existing;
|
hasSameLink = !isNaN(cloneContact.existing) && originalContact.existing === cloneContact.existing;
|
||||||
|
|
||||||
// si ont le même contact, alors on enregistre le clone (sauf si la même fiche)
|
// si ont le même contact, alors on enregistre le clone (sauf si la même fiche)
|
||||||
( hasSameUsername || hasSameLink ) && ( clone = miniData[i] );
|
( hasSameUsername || hasSameLink ) && clone.push( ['fiche', ficheData[i]] );
|
||||||
|
|
||||||
if( clone !== null )
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// {3.2} On récupère les mini-fiches de même contact //
|
||||||
|
for( i in miniData ){
|
||||||
|
|
||||||
/* (4) Si c'est le clone qui a été modifié en dernier, on ne fait rien */
|
// on récupère le contact associé (si on est dans `call`, celui dans la tranche avec `sms` / et inversement)
|
||||||
var fiche_ts = ( ficheData[key].hasOwnProperty('timestamp') ) ? ficheData[key].timestamp : 0;
|
cloneContact = lsi.get('f_contacts', miniData[i].contact);
|
||||||
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) 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
|
// meme pseudo
|
||||||
hasSameUsername = contactData.username.length > 0 && associatedContact.username === contactData.username;
|
hasSameUsername = cloneContact.username.length > 0 && originalContact.username === cloneContact.username;
|
||||||
// meme lien de contact
|
// meme lien de contact
|
||||||
hasSameLink = !isNaN(contactData.existing) && associatedContact.existing === contactData.existing;
|
hasSameLink = !isNaN(cloneContact.existing) && originalContact.existing === cloneContact.existing;
|
||||||
|
|
||||||
// si ont le même contact, alors on enregistre le clone (sauf si la même fiche)
|
// si ont le même contact, alors on enregistre le clone (sauf si la même fiche)
|
||||||
( hasSameUsername || hasSameLink ) && ( clone = ficheData[i] );
|
( hasSameUsername || hasSameLink ) && clone.push( ['mini', miniData[i]] );
|
||||||
|
|
||||||
if( clone !== null )
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// {3.3} si aucun clone, on quitte //
|
||||||
/* (4) Si c'est le clone qui a été modifié en dernier, on ne fait rien */
|
if( clone.length === 1 )
|
||||||
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;
|
continue;
|
||||||
|
|
||||||
// console.warn('copying fiche#'+ficheData[key].uid+' to fiche#'+clone.uid, fiche_ts-global_start_timestamp, clone_ts-global_start_timestamp);
|
|
||||||
|
/* (4) On récupère le modèle (dernier modifié) */
|
||||||
|
var clones_ts = []; // contiendra les temps des clones
|
||||||
|
|
||||||
|
for( i in clone )
|
||||||
|
clones_ts[i] = clone[i][1].hasOwnProperty('timestamp') ? clone[i][1].timestamp : 0;
|
||||||
|
|
||||||
|
var last_index = clones_ts.indexOf( Math.max.apply(Math, clones_ts) );
|
||||||
|
|
||||||
|
/* (5) On copie le dernier modifié dans les clones */
|
||||||
|
for( i in clone ){
|
||||||
|
|
||||||
|
// excepté le dernier modifié
|
||||||
|
if( i == last_index )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
|
||||||
/* (5) On copie les données de la FICHE dans le CLONE */
|
/* (5.1) fiche vers fiche */
|
||||||
var copied = ficheData[key];
|
if( clone[i][0] == clone[last_index][0] ){
|
||||||
copied.uid = clone.uid;
|
|
||||||
// copied.timestamp = Date.now();
|
/*CLONING_DEBUG*///console.warn('copying fiche#'+clone[last_index][1].uid+' to fiche#'+clone[i][1].uid, clones_ts[last_index]-input_ts, clones_ts[i]-input_ts);
|
||||||
lsi.set('f_fiches', copied.uid, copied);
|
copied = cloneObject( clone[last_index][1] );
|
||||||
|
copied.uid = clone[i][1].uid;
|
||||||
|
lsi.set('f_fiches', copied.uid, copied);
|
||||||
|
|
||||||
|
/* (5.2) fiche vers mini OU mini vers fiche*/
|
||||||
|
}else if( clone[last_index][0] == 'fiche' ){
|
||||||
|
|
||||||
|
/*CLONING_DEBUG*///console.warn('copying fiche#'+clone[last_index][1].uid+' to mini#'+clone[i][1].uid, clones_ts[last_index]-input_ts, clones_ts[i]-input_ts);
|
||||||
|
copied = cloneObject( clone[i][1] );
|
||||||
|
copied.age = clone[last_index][1].age;
|
||||||
|
copied.sexe = clone[last_index][1].sexe;
|
||||||
|
copied.loc = clone[last_index][1].loc;
|
||||||
|
copied.reltype = clone[last_index][1].reltype;
|
||||||
|
copied.reltypeSpecial = clone[last_index][1].reltypeSpecial;
|
||||||
|
lsi.set('f_mini-fiches', copied.uid, copied);
|
||||||
|
|
||||||
|
/* (5.3) mini vers fiche */
|
||||||
|
}else{
|
||||||
|
|
||||||
|
/*CLONING_DEBUG*///console.warn('copying mini#'+clone[last_index][1].uid+' to fiche#'+clone[i][1].uid, clones_ts[last_index]-input_ts, clones_ts[i]-input_ts);
|
||||||
|
copied = cloneObject( clone[i][1] );
|
||||||
|
copied.age = clone[last_index][1].age;
|
||||||
|
copied.sexe = clone[last_index][1].sexe;
|
||||||
|
copied.loc = clone[last_index][1].loc;
|
||||||
|
copied.reltype = clone[last_index][1].reltype;
|
||||||
|
copied.reltypeSpecial = clone[last_index][1].reltypeSpecial;
|
||||||
|
|
||||||
|
// Particularité 1, `mini` peut prendre la valeur '.' en plus de celles de `fiche`
|
||||||
|
if( clone[last_index][1].loc == '.' ) copied.loc = '0';
|
||||||
|
|
||||||
|
// Particularité 2, `mini` peut prendre la valeur '9' (inconnu) en plus de celles de `fiche`
|
||||||
|
if( clone[last_index][1].reltype == '9' ){
|
||||||
|
copied.reltype = '10';
|
||||||
|
copied.reltypeSpecial = 'inconnu';
|
||||||
|
}
|
||||||
|
|
||||||
|
lsi.set('f_fiches', copied.uid, copied);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
/*CLONING_DEBUG*///console.warn('cloning done');
|
||||||
|
|
||||||
// ficheData[key].timestamp = copied.timestamp;
|
|
||||||
// lsi.set('f_fiches', ficheData[key].uid, ficheData[key]);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -567,11 +535,6 @@ inputFacebookFiche.prototype.sync = function(){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [6] Gestion de la navigation entre les fiches
|
/* [6] Gestion de la navigation entre les fiches
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookFiche.prototype.nav = function(element){
|
inputFacebookFiche.prototype.nav = function(element){
|
||||||
|
@ -594,11 +557,6 @@ inputFacebookFiche.prototype.nav = function(element){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [7] Mise à jour de la navigation
|
/* [7] Mise à jour de la navigation
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookFiche.prototype.updateNavBar = function(){
|
inputFacebookFiche.prototype.updateNavBar = function(){
|
||||||
|
@ -654,8 +612,6 @@ inputFacebookFiche.prototype.updateNavBar = function(){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [8] Vérification des données du formulaire
|
/* [8] Vérification des données du formulaire
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookFiche.prototype.check = function(ficheData){
|
inputFacebookFiche.prototype.check = function(ficheData){
|
||||||
|
@ -733,9 +689,6 @@ inputFacebookFiche.prototype.check = function(ficheData){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [9] Point d'amorçage de la gestion des contacts
|
/* [9] Point d'amorçage de la gestion des contacts
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookFiche.prototype.attach = function(handler){
|
inputFacebookFiche.prototype.attach = function(handler){
|
||||||
|
|
|
@ -5,6 +5,7 @@ function inputFacebookMini(container, navContainer){
|
||||||
this.nav_container = navContainer;
|
this.nav_container = navContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* [1] Attributs
|
/* [1] Attributs
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookMini.prototype = {
|
inputFacebookMini.prototype = {
|
||||||
|
@ -32,63 +33,60 @@ inputFacebookMini.prototype = {
|
||||||
inputFacebookMini.prototype.fieldsToStorage = function(){
|
inputFacebookMini.prototype.fieldsToStorage = function(){
|
||||||
console.group('[facebook.mini] fields to storage');
|
console.group('[facebook.mini] fields to storage');
|
||||||
|
|
||||||
// {1} Pour chaque formulaire de MINI fiche à l'écran //
|
var i, l, deflater, deflated, existingData, obj, hash;
|
||||||
|
|
||||||
|
/* (1) Pour chaque formulaire de MINI fiche à l'écran
|
||||||
|
---------------------------------------------------------*/
|
||||||
var existingMiniFiches = $$('[data-sublink="facebook"] article.mini-relation-panel .mini-fiche-relation');
|
var existingMiniFiches = $$('[data-sublink="facebook"] article.mini-relation-panel .mini-fiche-relation');
|
||||||
for( var i = 0 ; i < existingMiniFiches.length ; i++ ){
|
for( i = 0, l = existingMiniFiches.length ; i < l ; 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 //
|
/* (1) On initialise notre deflater pour récupérer les valeurs */
|
||||||
var deflated = deflater.deflate();
|
deflater = new FormDeflater(existingMiniFiches[i], ['input', 'select'], ['data-name']);
|
||||||
// On crée le hash
|
|
||||||
var deflatedHash = crc32(JSON.stringify(deflated));
|
|
||||||
|
|
||||||
|
/* (2) On récupère les données */
|
||||||
|
deflated = deflater.deflate();
|
||||||
|
|
||||||
// console.log(deflated);
|
/* (3) On récupère les données du LSI si elles existent */
|
||||||
|
existingData = lsi.get('f_mini-fiches', deflated.uid);
|
||||||
|
|
||||||
|
// Si erreur, on passe à la fiche suivante
|
||||||
// {4} On récupère les données du LSI si elles existent //
|
|
||||||
var existingData = lsi.get('f_mini-fiches', deflated.uid);
|
|
||||||
|
|
||||||
// Si n'existe pas, on passe à la suivante
|
|
||||||
if( existingData === false )
|
if( existingData === false )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* (4) On récupère et met en forme les valeurs du deflater */
|
||||||
// {5} On récupère et met en forme les valeurs du deflater //
|
obj = {
|
||||||
// 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),
|
|
||||||
contact: parseInt(deflated.uid),
|
contact: parseInt(deflated.uid),
|
||||||
sexe: deflated.sexe, // [0] Homme, [1] Femme, [2] Indéterminé
|
sexe: deflated.sexe,
|
||||||
age: deflated.age,
|
age: deflated.age,
|
||||||
studies: deflated.studies,
|
studies: deflated.studies,
|
||||||
reltype: deflated.reltype, // [0] ...
|
loc: deflated.loc,
|
||||||
|
reltype: deflated.reltype,
|
||||||
reltypeSpecial: deflated.reltypeSpecial,
|
reltypeSpecial: deflated.reltypeSpecial,
|
||||||
loc: deflated.loc, // [0] Choix 1 -> [3] Choix 4
|
|
||||||
unknown: deflated.unknown != null,
|
unknown: deflated.unknown != null,
|
||||||
hash: deflatedHash
|
uid: parseInt(deflated.uid)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* (8) On vérifie la validité des données et on l'enregistre dans l'objet avec la date de modification */
|
/* (5) On calcule/compare le hash */
|
||||||
obj.valid = this.check(obj);
|
|
||||||
|
|
||||||
// On met à jour la date de modification, si on a pas qu'@uid de différent
|
// {5.1} On calcule le hash //
|
||||||
if( diff(existingData, obj, ['hash', 'valid', 'timestamp']).length > 0 ){
|
hash = crc32( JSON.stringify(obj) );
|
||||||
console.log( diff(existingData, obj, ['hash', 'valid', 'timestamp']) );
|
|
||||||
console.warn('> MINI UPDATE');
|
// {5.2} Si le hash est identique, on ne fait rien //
|
||||||
obj.timestamp = Date.now();
|
if( existingData['hash'] != undefined && hash == existingData.hash )
|
||||||
}else if( existingData['timestamp'] == undefined )
|
continue;
|
||||||
obj.timestamp = this.defaultData.timestamp;
|
|
||||||
|
// {5.3} On enregistre le hash //
|
||||||
|
obj.hash = hash;
|
||||||
|
|
||||||
|
|
||||||
/* (9) On enregistre les données dans le 'localStorage' */
|
/* (6) On calcule la validité des données */
|
||||||
|
obj.valid = this.check(obj);
|
||||||
|
|
||||||
|
/* (7) On met à jour le `timestamp` (car à ce point, on a une modification) */
|
||||||
|
obj.timestamp = Date.now();
|
||||||
|
console.warn('> MINI UPDATE ('+(obj.timestamp-input_ts)+')');
|
||||||
|
|
||||||
|
/* (8) On enregistre les données dans le 'localStorage' */
|
||||||
lsi.set('f_mini-fiches', obj.uid, obj);
|
lsi.set('f_mini-fiches', obj.uid, obj);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -97,13 +95,6 @@ inputFacebookMini.prototype.fieldsToStorage = function(){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [3] Gestion de l'ajout physique d'un nouveau contact
|
/* [3] Gestion de l'ajout physique d'un nouveau contact
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
/*
|
/*
|
||||||
|
@ -207,14 +198,6 @@ inputFacebookMini.prototype.add = function(objectData){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [4] Gestion de l'affichage depuis le 'localStorage'
|
/* [4] Gestion de l'affichage depuis le 'localStorage'
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookMini.prototype.storageToFields = function(){
|
inputFacebookMini.prototype.storageToFields = function(){
|
||||||
|
@ -222,44 +205,63 @@ inputFacebookMini.prototype.storageToFields = function(){
|
||||||
|
|
||||||
/* (1) On charge le contact selectionné
|
/* (1) On charge le contact selectionné
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
var miniData = lsi.get('f_mini-fiches', this.selected);
|
var miniData = lsi.export('f_mini-fiches');
|
||||||
|
var miniKeys = lsi.keys('f_mini-fiches');
|
||||||
|
var selectedMini = miniData[this.selected] != undefined ? miniData[this.selected] : null;
|
||||||
|
|
||||||
/* (2.1) Si on ne trouve pas
|
/* (2) Si aucune mini sélectionnée, on prend la première
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
if( miniData === null ){
|
if( selectedMini === null ){
|
||||||
|
|
||||||
/* (2.1.1) Si `selected` est pas encore défini
|
/* (2.1) Si `selected` n'est pas encore défini
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
if( this.selected === null ){
|
if( this.selected === null ){
|
||||||
|
|
||||||
var k = lsi.keys('f_mini-fiches');
|
/* (1) Si aucune mini, on quitte */
|
||||||
|
if( miniKeys.length == 0 )
|
||||||
/* (1) S'il y a au moins 1 contact -> on le prend */
|
|
||||||
if( k.length > 0 ){
|
|
||||||
this.selected = k[0];
|
|
||||||
return this.storageToFields();
|
|
||||||
|
|
||||||
/* (2) Sinon, on quitte */
|
|
||||||
}else
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* (2) Sinon, on prend la première */
|
||||||
|
this.selected = miniKeys[0];
|
||||||
|
return this.storageToFields();
|
||||||
|
|
||||||
/* (2.1.2) S'il est déja défini, on met à jour la nav
|
/* (2.2) S'il est déja défini, on met à jour la nav
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
}else{
|
}else{
|
||||||
this.updateNavBar();
|
this.updateNavBar();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* (2.2) Si on trouve
|
/* (3) Affichage de la fiche sélectionnée
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
|
var clone, hash;
|
||||||
|
|
||||||
/* (1) On réinitialise le HTML */
|
/* (1) On réinitialise le HTML */
|
||||||
this.container.innerHTML = '';
|
this.container.innerHTML = '';
|
||||||
|
|
||||||
/* (2) On affiche la MINI fiche sélectionnée */
|
/* (2) Pour chaque mini */
|
||||||
this.add(miniData);
|
for( var key in miniData ){
|
||||||
|
|
||||||
|
// {3.1} On calcule/enregistre le hash (sans `timestamp`, `hash`, `valid`) //
|
||||||
|
clone = cloneObject( miniData[key] );
|
||||||
|
delete clone['hash'];
|
||||||
|
delete clone['timestamp'];
|
||||||
|
delete clone['valid'];
|
||||||
|
miniData[key].hash = crc32( JSON.stringify(clone) );
|
||||||
|
|
||||||
|
// On enregistre dans le `localStorage`
|
||||||
|
lsi.set('f_mini-fiches', miniData[key].uid, miniData[key]);
|
||||||
|
|
||||||
|
// {2.2} Pour la fiche à rendre graphiquement //
|
||||||
|
if( miniData[key].uid == this.selected )
|
||||||
|
this.add(miniData[key]);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* (3) On met à jour la navigation */
|
/* (3) On met à jour la navigation */
|
||||||
this.updateNavBar();
|
this.updateNavBar();
|
||||||
|
@ -269,15 +271,6 @@ inputFacebookMini.prototype.storageToFields = function(){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [5] Synchronisation des CONTACT vers les MINI fiches
|
/* [5] Synchronisation des CONTACT vers les MINI fiches
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookMini.prototype.sync = function(){
|
inputFacebookMini.prototype.sync = function(){
|
||||||
|
@ -340,11 +333,6 @@ inputFacebookMini.prototype.sync = function(){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [6] Gestion de la navigation entre les fiches
|
/* [6] Gestion de la navigation entre les fiches
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookMini.prototype.nav = function(element){
|
inputFacebookMini.prototype.nav = function(element){
|
||||||
|
@ -366,11 +354,6 @@ inputFacebookMini.prototype.nav = function(element){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [7] Mise à jour de la navigation
|
/* [7] Mise à jour de la navigation
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookMini.prototype.updateNavBar = function(){
|
inputFacebookMini.prototype.updateNavBar = function(){
|
||||||
|
@ -416,8 +399,6 @@ inputFacebookMini.prototype.updateNavBar = function(){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [8] Vérification des données du formulaire
|
/* [8] Vérification des données du formulaire
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookMini.prototype.check = function(miniData){
|
inputFacebookMini.prototype.check = function(miniData){
|
||||||
|
@ -451,9 +432,6 @@ inputFacebookMini.prototype.check = function(miniData){
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [9] Point d'amorçage de la gestion des contacts
|
/* [9] Point d'amorçage de la gestion des contacts
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
inputFacebookMini.prototype.attach = function(handler){
|
inputFacebookMini.prototype.attach = function(handler){
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* [0] Constructeur -> définit le conteneur et le bouton d'ajout
|
/* [0] Constructeur -> définit le conteneur et le bouton d'ajout
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
function inputPhoneMini(container, navContainer){
|
function inputPhoneMini(container, navContainer){
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.nav_container = navContainer;
|
this.nav_container = navContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
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}};
|
function inputFacebookFiche(a,b){this.container=a;this.nav_container=b;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(),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,
|
inputFacebookFiche.prototype.fieldsToStorage=function(){console.group("[facebook.fiche] fields to storage");var a,b,c,e,d,h=$$('[data-sublink="facebook"] article.relation-panel .fiche-relation');a=0;for(b=h.length;a<b;a++)if(c=new FormDeflater(h[a],["input","select"],["data-name"]),e=c.deflate(),c=lsi.get("f_fiches",e.uid),!1!==c&&(e={sexe:e.sexe,age:e.age,job:e.job,famsit:e.famsit,studies:e.studies,reltype:e.reltype,reltypeSpecial:e.reltypeSpecial,city:e.city,quartier:e.quartier,cp:e.cp,loc:e.loc,
|
||||||
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()};
|
duration:e.duration,context:e.context,contextSpecial:e.contextSpecial,freq:e.freq,connect:e.connect,connectSpecial:e.connectSpecial,uid:parseInt(e.uid),contact:parseInt(e.contact)},d=crc32(JSON.stringify(e)),void 0==c.hash||d!=c.hash))e.hash=d,e.valid=this.check(e),e.timestamp=Date.now(),console.warn("> FICHE UPDATE ("+(e.timestamp-input_ts)+")"),lsi.set("f_fiches",e.uid,e);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;
|
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.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:
|
a.job=null!=a.job?a.job:this.defaultData.job;a.studies=null!=a.studies?a.studies:this.defaultData.studies;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.famsit=null!=a.famsit?a.famsit:this.defaultData.famsit;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.loc=null!=a.loc?a.loc:this.defaultData.loc;a.context=null!=a.context?a.context:this.defaultData.context;a.freq=null!=a.freq?a.freq:this.defaultData.freq;a.connect=null!=a.connect?a.connect:
|
||||||
this.defaultData.connect;var c=lsi.get("f_contacts",a.contact);if(!1===c)return!1;var b="";isNaN(c.existing)||(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.studies2?(a.studies=b.studies2,a.job=b.job,a.famsit=b.famsit,a.city=b.city,a.cp=b.cp,a.quartier=b.quartier,a.duration[0]=b.duration[0],a.duration[1]=b.duration[1],a.context=b.context,a.contextSpecial=
|
this.defaultData.connect;var b=lsi.get("f_contacts",a.contact);if(!1===b)return!1;var c="";isNaN(b.existing)||(c=lsi.get("f_friends",b.existing),b.username=c.name,a.age=c.age,a.sexe=c.sexe,a.loc=c.dist,isNaN(c.reltype)?(a.reltype=10,a.reltypeSpecial=c.reltype):(a.reltype=c.reltype,a.reltypeSpecial=""),null!=c.studies2?(a.studies=c.studies2,a.job=c.job,a.famsit=c.famsit,a.city=c.city,a.cp=c.cp,a.quartier=c.quartier,a.duration[0]=c.duration[0],a.duration[1]=c.duration[1],a.context=c.context,a.contextSpecial=
|
||||||
b.contextExtra,a.connect=b.connect,a.connectSpecial=b.connectExtra,a.freq=b.freq,b="Contact import\u00e9: non modifiable!"):b="Contact import\u00e9 (incomplet): modifiable partiellement!");this.container.innerHTML+=fFicheBuilder.build({importedfiche:b,name:c.username,countcall:c.countcall,countsms:c.countsms,uid:a.uid,contact:a.contact,city:a.city,quartier:a.quartier,cp:a.cp,duration0:a.duration[0],duration1:a.duration[1],reltypespecial:a.reltypeSpecial,contextspecial0:a.contextSpecial[0],contextspecial1:a.contextSpecial[1],
|
c.contextExtra,a.connect=c.connect,a.connectSpecial=c.connectExtra,a.freq=c.freq,c="Contact import\u00e9: non modifiable!"):c="Contact import\u00e9 (incomplet): modifiable partiellement!");this.container.innerHTML+=fFicheBuilder.build({importedfiche:c,name:b.username,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]});c=$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="job"]>option[value="'+a.job+'"]');null!=c&&c.setAttribute("selected","selected");c=$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=c&&c.setAttribute("selected",
|
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");c=$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!=c&&c.setAttribute("selected","selected");b=$$('[data-sublink="facebook"] article.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.fiche-relation input[data-name="uid"][value="'+
|
"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");c=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]');for(b=0;b<c.length;b++)c[b].value==a.sexe?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+
|
||||||
a.uid+'"] ~ h5>input[type="radio"][data-name="famsit"]');for(c=0;c<b.length;c++)b[c].value==a.famsit?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="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.fiche-relation input[data-name="uid"][value="'+
|
a.uid+'"] ~ h5>input[type="radio"][data-name="famsit"]');for(b=0;b<c.length;b++)c[b].value==a.famsit?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="reltype"]');for(b=0;b<c.length;b++)c[b].value==a.reltype?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('[data-sublink="facebook"] article.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");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="loc"]');for(b=0;b<c.length;b++)c[b].value==a.loc?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="context"]');for(b=0;b<c.length;b++)c[b].value==a.context?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('[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")};
|
a.uid+'"] ~ h5>input[type="radio"][data-name="freq"]');for(b=0;b<c.length;b++)-1<a.freq.indexOf(c[b].value)?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('[data-sublink="facebook"] article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="connect"]');for(b=0;b<c.length;b++)-1<a.connect.indexOf(c[b].value)?c[b].setAttribute("checked","checked"):c[b].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.storageToFields=function(){console.group("[facebook.fiche] storage to fields");var a,b=lsi["export"]("f_fiches");this.container.innerHTML="";for(var c in b)a=cloneObject(b[c]),delete a.hash,delete a.timestamp,delete a.valid,b[c].hash=crc32(JSON.stringify(a)),lsi.set("f_fiches",b[c].uid,b[c]),b[c].uid==this.selected&&this.add(b[c]);this.updateNavBar();console.groupEnd()};
|
||||||
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=
|
inputFacebookFiche.prototype.sync=function(){console.group("[facebook.fiche] synchronisation");lsi["export"]("f_contacts");var a,b,c,e;e=lsi.keys("f_contacts").length<2*this.top_size?lsi.keys("f_contacts").length:2*this.top_size;for(b=0;b<e;b++)a=lsi.get("f_fiches",b),!a&&(a=this.defaultData),a.uid=b,a.contact=b,lsi.set("f_fiches",b,a);var d,h,g;e={};var l={};a=lsi["export"]("f_fiches");b=lsi["export"]("f_mini-fiches");for(var k in a)if(d=lsi.get("f_contacts",a[k].contact),!(0<d.username.length&&
|
||||||
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=
|
void 0!=e[d.username]||0==d.username.length&&void 0!=l[d.existing])&&(0<d.username.length?e[d.username]=0:l[d.existing]=0,d)){var f=[["fiche",a[k]]];for(c in a)h=lsi.get("f_contacts",a[c].contact),c!=k&&h&&(g=0<h.username.length&&d.username===h.username,h=!isNaN(h.existing)&&d.existing===h.existing,(g||h)&&f.push(["fiche",a[c]]));for(c in b)h=lsi.get("f_contacts",b[c].contact),g=0<h.username.length&&d.username===h.username,h=!isNaN(h.existing)&&d.existing===h.existing,(g||h)&&f.push(["mini",b[c]]);
|
||||||
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===
|
if(1!==f.length){d=[];for(c in f)d[c]=f[c][1].hasOwnProperty("timestamp")?f[c][1].timestamp:0;g=d.indexOf(Math.max.apply(Math,d));for(c in f)c!=g&&(f[c][0]==f[g][0]?(d=cloneObject(f[g][1]),d.uid=f[c][1].uid,lsi.set("f_fiches",d.uid,d)):"fiche"==f[g][0]?(d=cloneObject(f[c][1]),d.age=f[g][1].age,d.sexe=f[g][1].sexe,d.loc=f[g][1].loc,d.reltype=f[g][1].reltype,d.reltypeSpecial=f[g][1].reltypeSpecial,lsi.set("f_mini-fiches",d.uid,d)):(d=cloneObject(f[c][1]),d.age=f[g][1].age,d.sexe=f[g][1].sexe,d.loc=
|
||||||
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()};
|
f[g][1].loc,d.reltype=f[g][1].reltype,d.reltypeSpecial=f[g][1].reltypeSpecial,"."==f[g][1].loc&&(d.loc="0"),"9"==f[g][1].reltype&&(d.reltype="10",d.reltypeSpecial="inconnu"),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.nav=function(a){if(!(a instanceof Element&&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;c<b.length;c++)b[c].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> ":(20==e&&(this.nav_container.innerHTML+='<br><span class="fc">MESSENGER </span>'),this.nav_container.innerHTML+='<span data-n="'+
|
inputFacebookFiche.prototype.updateNavBar=function(){var a=lsi["export"]("f_fiches");this.nav_container.innerHTML="";for(var b=Object.keys(a),c=0;c<b.length;c++){var e=parseInt(b[c]);0==e&&(this.nav_container.innerHTML+="<span>HISTORIQUE</span>");20>e&&c<b.length-1&&20<=b[c+1]?this.nav_container.innerHTML+='<span data-n="'+e+'" class="lc">'+(e%20+1)+"</span> ":(20==e&&(this.nav_container.innerHTML+='<br><span class="fc">MESSENGER </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+'"]'))};
|
e+'">'+(e%20+1)+"</span>")}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]))&&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||
|
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 b=0;b<a.freq.length;b++)if(""==a.freq[b])return!1;for(b=0;b<a.connect.length;b++)if(""==a.connect[b])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()};
|
"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 b=this,b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1);console.groupEnd()};
|
||||||
|
|
|
@ -1,24 +1,14 @@
|
||||||
<<<<<<< HEAD
|
function inputFacebookMini(a,b){this.container=a;this.nav_container=b}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}};
|
||||||
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");var a,b,c,d,e,f=$$('[data-sublink="facebook"] article.mini-relation-panel .mini-fiche-relation');a=0;for(b=f.length;a<b;a++)if(c=new FormDeflater(f[a],["input","select"],["data-name"]),d=c.deflate(),c=lsi.get("f_mini-fiches",d.uid),!1!==c&&(d={contact:parseInt(d.uid),sexe:d.sexe,age:d.age,studies:d.studies,loc:d.loc,reltype:d.reltype,reltypeSpecial:d.reltypeSpecial,unknown:null!=d.unknown,uid:parseInt(d.uid)},
|
||||||
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,
|
e=crc32(JSON.stringify(d)),void 0==c.hash||e!=c.hash))d.hash=e,d.valid=this.check(d),d.timestamp=Date.now(),console.warn("> MINI UPDATE ("+(d.timestamp-input_ts)+")"),lsi.set("f_mini-fiches",d.uid,d);console.groupEnd()};
|
||||||
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 b=lsi.get("f_contacts",
|
||||||
=======
|
a.uid);if(!1===b)return!1;if(!isNaN(b.existing)){var c=lsi.get("f_friends",b.existing);b.username=c.name;a.contact=c.contact;a.age=c.age;a.sexe=c.sexe;a.loc=c.dist;isNaN(c.reltype)?(a.reltype=10,a.reltypeSpecial=c.reltype):(a.reltype=c.reltype,a.reltypeSpecial="");null!=c.studies1&&(a.studies=c.studies1)}this.container.innerHTML+=fMiniFicheBuilder.build({name:b.username,uid:a.uid,reltypespecial:a.reltypeSpecial});b=$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+
|
||||||
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}};
|
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");c=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]');for(b=0;b<c.length;b++)c[b].value==
|
||||||
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),sexe:b.sexe,age:b.age,studies:b.studies,reltype:b.reltype,
|
a.sexe?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="reltype"]');for(b=0;b<c.length;b++)c[b].value==a.reltype?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="loc"]');for(b=0;b<c.length;b++)c[b].value==
|
||||||
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("f_mini-fiches",b.uid,b)}}console.groupEnd()};
|
a.loc?c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");b=$('[data-sublink="facebook"] article.mini-fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="checkbox"][data-name="unknown"]');null!=b&&a.unknown&&b.setAttribute("checked","checked")};
|
||||||
>>>>>>> f8c0ef141fac6b47b8616172eba10575a9fb1273
|
inputFacebookMini.prototype.storageToFields=function(){console.group("[facebook.mini] storage to fields");var a=lsi["export"]("f_mini-fiches"),b=lsi.keys("f_mini-fiches");if(null===(void 0!=a[this.selected]?a[this.selected]:null)){if(null===this.selected){if(0==b.length)return!1;this.selected=b[0];return this.storageToFields()}this.updateNavBar();return!1}this.container.innerHTML="";for(var c in a)b=cloneObject(a[c]),delete b.hash,delete b.timestamp,delete b.valid,a[c].hash=crc32(JSON.stringify(b)),
|
||||||
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",
|
lsi.set("f_mini-fiches",a[c].uid,a[c]),a[c].uid==this.selected&&this.add(a[c]);this.updateNavBar();console.groupEnd()};
|
||||||
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="'+
|
inputFacebookMini.prototype.sync=function(){console.group("[facebook.mini] synchronisation");var a=lsi["export"]("f_contacts"),b;ficheIndexes=lsi.keys("f_fiches");for(b in ficheIndexes)delete a[ficheIndexes[b]];for(var c in a){var d=0==a[c].username.length?c.toString()+"-":c;b=lsi.get("f_mini-fiches",d);null==b&&(b=this.defaultData,b.contact=a[c].uid,b.valid=!1);b.uid=parseInt(c);lsi.set("f_mini-fiches",d,b)}b=lsi["export"]("f_mini-fiches");if(null==b[this.selected])for(c in b)if(!isNaN(c)){this.selected=
|
||||||
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==
|
parseInt(c);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 b=$$('[data-sublink="facebook"] #f_nav-mini > span.active'),c=0;c<b.length;c++)b[c].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
|
||||||
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==
|
inputFacebookMini.prototype.updateNavBar=function(){var a=lsi["export"]("f_mini-fiches");this.nav_container.innerHTML="";var b=0,c;for(c in a)isNaN(c)||(this.nav_container.innerHTML+='<span data-n="'+c+'">'+ ++b+"</span>");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+'"]'))};
|
||||||
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()};
|
|
||||||
<<<<<<< HEAD
|
|
||||||
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.sync=function(){console.group("[facebook.mini] synchronisation");var a=lsi["export"]("f_contacts"),c=lsi["export"]("f_fiches"),b=[],e;for(e in c)-1==b.indexOf(c[e].contact)&&b.push(c[e].contact);for(var d in a)-1<b.indexOf(parseInt(d))?lsi.del("f_mini-fiches",d):(c=0==a[d].username.length?d.toString()+"-":d,e=lsi.get("f_mini-fiches",c),null==e&&(e=this.defaultData,e.valid=!1,isNaN(c)&&(e.reltype="9")),e.uid=parseInt(d),lsi.set("f_mini-fiches",c,e));e=lsi["export"]("f_mini-fiches");
|
|
||||||
if(null==e[this.selected])for(d in e)if(!isNaN(d)){this.selected=parseInt(d);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"))};
|
|
||||||
>>>>>>> f8c0ef141fac6b47b8616172eba10575a9fb1273
|
|
||||||
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()};
|
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()};
|
||||||
|
|
Loading…
Reference in New Issue