From 501a9b80104a2dc66ef949e8ada36e6f0b40b443 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sat, 4 Apr 2015 11:31:50 +0200 Subject: [PATCH] Meilleures notifications --- bower.json | 2 +- public/css/style.css | 4 ++-- public/js/controllers/MembreCtrl.js | 10 ++++++---- public/js/services/NotifyServ.js | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------- public/js/services/SessionServ.js | 14 ++++++++++---- 5 files changed, 97 insertions(+), 24 deletions(-) diff --git a/bower.json b/bower.json index 6da89eb..d6d923f 100644 --- a/bower.json +++ b/bower.json @@ -8,7 +8,7 @@ "bootswatch-dist": "3.3.2-cerulean", "jsencrypt": "~2.1.0", "animate.css": "~3.2.6", - "remarkable-bootstrap-notify": "~3.0.0", + "remarkable-bootstrap-notify": "~3.0.1", "angular-ladda": "~0.2.2" } } diff --git a/public/css/style.css b/public/css/style.css index ced8790..145e6a0 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -10,6 +10,6 @@ body { width: 90%; } -[data-notify="progressbar"] { - display: none; +[data-notify="title"] { + display: block; } diff --git a/public/js/controllers/MembreCtrl.js b/public/js/controllers/MembreCtrl.js index 2f173c0..52d078c 100644 --- a/public/js/controllers/MembreCtrl.js +++ b/public/js/controllers/MembreCtrl.js @@ -16,25 +16,27 @@ angular.module('MembreCtrl', ['SessionsServ', 'NotifyServ']).controller('MembreC }); $scope.createMembre = function () { + var not = NotifyServ.promise("Ajout du membre..."); $http.post('/api/membres', $scope.formData) .success(function (data) { $scope.formData = {}; $scope.membres = data; - NotifyServ.success("Membre ajouté"); + not.success("Membre ajouté"); }) .error(function (data) { - NotifyServ.error("Impossible d'ajouter le membre", data); + not.error("Impossible d'ajouter le membre"); }); }; $scope.deleteMembre = function (id) { + var not = NotifyServ.promise("Suppression du membre..."); $http.delete('/api/membres/' + id) .success(function (data) { $scope.membres = data; - NotifyServ.success("Membre supprimé."); + not.success("Membre supprimé"); }) .error(function (data) { - NotifyServ.error("Impossible de supprimer le membre", data); + not.error("Impossible de supprimer le membre", data); }); }; diff --git a/public/js/services/NotifyServ.js b/public/js/services/NotifyServ.js index 5c3f55e..9e88602 100644 --- a/public/js/services/NotifyServ.js +++ b/public/js/services/NotifyServ.js @@ -1,29 +1,94 @@ angular.module('NotifyServ', []).service('NotifyServ', [ function () { + $.notifyDefaults({ + placement: { + from: 'bottom', + align: 'left' + }, + animate: { + enter: 'animated bounceInUp', + exit: 'animated bounceOutDown' + }, + newest_on_top: false, + showProgressbar: false, + delay: 3000 + }); return { - notify: function (type, message) { - $.notify({ + notify: $.notify, + info: function (message) { + this.notify({ message: message }, { - type: type, - animate: { - enter: 'animated bounceInDown', - exit: 'animated bounceOutUp' - } + type: 'info' }); }, success: function (message) { - this.notify('success', message); - }, - info: function (message) { - this.notify('info', message); + this.notify({ + message: message + }, { + type: 'success' + }); }, warn: function (message) { - this.notify('warning', message); + this.notify({ + message: message + }, { + type: 'warning' + }); + console.warn(message); }, error: function (context, error) { - this.notify('danger', context); + this.notify({ + title: context, + message: error + }, { + type: 'danger' + }); console.error(context, error); + }, + promise: function (message) { + if (!message) { + message = "Opération en cours..."; + } + var not = this.notify({ + message: message + }, { + delay: 0 + }); + return { + update: function (commands) { + not.update(commands); + $('[data-notify=message]', not.$ele).addClass('animated flash'); + }, + finally: function (commands) { + this.update(commands); + _this = this; + setTimeout(function () { + not.close(); + }, $.notifyDefaults().delay); + }, + success: function (message) { + this.finally({ + message: message, + type: 'success' + }); + }, + warn: function (message) { + this.finally({ + message: message, + type: 'warning' + }); + }, + error: function (context, error) { + commands = { + title: context, + message: error, + type: 'danger' + }; + console.error(context, error); + this.finally(commands); + } + }; } }; } diff --git a/public/js/services/SessionServ.js b/public/js/services/SessionServ.js index d75e2ca..f3ee32d 100644 --- a/public/js/services/SessionServ.js +++ b/public/js/services/SessionServ.js @@ -15,7 +15,7 @@ angular.module('SessionsServ', ['NotifyServ', 'EncryptServ']).service('SessionSe if (typeof data === 'object') { this.cur = data; } else if (data === 'expired') { - NotifyServ.warn("Votre session a expiré"); + NotifyServ.warn("Session expirée"); } else { this.cur = false; } @@ -37,6 +37,7 @@ angular.module('SessionsServ', ['NotifyServ', 'EncryptServ']).service('SessionSe }, connect: function (login, pass, cb) { _this = this; + var not = NotifyServ.promise("Connexion..."); data = JSON.stringify({ login: login, pass: pass @@ -45,24 +46,29 @@ angular.module('SessionsServ', ['NotifyServ', 'EncryptServ']).service('SessionSe $http.post('/api/session', [dataCrypt]).success(function (body) { _this.updateSessionInfos(body); if (_this.cur) { - NotifyServ.info("Connecté en tant que " + _this.cur.nom + ""); + not.success("Connecté en tant que " + _this.cur.nom + ""); if (cb) cb(null); } else { if (body === 'invalid') { - NotifyServ.warn("Identifiants invalides"); + not.warn("Identifiants invalides"); } if (cb) cb(body); } + }).error(function (body) { + not.error("Impossible de se connecter", body); }); }); }, disconnect: function () { _this = this; + var not = NotifyServ.promise("Déconnexion..."); $http.delete('/api/session').success(function () { _this.updateSessionInfos(false); - NotifyServ.info("Déconnecté"); + not.success("Déconnecté"); + }).error(function(body) { + not.error("Impossible de se déconnecter", body); }); } }; -- libgit2 0.21.2