'+d+": "+e+"";this.container.appendChild(b.element);var f=this.pushStack(this.stack,b,[null]);b.element.id=f;var g=this;b.element.className=
-"notification-element notification-visible";setTimeout(function(){b.element.className="notification-element"},500+c);b.timeout=setTimeout(function(){g.hide(f)},500+c+500);b.element.addEventListener("click",function(a){g.hide(f)},!1)};
+NotificationClass.prototype.show=function(a,c,b,e){a=-1'+c+": "+b+"";this.container.appendChild(d.element);var f=this.pushStack(this.stack,
+d,[null]);d.element.id=f;var g=this;d.element.className="notification-element notification-visible";setTimeout(function(){d.element.className="notification-element"},500+e);d.timeout=setTimeout(function(){g.hide(f)},500+e+500);d.element.addEventListener("click",function(a){g.hide(f)},!1);return d.element};NotificationClass.prototype.warning=function(a,c,b){return this.show("warning",a,c,b)};NotificationClass.prototype.info=function(a,c,b){return this.show("info",a,c,b)};
+NotificationClass.prototype.success=function(a,c,b){return this.show("success",a,c,b)};NotificationClass.prototype.error=function(a,c,b){return this.show("error",a,c,b)};
diff --git a/js/lib/notif.js b/js/lib/notif.js
index 8796051..81322ae 100644
--- a/js/lib/notif.js
+++ b/js/lib/notif.js
@@ -18,7 +18,8 @@ NotificationClass.prototype = {
'success',
'error'
],
- defaultTimeout: 2000 // Temps d'apparition par défaut
+ defaultTimeout: 2000, // Temps d'apparition par défaut
+ errorCodes: {} // codes d'erreurs sous la forme {codeErreur1: texteErreur1, codeErreur2: texteErreur2, ...}
};
@@ -107,7 +108,11 @@ NotificationClass.prototype.show = function(type, title, message, timeout){
title = typeof title == 'string' ? title : '';
/* (3) Vérification de @message */
- message = typeof message == 'string' ? message : '...';
+ message = typeof message.toString() == 'string' ? message : '...';
+
+ // On cherche s'il y a une occurence dans le dictionnaire
+ if( this.errorCodes[message] != null )
+ message = this.errorCodes[message];
/* (4) Vérification de @timeout */
timeout = typeof timeout == 'number' ? timeout : this.defaultTimeout;
@@ -157,4 +162,17 @@ NotificationClass.prototype.show = function(type, title, message, timeout){
ptr.hide(id);
}, false);
+
+ /* (5) On retourne l'élément
+ ---------------------------------------------------------*/
+ return stackItem.element;
+
};
+
+
+/* [6] 'Raccourcis' d'accès
+=========================================================*/
+NotificationClass.prototype.warning = function(title, message, timeout){ return this.show('warning', title, message, timeout); };
+NotificationClass.prototype.info = function(title, message, timeout){ return this.show('info', title, message, timeout); };
+NotificationClass.prototype.success = function(title, message, timeout){ return this.show('success', title, message, timeout); };
+NotificationClass.prototype.error = function(title, message, timeout){ return this.show('error', title, message, timeout); };
diff --git a/src/upload/call_log/xdrm.xml b/src/upload/call_log/xdrm.xml
index 8757312..b615998 100755
--- a/src/upload/call_log/xdrm.xml
+++ b/src/upload/call_log/xdrm.xml
@@ -1,937 +1,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/view.php b/view.php
index 8e02cff..117f6ad 100755
--- a/view.php
+++ b/view.php
@@ -34,8 +34,7 @@
-
-
+
diff --git a/view/js/analytics-min.js b/view/js/analytics-min.js
index 29c5a99..c02d67a 100644
--- a/view/js/analytics-min.js
+++ b/view/js/analytics-min.js
@@ -1 +1 @@
-var instance=new FormDeflater(document.getElementById("myform"),["input"],["name","data-name"]);console.log(instance.deflate());Notification=new NotificationClass($("#notification-container"));Notification.show("warning","ERREUR","Une erreur de chargement est intervenue..");
+var instance=new FormDeflater(document.getElementById("myform"),["input"],["name","data-name"]);console.log(instance.deflate());
diff --git a/view/js/analytics.js b/view/js/analytics.js
index 307d3fc..441aed4 100644
--- a/view/js/analytics.js
+++ b/view/js/analytics.js
@@ -6,8 +6,3 @@ var instance = new FormDeflater(
/* (2) On récupère l'objet */
console.log( instance.deflate() );
-
-
-Notification = new NotificationClass( $('#notification-container') );
-
-Notification.show( 'warning', 'ERREUR', 'Une erreur de chargement est intervenue..' );
diff --git a/view/js/input-min.js b/view/js/input-min.js
index 44f448e..ed28ab7 100644
--- a/view/js/input-min.js
+++ b/view/js/input-min.js
@@ -1,14 +1,15 @@
var subjectManager,contactManager,miniManager,ficheManager,matriceManager;
-function dynamicUpdate(a){var e=a instanceof Element,c=e&&"SPAN"==a.tagName&&"switch-left"==a.className,f=e&&"SPAN"==a.tagName&&"switch-both"==a.className,b=e&&"INPUT"==a.tagName&&"submit"==a.type,d=e&&"SPAN"==a.tagName&&("nav-mini"==a.parentNode.id||"nav-fiche"==a.parentNode.id),e=e&&"SPAN"==a.tagName&&"nav-contact"==a.parentNode.id;if(!(f||c||b||d||e)&&!0!==a)return!1;if(f)console.log("> switch firstname <-> lastname"),c=a.parentNode,a=c.children[8],c=c.children[10],f=a.value,a.value=c.value,c.value=
-f;else if(c){console.log("> switch firstname+lastname -> username");c=a.parentNode;f=c.children[6];a=c.children[8];c=c.children[10];if(0 dynamic update"),miniManager.fieldsToStorage(),ficheManager.fieldsToStorage(),contactManager.fieldsToStorage(),matriceManager.fieldsToStorage(),miniManager.sync(),ficheManager.sync(),miniManager.storageToFields(),ficheManager.storageToFields(),
-matriceManager.storageToFields(),(b||e)&&contactManager.storageToFields()}
+function dynamicUpdate(a){var b=a instanceof Element,f=b&&"SPAN"==a.tagName&&"switch-left"==a.className,e=b&&"SPAN"==a.tagName&&"switch-both"==a.className,g=b&&"INPUT"==a.tagName&&"submit"==a.type,c=b&&"SPAN"==a.tagName&&("nav-mini"==a.parentNode.id||"nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"nav-contact"==a.parentNode.id;if(!(e||f||g||c||b)&&!0!==a)return!1;if(e)console.log("> switch firstname <-> lastname"),f=a.parentNode,a=f.children[8],f=f.children[10],e=a.value,a.value=f.value,f.value=
+e;else if(f){console.log("> switch firstname+lastname -> username");f=a.parentNode;e=f.children[6];a=f.children[8];f=f.children[10];if(0 dynamic update"),miniManager.fieldsToStorage(),ficheManager.fieldsToStorage(),contactManager.fieldsToStorage(),matriceManager.fieldsToStorage(),miniManager.sync(),ficheManager.sync(),miniManager.storageToFields(),ficheManager.storageToFields(),
+matriceManager.storageToFields(),(g||b)&&contactManager.storageToFields()}
include("/js/includes/input-phone-subject.js",function(){include("/js/includes/input-phone-contact.js",function(){include("/js/includes/input-phone-mini.js",function(){include("/js/includes/input-phone-fiche.js",function(){include("/js/includes/input-phone-matrice.js",function(){subjectManager=new inputPhoneSubject($('article.subject-panel [data-name="number"]'),$('article.subject-panel [data-name="username"]'),$('article.subject-panel [data-name="firstname"]'),$('article.subject-panel [data-name="lastname"]'),
$('article.subject-panel [data-name="submit"]'));subjectManager.attach();contactManager=new inputPhoneContact($("article.contact-panel"),$("#nav-contact"));contactManager.attach(dynamicUpdate);miniManager=new inputPhoneMini($("article.mini-relation-panel"),$("#nav-mini"));miniManager.attach(dynamicUpdate);ficheManager=new inputPhoneFiche($("article.relation-panel"),$("#nav-fiche"));ficheManager.attach(dynamicUpdate);matriceManager=new inputPhoneMatrice($("article.matrice-panel"));matriceManager.attach(dynamicUpdate);
-$('input#call_log-import[type="file"]').addEventListener("click",function(a){a.target.value=null},!1);$('input#call_log-import[type="file"]').addEventListener("change",function(a){a={path:"upload/call_log",phone_number:$("#subject_phone_number").value,file:a.target.files[0]};api.send(a,function(a){console.log(a);if(0==a.ModuleError){for(var c=0,f=[],b=0;bb;b++)f.push(a.calls[b].number);for(b=0;bb;b++)g.push(a.sms[b].number);for(b=0;b GATHERING ALL DATA");
-subjectManager.fieldsToStorage();contactManager.fieldsToStorage();miniManager.fieldsToStorage();ficheManager.fieldsToStorage();if(!subjectManager.check())return!1;a=lsi["export"]("mini-fiches");for(var e in a)if(!a[e].valid)return!1;a=lsi["export"]("fiches");for(e in a)if(!a[e].valid)return!1;e={path:"input/phone",subject:lsi["export"]("subject")[0],contacts:lsi["export"]("contacts"),mini:lsi["export"]("mini-fiches"),fiches:lsi["export"]("fiches"),matrice:lsi["export"]("matrice")[0]};api.send(e,function(a){console.log(a)},
-!1)},!1)})})})})});
+$('input#call_log-import[type="file"]').addEventListener("click",function(a){a.target.value=null},!1);$('input#call_log-import[type="file"]').addEventListener("change",function(a){a={path:"upload/call_log",phone_number:$("#subject_phone_number").value,file:a.target.files[0]};api.send(a,function(b){console.log(b);var a=null;if(0!=b.ModuleError)9==b.ModuleError?Notification.error("Erreur","Il est n\u00e9cessaire de saisir les informations du sujet avant d'exporter son journal d'appel"):Notification.error("Erreur",
+b.ModuleError);else{for(var a=Notification.info("Info","Chargement du journal d'appel"),e=0,g=[],c=0;cc;c++)g.push(b.calls[c].number);for(c=0;cc;c++)h.push(b.sms[c].number);
+for(c=0;c GATHERING ALL DATA");
+subjectManager.fieldsToStorage();contactManager.fieldsToStorage();miniManager.fieldsToStorage();ficheManager.fieldsToStorage();if(!subjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("mini-fiches");for(var b in a)if(!a[b].valid)return Notification.warning("Attention","La fiche rapide "+(parseInt(b)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;a=lsi["export"]("fiches");for(b in a)if(!a[b].valid)return Notification.warning("Attention",
+"La fiche compl\u00e8te "+(parseInt(b)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;b={path:"input/phone",subject:lsi["export"]("subject")[0],contacts:lsi["export"]("contacts"),mini:lsi["export"]("mini-fiches"),fiches:lsi["export"]("fiches"),matrice:lsi["export"]("matrice")[0]};api.send(b,function(a){if(0!=a.ModuleError)return Notification.error("ERREUR",ModuleError),!1;console.log(a)},!1)},!1)})})})})});
diff --git a/view/js/input.js b/view/js/input.js
index e6f3dfa..cf4dba4 100644
--- a/view/js/input.js
+++ b/view/js/input.js
@@ -230,9 +230,17 @@ include('/js/includes/input-phone-matrice.js', function(){
api.send(request, function(response){
console.log(response);
+ var loadingNotif = null;
+
// Si erreur, on quitte
- if( response.ModuleError != 0 )
+ if( response.ModuleError != 0 ){
+ if( response.ModuleError == 9 )
+ Notification.error('Erreur', 'Il est nécessaire de saisir les informations du sujet avant d\'exporter son journal d\'appel');
+ else
+ Notification.error('Erreur', response.ModuleError);
return;
+ }else
+ loadingNotif = Notification.info('Info', 'Chargement du journal d\'appel');
@@ -336,6 +344,14 @@ include('/js/includes/input-phone-matrice.js', function(){
contactManager.storageToFields();
dynamicUpdate(true);
+
+ /* (9) On notifie la fin du chargement */
+ // On retire la notification de chargement
+ if( loadingNotif != null )
+ loadingNotif.click();
+ // On notifie que tout s'est bien passé
+ Notification.success('OK', 'Chargement terminé');
+
});
}, false);
@@ -359,6 +375,8 @@ include('/js/includes/input-phone-matrice.js', function(){
miniManager.storageToFields();
ficheManager.storageToFields();
matriceManager.storageToFields();
+
+ Notification.success('OK', 'Les données ont été supprimées');
}, false);
@@ -366,6 +384,9 @@ include('/js/includes/input-phone-matrice.js', function(){
/* (8) Gestion de l'export des données locales
---------------------------------------------------------*/
$('#export-all').addEventListener('click', function(e){
+
+ Notification.info('INFORMATION', 'Lancement du téléchargement de la sauvegarde');
+
/* (1) On construit les données */
var data = {
subject: lsi.export('subject')[0],
@@ -413,10 +434,10 @@ include('/js/includes/input-phone-matrice.js', function(){
console.log(response);
// Si erreur, on quitte
- if( response.ModuleError != 0 )
+ if( response.ModuleError != 0 ){
+ Notification.error('Erreur', response.ModuleError);
return false;
-
- console.log(response.local_data.matrice);
+ }
/* (3) On enregistre les données dans le 'localStorage' */
lsi.set('subject', 0, response.local_data.subject);
@@ -451,18 +472,24 @@ include('/js/includes/input-phone-matrice.js', function(){
/* (2) Vérification de la validité de toutes les données */
// {1} Vérification du sujet //
- if( !subjectManager.check() )
+ if( !subjectManager.check() ){
+ Notification.warning('Attention', 'Vous devez saisir les informations du sujet');
return false;
+ }
// {2} Vérification des mini-fiches //
var mini = lsi.export('mini-fiches');
for( var id in mini )
- if( !mini[id].valid )
+ if( !mini[id].valid ){
+ Notification.warning('Attention', 'La fiche rapide '+(parseInt(id)+1)+' est incomplète et/ou incorrecte');
return false;
+ }
// {3} Vérification des fiches //
var fiches = lsi.export('fiches');
for( var id in fiches )
- if( !fiches[id].valid )
+ if( !fiches[id].valid ){
+ Notification.warning('Attention', 'La fiche complète '+(parseInt(id)+1)+' est incomplète et/ou incorrecte');
return false;
+ }
@@ -479,12 +506,18 @@ include('/js/includes/input-phone-matrice.js', function(){
/* (4) On envoie la requête et traite la réponse */
api.send(request, function(response){
+ // Si erreur, on la notifie
+ if( response.ModuleError != 0 ){
+ Notification.error('ERREUR', ModuleError);
+ return false;
+ }
+
console.log(response);
+
}, false);
}, false);
-
}); }); }); }); });