Gestion de la synchronisation entre les `fiches` dupliquées (dans le top 10 des APPELS et le top 10 des SMS)

This commit is contained in:
xdrm-brackets 2016-05-03 23:45:31 +02:00
parent fe3ee03188
commit 17d8885b23
2 changed files with 31 additions and 1 deletions

View File

@ -16,7 +16,8 @@ c[b].setAttribute("checked","checked"):c[b].removeAttribute("checked");c=$$('art
d[b].setAttribute("checked","checked"):d[b].removeAttribute("checked");for(c=0;c<a.connect.length;c++)for(d=$$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="connect'+c+'"]'),b=0;b<d.length&&b<a.connect[c].length;b++)a.connect[c][b].status?d[b].setAttribute("checked","checked"):d[b].removeAttribute("checked")};
inputPhoneFiche.prototype.storageToFields=function(){console.log("FICHE: STORAGE TO FIELDS");var a=lsi["export"]("fiches");this.container.innerHTML="";for(var b in a)a[b].uid==this.selected&&this.add(a[b]);this.updateNavBar()};
inputPhoneFiche.prototype.sync=function(){console.log("FICHE: SYNC");var a=lsi["export"]("contacts"),b;for(b in a){if(-1<a[b].call){var c=a[b].call,d=lsi.get("fiches",c);null==d&&(d=this.defaultData);d.uid=c;d.contact=b;lsi.set("fiches",c,d)}-1<a[b].sms&&(c=10+a[b].sms,d=lsi.get("fiches",c),null==d&&(d=this.defaultData),d.uid=c,d.contact=b,lsi.set("fiches",c,d))}var a=lsi["export"]("mini-fiches"),d=lsi["export"]("fiches"),e;for(e in d)d[e].timestamp>a[e].timestamp?(a[e].sexe=d[e].sexe,a[e].age=d[e].age,
a[e].job=d[e].job,a[e].loc=d[e].loc):(d[e].sexe=a[e].sexe,d[e].age=a[e].age,d[e].job=a[e].job,d[e].loc=a[e].loc),lsi.set("mini-fiches",e,a[e]),lsi.set("fiches",e,d[e]);for(e in d);};inputPhoneFiche.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"nav-fiche"!=a.parentNode.id)return!1;for(var b=$$("#nav-fiche > span.active"),c=0;c<b.length;c++)b[c].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
a[e].job=d[e].job,a[e].loc=d[e].loc):(d[e].sexe=a[e].sexe,d[e].age=a[e].age,d[e].job=a[e].job,d[e].loc=a[e].loc),lsi.set("mini-fiches",e,a[e]),lsi.set("fiches",e,d[e]);for(e in d)a=lsi.get("contacts",d[e].contact),null!=a&&-1!=a.sms&&-1!=a.call&&(a=10>parseInt(e)?10+a.sms:a.call,b=d[a],b.timestamp>=d[e].timestamp||(c=d[e],c.uid=b.uid,lsi.set("fiches",b.uid,c),console.log(e+" have been copied to "+a)))};
inputPhoneFiche.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"nav-fiche"!=a.parentNode.id)return!1;for(var b=$$("#nav-fiche > span.active"),c=0;c<b.length;c++)b[c].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
inputPhoneFiche.prototype.updateNavBar=function(){var a=lsi["export"]("fiches"),b=Object.keys(a).length;if(this.nav_container.children.length!=b){this.nav_container.innerHTML="<span>APPELS</span>";for(var c=0;c<b;c++)9==c?this.nav_container.innerHTML+='<span data-n="'+c+'" class="lc">'+(c%10+1)+"</span>&nbsp;&nbsp;":(10==c&&(this.nav_container.innerHTML+='<span class="fc">SMS</span>'),this.nav_container.innerHTML+='<span data-n="'+c+'">'+(c%10+1)+"</span>")}for(var d in a)b=this.nav_container.children[a[d].uid],
!0===a[d].valid?b.addClass("done"):b.remClass("done");this.nav($('#nav-fiche [data-n="'+this.selected+'"]'))};
inputPhoneFiche.prototype.check=function(a){if(isNaN(parseInt(a.age))||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||!checkRadioValue(a.sexe)||!checkRadioValue(a.famsit)||!checkRadioValue(a.reltype)||!checkRadioValue(a.loc)||!checkRadioValue(a.loc2)||!checkRadioValue(a.context))return!1;for(var b=0;b<a.freq.length;b++)if(!checkRadioValue(a.freq[b]))return!1;

View File

@ -346,6 +346,8 @@ inputPhoneFiche.prototype.sync = function(){
/* (2) Pour chaque CONTACT, on met à jour/crée la FICHE associée, si dans le TOP 10 des APPELS ou des SMS */
for( var uid in contacts ){
var inCallTop10 = false;
/* (3) Indice de 0 à 9 si dans le TOP 10 des APPELS */
if( contacts[uid].call > -1 ){
// On calcule le rang de la fiche en fonction du classement
@ -424,6 +426,33 @@ inputPhoneFiche.prototype.sync = function(){
/* (3) Mise à jour des fiches dupliquées entre le top 10 des APPELS et celui des SMS
---------------------------------------------------------*/
for( var key in ficheData ){
/* (1) On récupère le contact associé */
var associatedContact = lsi.get('contacts', ficheData[key].contact);
// Si erreur, on passe au suivant
if( associatedContact == null )
continue;
/* (2) Si la fiche n'est pas dans les 2 top 10 (APPELS et SMS) */
if( associatedContact.sms == -1 || associatedContact.call == -1 )
continue; // On passe au suivant
/* (3) On récupère l'autre fiche (clone) */
var inCall = parseInt(key) < 10; // Si on est dans le top 10 des APPELS, sinon dans celui des SMS
var cloneIndex = inCall ? 10+associatedContact.sms : associatedContact.call; // Contient l'index du clone dans l'autre top (APPELS ou SMS)
var clone = ficheData[cloneIndex];
/* (4) Si le clone a été modifié en dernier, on ne fait rien */
if( clone.timestamp >= ficheData[key].timestamp )
continue;
/* (5) On copie les données de la FICHE dans le clone (cas ou la fiche est modifiée en dernier) */
var obj = ficheData[key];
obj.uid = clone.uid;
lsi.set('fiches', clone.uid, obj);
}