Correction arborescence + avancement feature
This commit is contained in:
parent
c63d025971
commit
0b6702222f
|
@ -2,7 +2,7 @@
|
|||
|
||||
require_once __ROOT__.'/manager/autoloader.php';
|
||||
|
||||
use \router\Router;
|
||||
use \manager\router\Router;
|
||||
use \manager\ModuleRequest;
|
||||
use \manager\ModuleResponse;
|
||||
use \manager\ManagerError;
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
var DOM,pageManager,api,Notification,navSubMenu=function(a){var c=$("#MENU-SIDE > span[data-link="+pageManager.page+'] + div.sub > span[data-sublink="'+pageManager.vars[0]+'"]'),b=null,b=a instanceof Element?a:null,b="string"==typeof a?$("#MENU-SIDE > span[data-link="+pageManager.page+'] + div.sub > span[data-sublink="'+a+'"]'):b,b=null==b?$("#MENU-SIDE > span[data-link="+pageManager.page+"] + div.sub > span[data-sublink]"):b;if(null==b)return!1;null!=c&&c.remClass("active");c=$$("#CONTAINER > section[data-sublink].active");
|
||||
for(a=0;a<c.length;a++)c[a].remClass("active");if(null!=b)for(b.addClass("active"),c=$$('#CONTAINER > section[data-sublink="'+b.getData("sublink")+'"]'),a=0;a<c.length;a++)c[a].addClass("active");if(!b.getData("sublink"))return!1;a=pageManager.vars[0]!=b.getData("sublink");pageManager.vars[0]=b.getData("sublink");a&&pageManager.updateURL()},navMenu=function(a){var c=$('#WRAPPER > #MENU-SIDE > span[data-link="'+pageManager.page+'"]'),b=null,b=a instanceof Element?a:null,b="string"==typeof a?$('#WRAPPER > #MENU-SIDE > span[data-link="'+
|
||||
a+'"]'):b,b=null==b?$('#WRAPPER > #MENU-SIDE > span[data-link="'+pageManager.pagelist[0]+'"]'):b;if(null==b)return!1;null!=c&&c.remClass("active");null!=b&&b.addClass("active");b.getData("link")&&(DOM.HEADER.addClass("loading"),pageManager.setPage(b.getData("link")),pageManager.activeXHR.addEventListener("loadend",function(){1<=pageManager.vars.length&&null!=$('#CONTAINER > section[data-sublink="'+pageManager.vars[0]+'"]')?navSubMenu(pageManager.vars[0]):navSubMenu(null);var a=$("#MENU-SIDE > span[data-link="+
|
||||
pageManager.page+"] + div.sub");null!=a&&a.addEventListener("click",function(a){for(a=a.target;a!=document.body&&!a.getData("sublink");)a=a.parentNode;a.getData("sublink")&&navSubMenu(a)},!1);DOM.HEADER.remClass("loading")},!1))};DOM={WRAPPER:$("body > #WRAPPER"),HEADER:$("body > #WRAPPER > #HEADER"),MENUSIDE:$("body > #WRAPPER > #MENU-SIDE"),CONTAINER:$("body > #WRAPPER > #CONTAINER")};api=new APIClass("/api/");Notification=new NotificationClass($("#notification-container"));
|
||||
Notification.defaultTimeout=4E3;
|
||||
Notification.errorCodes={"-1":"Erreur de r\u00e9seau, veuillez recharger la page et r\u00e9essayer",0:"Erreur interne",1:"Erreur interne",2:"Erreur interne",3:"Le fichier est introuvable",4:"Erreur interne",5:"Erreur interne",6:"Erreur interne",7:"Erreur interne",8:"Erreur interne",9:"Certaines donn\u00e9es sont manquantes",10:"Erreur interne",11:"Erreur interne",12:"Erreur interne",13:"Erreur interne",14:"Erreur interne",15:"Erreur interne",16:"Vous n'avez pas la permission d'effectuer cette action",17:"Le t\u00e9l\u00e9chargement a \u00e9chou\u00e9",
|
||||
18:"Le fichier est invalide (format incorrect)"};lsi.setStorage(localStorage);DOM.MENUSIDE.addEventListener("click",function(a){for(a=a.target;a!=document.body&&!a.getData("link");)a=a.parentNode;a.getData("link")&&navMenu(a.getData("link"))},!1);function reload(){navMenu(pageManager.page)}var LOGIN={show:document.getElementById("user-data"),hide:document.getElementById("login-close"),page:document.getElementById("LOGIN")};
|
||||
LOGIN.show.addEventListener("click",function(a){LOGIN.page.className="active"},!1);LOGIN.hide.addEventListener("click",function(a){LOGIN.page.className=""},!1);api.send({path:"download/menu"},function(a){if(0==a.ModuleError){pagelist=[];for(var c=0;c<a.menu.length;c++)pagelist.push(a.menu[c].attributes["data-link"]);pageManager=new pageManagerClass;pageManager.setPage(null,"/view",DOM.CONTAINER,pagelist,null);navMenu(pageManager.page)}});
|
|
@ -104,9 +104,12 @@ inputPhoneFiche.prototype.fieldsToStorage = function(){
|
|||
console.log( diff(existingData, obj, ['hash', 'valid', 'timestamp']) );
|
||||
|
||||
console.warn('> FICHE UPDATE');
|
||||
// console.warn('fiche-ts', existingData.timestamp, obj.timestamp);
|
||||
obj.timestamp = Date.now();
|
||||
}else if( existingData['timestamp'] == undefined )
|
||||
}else if( existingData['timestamp'] == undefined ){
|
||||
// console.warn('fiche-refresh');
|
||||
obj.timestamp = this.defaultData.timestamp;
|
||||
}
|
||||
|
||||
/* (7) On enregistre les données dans le 'localStorage' */
|
||||
lsi.set('p_fiches', obj.uid, obj);
|
||||
|
@ -341,7 +344,7 @@ inputPhoneFiche.prototype.sync = function(){
|
|||
|
||||
/* (2) Contiendra les uids des fiches qui seront crées */
|
||||
var addedFicheUids = [];
|
||||
var ficheData, contactData, miniData;
|
||||
var ficheData, contactData, miniData, i;
|
||||
|
||||
}
|
||||
|
||||
|
@ -390,113 +393,21 @@ inputPhoneFiche.prototype.sync = function(){
|
|||
ficheData = lsi.export('p_fiches');
|
||||
miniData = lsi.export('p_mini-fiches');
|
||||
|
||||
// Pour chaque fiche
|
||||
for( var key in ficheData ){
|
||||
// Pour chaque mini-fiche
|
||||
for( var key in miniData ){
|
||||
|
||||
/* (1) On récupère le contact associé */
|
||||
var associatedContact = lsi.get('p_contacts', ficheData[key].contact);
|
||||
var associatedContact = lsi.get('p_contacts', miniData[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;
|
||||
/* (3) On récupère les/la fiche(s) clone(s) si existe */
|
||||
var clone = [];
|
||||
|
||||
// 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('p_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('p_fiches', copied.uid, copied);
|
||||
|
||||
// clone.timestamp = copied.timestamp;
|
||||
// lsi.set('p_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('p_mini-fiches', copied.uid, copied);
|
||||
|
||||
// ficheData[key].timestamp = copied.timestamp;
|
||||
// lsi.set('p_fiches', ficheData[key].uid, ficheData[key]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
{ /* (4) Gestion des fiches dupliquées
|
||||
---------------------------------------------------------*/
|
||||
ficheData = lsi.export('p_fiches');
|
||||
|
||||
for( var key in ficheData ){
|
||||
|
||||
/* (1) On récupère le contact associé */
|
||||
var associatedContact = lsi.get('p_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 inCall = parseInt( ficheData[key].uid ) < this.top_size; // vrai si dans les APPELS, sinon dans les SMS
|
||||
|
||||
for( var i in ficheData ){
|
||||
|
||||
// si on est pas dans le bonne tranche, on passe au suivant
|
||||
if( inCall && i < this.top_size || !inCall && i >= this.top_size )
|
||||
continue;
|
||||
// Pour chaque fiche
|
||||
for( i in ficheData ){
|
||||
|
||||
// on récupère le contact associé (si on est dans `call`, celui dans la tranche avec `sms` / et inversement)
|
||||
contactData = lsi.get('p_contacts', ficheData[i].contact);
|
||||
|
@ -510,37 +421,155 @@ inputPhoneFiche.prototype.sync = function(){
|
|||
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;
|
||||
( hasSameUsername || hasSameLink ) && clone.push( ficheData[i] );
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* (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 )
|
||||
// si aucun clone, on quitte
|
||||
if( clone.length === 0 )
|
||||
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 mini_ts = ( miniData[key].hasOwnProperty('timestamp') ) ? miniData[key].timestamp : 0;
|
||||
|
||||
var clones_ts = []; // contiendra les temps des clones
|
||||
var mini_update = true; // true si dernier modifié
|
||||
|
||||
for( i in clone ){
|
||||
clones_ts[i] = clone[i].hasOwnProperty('timestamp') ? clone[i].timestamp : 0;
|
||||
mini_update = mini_update && mini_ts > clones_ts[i];
|
||||
}
|
||||
|
||||
var last_index = clones_ts.indexOf( Math.max.apply(Math, clones_ts) );
|
||||
|
||||
|
||||
/* (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('p_fiches', copied.uid, copied);
|
||||
|
||||
// ficheData[key].timestamp = copied.timestamp;
|
||||
// lsi.set('p_fiches', ficheData[key].uid, ficheData[key]);
|
||||
|
||||
|
||||
|
||||
/* (5.1) Si mini est le modèle -> On copie les données de MINI dans les CLONES */
|
||||
var copied;
|
||||
if( mini_update ){
|
||||
|
||||
for( i in clone ){
|
||||
|
||||
console.warn('copying mini#'+miniData[key].uid+' to fiche#'+clone[i].uid, mini_ts-global_start_timestamp, clones_ts[i]-global_start_timestamp);
|
||||
copied = clone[i];
|
||||
copied.age = miniData[key].age;
|
||||
copied.sexe = miniData[key].sexe;
|
||||
copied.loc = miniData[key].loc;
|
||||
copied.reltype = miniData[key].reltype;
|
||||
copied.reltypeSpecial = miniData[key].reltypeSpecial;
|
||||
// copied.timestamp = Date.now();
|
||||
console.warn(copied);
|
||||
lsi.set('p_fiches', copied.uid, copied);
|
||||
|
||||
}
|
||||
|
||||
// clone.timestamp = copied.timestamp+1;
|
||||
// lsi.set('p_mini-fiches', clone.uid, clone);
|
||||
|
||||
/* (5.2) Si un clone est le modèle > On copie les données de la FICHE dans la fiche (autres clones) et dans MINI */
|
||||
}else if( last_index > -1 ){
|
||||
|
||||
// {1} On copie dans MINI //
|
||||
console.warn('copying fiche#'+clone[last_index].uid+' to mini#'+miniData[key].uid, clones_ts[last_index]-global_start_timestamp, mini_ts-global_start_timestamp);
|
||||
copied = miniData[key];
|
||||
copied.age = clone[last_index].age;
|
||||
copied.sexe = clone[last_index].sexe;
|
||||
copied.loc = clone[last_index].loc;
|
||||
copied.reltype = clone[last_index].reltype;
|
||||
copied.reltypeSpecial = clone[last_index].reltypeSpecial;
|
||||
// copied.timestamp = Date.now();
|
||||
lsi.set('p_mini-fiches', copied.uid, copied);
|
||||
|
||||
// {2} On copie dans les autres fiches //
|
||||
for( i in clone ){
|
||||
// sauf le modele
|
||||
if( i == last_index ) continue;
|
||||
|
||||
console.warn('copying fiche#'+clone[last_index].uid+' to fiche#'+clone[i].uid, clones_ts[last_index]-global_start_timestamp, clones_ts[i]-global_start_timestamp);
|
||||
copied = clone[last_index];
|
||||
copied.uid = clone[i].uid;
|
||||
// copied.timestamp = Date.now();
|
||||
lsi.set('p_fiches', copied.uid, copied);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// { /* (4) Gestion des fiches dupliquées
|
||||
// ---------------------------------------------------------*/
|
||||
// ficheData = lsi.export('p_fiches');
|
||||
//
|
||||
// for( var key in ficheData ){
|
||||
//
|
||||
// /* (1) On récupère le contact associé */
|
||||
// var associatedContact = lsi.get('p_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 inCall = parseInt( ficheData[key].uid ) < this.top_size; // vrai si dans les APPELS, sinon dans les SMS
|
||||
//
|
||||
// for( var i in ficheData ){
|
||||
//
|
||||
// // si on est pas dans le bonne tranche, on passe au suivant
|
||||
// if( inCall && i < this.top_size || !inCall && i >= this.top_size )
|
||||
// continue;
|
||||
//
|
||||
// // on récupère le contact associé (si on est dans `call`, celui dans la tranche avec `sms` / et inversement)
|
||||
// contactData = lsi.get('p_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('p_fiches', copied.uid, copied);
|
||||
//
|
||||
// // ficheData[key].timestamp = copied.timestamp;
|
||||
// // lsi.set('p_fiches', ficheData[key].uid, ficheData[key]);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
|
||||
|
||||
|
||||
console.groupEnd();
|
||||
|
|
|
@ -82,11 +82,14 @@ inputPhoneMini.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('> MINI UPDATE');
|
||||
// console.warn('mini-ts', existingData.timestamp, obj.timestamp);
|
||||
obj.timestamp = Date.now();
|
||||
}else if( existingData['timestamp'] == undefined )
|
||||
|
||||
}else if( existingData['timestamp'] == undefined ){
|
||||
// console.warn('mini-refresh');
|
||||
obj.timestamp = this.defaultData.timestamp;
|
||||
}
|
||||
|
||||
|
||||
/* (9) On enregistre les données dans le 'localStorage' */
|
||||
|
|
|
@ -12,11 +12,10 @@ 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="phone"] 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="phone"] 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="phone"] 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")};
|
||||
inputPhoneFiche.prototype.storageToFields=function(){console.group("[phone.fiche] storage to fields");var a=lsi["export"]("p_fiches");this.container.innerHTML="";for(var c in a)a[c].uid==this.selected&&this.add(a[c]);this.updateNavBar();console.groupEnd()};
|
||||
inputPhoneFiche.prototype.sync=function(){console.group("[phone.fiche] synchronisation");var a=lsi["export"]("p_contacts"),c=[],b,e;e=lsi.keys("p_contacts").length<2*this.top_size?lsi.keys("p_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("p_fiches",ficheUid);!a&&(a=this.defaultData);a.uid=ficheUid;a.contact=parseInt(d);lsi.set("p_fiches",ficheUid,a);if(c.length>=e)break}a=lsi["export"]("p_fiches");e=lsi["export"]("p_mini-fiches");
|
||||
for(var f in a){var g=lsi.get("p_contacts",a[f].contact);if(g){var c=null,h;for(h in e)if(b=lsi.get("p_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?(console.warn("copying mini#"+c.uid+" to fiche#"+a[f].uid,g-global_start_timestamp,d-global_start_timestamp),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("p_fiches",d.uid,d)):d>g&&(console.warn("copying fiche#"+a[f].uid+" to mini#"+c.uid,d-global_start_timestamp,g-global_start_timestamp),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("p_mini-fiches",d.uid,d)))}}a=lsi["export"]("p_fiches");for(f in a)if(g=lsi.get("p_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("p_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||(console.warn("copying fiche#"+a[f].uid+" to fiche#"+c.uid,d-global_start_timestamp,e-global_start_timestamp),
|
||||
d=a[f],d.uid=c.uid,lsi.set("p_fiches",d.uid,d))}console.groupEnd()};inputPhoneFiche.prototype.nav=function(a){if(!(a instanceof Element&&a.getData("n"))||isNaN(a.getData("n"))||"p_nav-fiche"!=a.parentNode.id)return!1;for(var c=$$('[data-sublink="phone"] #p_nav-fiche > span.active'),b=0;b<c.length;b++)c[b].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
|
||||
inputPhoneFiche.prototype.sync=function(){console.group("[phone.fiche] synchronisation");var a=lsi["export"]("p_contacts"),c=[],b,e,d=lsi.keys("p_contacts").length<2*this.top_size?lsi.keys("p_contacts").length:2*this.top_size,k;for(k in a){for(ficheUid=0;-1<c.indexOf(ficheUid)&&ficheUid<d;)ficheUid++;c.push(ficheUid);a=lsi.get("p_fiches",ficheUid);!a&&(a=this.defaultData);a.uid=ficheUid;a.contact=parseInt(k);lsi.set("p_fiches",ficheUid,a);if(c.length>=d)break}var a=lsi["export"]("p_fiches"),c=lsi["export"]("p_mini-fiches"),
|
||||
g;for(g in c){var h=lsi.get("p_contacts",c[g].contact);if(h){d=[];for(e in a)b=lsi.get("p_contacts",a[e].contact),e!=g&&b&&(k=0<b.username.length&&h.username===b.username,b=!isNaN(b.existing)&&h.existing===b.existing,(k||b)&&d.push(a[e]));if(0!==d.length){k=c[g].hasOwnProperty("timestamp")?c[g].timestamp:0;var h=[],f=!0;for(e in d)h[e]=d[e].hasOwnProperty("timestamp")?d[e].timestamp:0,f=f&&k>h[e];b=h.indexOf(Math.max.apply(Math,h));if(f)for(e in d)console.warn("copying mini#"+c[g].uid+" to fiche#"+
|
||||
d[e].uid,k-global_start_timestamp,h[e]-global_start_timestamp),f=d[e],f.age=c[g].age,f.sexe=c[g].sexe,f.loc=c[g].loc,f.reltype=c[g].reltype,f.reltypeSpecial=c[g].reltypeSpecial,console.warn(f),lsi.set("p_fiches",f.uid,f);else if(-1<b)for(e in console.warn("copying fiche#"+d[b].uid+" to mini#"+c[g].uid,h[b]-global_start_timestamp,k-global_start_timestamp),f=c[g],f.age=d[b].age,f.sexe=d[b].sexe,f.loc=d[b].loc,f.reltype=d[b].reltype,f.reltypeSpecial=d[b].reltypeSpecial,lsi.set("p_mini-fiches",f.uid,
|
||||
f),d)e!=b&&(console.warn("copying fiche#"+d[b].uid+" to fiche#"+d[e].uid,h[b]-global_start_timestamp,h[e]-global_start_timestamp),f=d[b],f.uid=d[e].uid,lsi.set("p_fiches",f.uid,f))}}}console.groupEnd()};inputPhoneFiche.prototype.nav=function(a){if(!(a instanceof Element&&a.getData("n"))||isNaN(a.getData("n"))||"p_nav-fiche"!=a.parentNode.id)return!1;for(var c=$$('[data-sublink="phone"] #p_nav-fiche > span.active'),b=0;b<c.length;b++)c[b].remClass("active");a.addClass("active");this.selected=parseInt(a.getData("n"))};
|
||||
inputPhoneFiche.prototype.updateNavBar=function(){var a=lsi["export"]("p_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>APPELS</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"> SMS </span>'),this.nav_container.innerHTML+='<span data-n="'+
|
||||
e+'">'+(e%20+1)+"</span>")}for(var d in a)c=$('[data-sublink="phone"] #p_nav-fiche [data-n="'+a[d].uid+'"]'),null!=c&&(!0===a[d].valid?c.addClass("done"):c.remClass("done"));this.nav($('[data-sublink="phone"] #p_nav-fiche [data-n="'+this.selected+'"]'))};
|
||||
inputPhoneFiche.prototype.check=function(a){if(2>a.city.length||isNaN(parseInt(a.duration[0]))&&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||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
/* Classe de gestion de route (match) */
|
||||
/**************************************/
|
||||
|
||||
namespace router;
|
||||
namespace manager\router;
|
||||
|
||||
class Route{
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
/* Classe de gestion des routes (URL/ressources) */
|
||||
/*************************************************/
|
||||
|
||||
namespace router;
|
||||
namespace manager\router;
|
||||
|
||||
class Router{
|
||||
// ATTRIBUTS
|
Loading…
Reference in New Issue