Commit f661af157d66eb1c1fa75f0ad01613d7f98bff75
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
Showing
5 changed files
with
50 additions
and
35 deletions
Show diff stats
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> |