Commit f661af157d66eb1c1fa75f0ad01613d7f98bff75

Authored by Geoffrey PREUD'HOMME
1 parent 9a18ee30

Amelioré la gestion des membres

* Renvoi uniquement de ce qui est nécessaire lors
	de l'ajout ou de la suppression
* Animations
app/routes/ApiRtes.js
@@ -75,11 +75,8 @@ api.post('/membres', function (req, res) { // Ajout d'un membre @@ -75,11 +75,8 @@ api.post('/membres', function (req, res) { // Ajout d'un membre
75 MembresServ.add(req.body, function (err, membre) { 75 MembresServ.add(req.body, function (err, membre) {
76 if (err) 76 if (err)
77 res.send(err); 77 res.send(err);
78 - MembresServ.list(function (err, membres) {  
79 - if (err)  
80 - res.send(err);  
81 - res.json(membres);  
82 - }); 78 + else
  79 + res.json(membre);
83 }); 80 });
84 }); 81 });
85 }); 82 });
@@ -89,11 +86,8 @@ api.delete('/membres/:membre_id', function (req, res) { // Supression d'un membr @@ -89,11 +86,8 @@ api.delete('/membres/:membre_id', function (req, res) { // Supression d'un membr
89 MembresServ.remove(req.params.membre_id, function (err, membre) { 86 MembresServ.remove(req.params.membre_id, function (err, membre) {
90 if (err) 87 if (err)
91 res.send(err); 88 res.send(err);
92 - MembresServ.list(function (err, membres) {  
93 - if (err)  
94 - res.send(err);  
95 - res.json(membres);  
96 - }); 89 + else
  90 + res.json(null);
97 }); 91 });
98 }); 92 });
99 }); 93 });
app/services/MembresServ.js
@@ -2,36 +2,48 @@ var MembreModl = require('../models/MembreModl'); @@ -2,36 +2,48 @@ var MembreModl = require('../models/MembreModl');
2 var NomsServ = require('../services/NomsServ'); 2 var NomsServ = require('../services/NomsServ');
3 var async = require('async'); 3 var async = require('async');
4 4
5 -var membres = {}; 5 +var MembresServ = {};
6 6
7 -membres.list = function (cb) { 7 +MembresServ.addData = function (membre, cb) {
  8 + NomsServ.get(membre.login, function (nom) {
  9 + if (nom) {
  10 + membre.nom = nom;
  11 + } else {
  12 + membre.nom = membre.login;
  13 + }
  14 + cb(null, membre);
  15 + });
  16 +};
  17 +
  18 +MembresServ.get = function(id, cb) {
  19 + MembreModl.findById(id).lean().exec(function (err, membre) {
  20 + if (err)
  21 + cb(err);
  22 + else
  23 + MembresServ.addData(membre, cb);
  24 + });
  25 +};
  26 +
  27 +MembresServ.list = function (cb) {
8 MembreModl.find({}).lean().exec(function (err, membres) { 28 MembreModl.find({}).lean().exec(function (err, membres) {
9 - addNom = function (membre, cbA) {  
10 - NomsServ.get(membre.login, function (nom) {  
11 - if (nom) {  
12 - membre.nom = nom;  
13 - } else {  
14 - membre.nom = membre.login;  
15 - }  
16 - cbA(null, membre);  
17 - });  
18 - };  
19 - async.mapSeries(membres, addNom, cb); 29 + async.mapSeries(membres, MembresServ.addData, cb);
20 }); 30 });
21 }; 31 };
22 32
23 -membres.add = function (data, cb) { 33 +MembresServ.add = function (data, cb) {
24 MembreModl.create({ 34 MembreModl.create({
25 login: data.login, 35 login: data.login,
26 role: data.role, 36 role: data.role,
27 section: data.section, 37 section: data.section,
28 - }, cb); 38 + }, function(err, membre) {
  39 + MembresServ.get(membre._id, cb);
  40 + });
29 }; 41 };
30 42
31 -membres.remove = function (id, cb) { 43 +MembresServ.remove = function (id, cb) {
32 MembreModl.remove({ 44 MembreModl.remove({
33 _id: id 45 _id: id
34 }, cb); 46 }, cb);
35 }; 47 };
36 48
37 -module.exports = membres; 49 +module.exports = MembresServ;
public/css/style.css
@@ -29,3 +29,13 @@ body { @@ -29,3 +29,13 @@ body {
29 #membre-list { 29 #membre-list {
30 width: 90%; 30 width: 90%;
31 } 31 }
  32 +
  33 +#membre-list .ng-enter {
  34 + -webkit-animation: fadeInLeft 0.5s;
  35 + animation: fadeInLeft 0.5s;
  36 +}
  37 +
  38 +#membre-list .ng-leave {
  39 + -webkit-animation: fadeOutLeft 0.5s;
  40 + animation: fadeOutLeft 0.5s;
  41 +}
public/js/controllers/MembreCtrl.js
@@ -18,9 +18,9 @@ angular.module('MembreCtrl', ['SessionsServ', 'NotifyServ']).controller('MembreC @@ -18,9 +18,9 @@ angular.module('MembreCtrl', ['SessionsServ', 'NotifyServ']).controller('MembreC
18 $scope.createMembre = function () { 18 $scope.createMembre = function () {
19 var not = NotifyServ.promise("Ajout du membre..."); 19 var not = NotifyServ.promise("Ajout du membre...");
20 $http.post('/api/membres', $scope.formData) 20 $http.post('/api/membres', $scope.formData)
21 - .success(function (data) { 21 + .success(function (membre) {
22 $scope.formData = {}; 22 $scope.formData = {};
23 - $scope.membres = data; 23 + $scope.membres.push(membre);
24 not.success("Membre ajouté"); 24 not.success("Membre ajouté");
25 }) 25 })
26 .error(function (data) { 26 .error(function (data) {
@@ -28,11 +28,11 @@ angular.module('MembreCtrl', ['SessionsServ', 'NotifyServ']).controller('MembreC @@ -28,11 +28,11 @@ angular.module('MembreCtrl', ['SessionsServ', 'NotifyServ']).controller('MembreC
28 }); 28 });
29 }; 29 };
30 30
31 - $scope.deleteMembre = function (id) { 31 + $scope.deleteMembre = function (index) {
32 var not = NotifyServ.promise("Suppression du membre..."); 32 var not = NotifyServ.promise("Suppression du membre...");
33 - $http.delete('/api/membres/' + id)  
34 - .success(function (data) {  
35 - $scope.membres = data; 33 + $http.delete('/api/membres/' + $scope.membres[index]._id)
  34 + .success(function (membre) {
  35 + $scope.membres.splice(index, 1);
36 not.success("Membre supprimé"); 36 not.success("Membre supprimé");
37 }) 37 })
38 .error(function (data) { 38 .error(function (data) {
public/views/membres.html
1 <div class="container"> 1 <div class="container">
2 - <!-- HEADER AND TODO COUNT -->  
3 <div class="jumbotron text-center"> 2 <div class="jumbotron text-center">
4 <h1>Il y a 3 <h1>Il y a
5 <span id="membre-qt" class="label label-info">{{ membres.length }}</span> personnes au Club Info !</h1> 4 <span id="membre-qt" class="label label-info">{{ membres.length }}</span> personnes au Club Info !</h1>
@@ -20,7 +19,7 @@ @@ -20,7 +19,7 @@
20 <td>{{ membre.section }}</td> 19 <td>{{ membre.section }}</td>
21 <td>{{ membre.role }}</td> 20 <td>{{ membre.role }}</td>
22 <td ng-if="session.canDelMembre"> 21 <td ng-if="session.canDelMembre">
23 - <button type="button" class="btn btn-danger" aria-label="Expulser" ng-click="deleteMembre(membre._id)"> 22 + <button type="button" class="btn btn-danger" aria-label="Expulser" ng-click="deleteMembre($index)">
24 <span class="glyphicon glyphicon-remove" aria-hidden="true"></span> 23 <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
25 </button> 24 </button>
26 </td> 25 </td>