Commit c85f35205a0b585c30f8699cc01ec07ae34dbe91
1 parent
d449eb6b
Modification des utilisateurs
Showing
3 changed files
with
130 additions
and
7 deletions
Show diff stats
index.html
@@ -92,7 +92,7 @@ | @@ -92,7 +92,7 @@ | ||
92 | </ul> | 92 | </ul> |
93 | </div> | 93 | </div> |
94 | <ul class="side-nav"> | 94 | <ul class="side-nav"> |
95 | - <li><a>TODO</a></li> | 95 | + <todo></todo> |
96 | </ul> | 96 | </ul> |
97 | </div> | 97 | </div> |
98 | </nav> | 98 | </nav> |
@@ -225,7 +225,7 @@ | @@ -225,7 +225,7 @@ | ||
225 | <div class="switch"> | 225 | <div class="switch"> |
226 | <label> | 226 | <label> |
227 | Non | 227 | Non |
228 | - <input v-model="client.decouvert" type="checkbox" @click="decouvert(client.idCarte, client.decouvert, $event)"> | 228 | + <input v-model="client.decouvert" type="checkbox" @click="c_decouvert(client, $event)"> |
229 | <span class="lever"></span> | 229 | <span class="lever"></span> |
230 | Oui | 230 | Oui |
231 | </label> | 231 | </label> |
@@ -233,7 +233,7 @@ | @@ -233,7 +233,7 @@ | ||
233 | </li> | 233 | </li> |
234 | </ul> | 234 | </ul> |
235 | <h5>Transactions</h5> | 235 | <h5>Transactions</h5> |
236 | - <p>TODO</p> | 236 | + <todo></todo> |
237 | </div> | 237 | </div> |
238 | </li> | 238 | </li> |
239 | </ul> | 239 | </ul> |
@@ -281,9 +281,60 @@ | @@ -281,9 +281,60 @@ | ||
281 | </div> | 281 | </div> |
282 | <div id="utilisateurs"> | 282 | <div id="utilisateurs"> |
283 | <h4>Liste des utilisateurs</h4> | 283 | <h4>Liste des utilisateurs</h4> |
284 | + <button @click="actuUtilisateurs">Rafraîchir</button> | ||
285 | + <ul class="collapsible popout" data-collapsible="accordion"> | ||
286 | + <li v-for="utilisateur in utilisateurs"> | ||
287 | + <div class="collapsible-header"> | ||
288 | + <i class="material-icons" v-if="utilisateur.droit == 1">assignment_ind</i> | ||
289 | + <i class="material-icons" v-if="utilisateur.droit == 2">perm_identity</i> | ||
290 | + <i class="material-icons" v-if="utilisateur.droit == 3">supervisor_account</i> | ||
291 | + {{ utilisateur.login }} | ||
292 | + </div> | ||
293 | + <div class="collapsible-body"> | ||
294 | + <h5>Changer de droit</h5> | ||
295 | + <form @change="u_droit(utilisateur)"> | ||
296 | + <p> | ||
297 | + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_1'" v-model="utilisateur.droit" value="1"/> | ||
298 | + <label :for="'droit_' + utilisateur.login + '_1'">BDE</label> | ||
299 | + </p> | ||
300 | + <p> | ||
301 | + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_2'" v-model="utilisateur.droit" value="2"/> | ||
302 | + <label :for="'droit_' + utilisateur.login + '_2'">Bar</label> | ||
303 | + </p> | ||
304 | + <p> | ||
305 | + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_3'" v-model="utilisateur.droit" value="3"/> | ||
306 | + <label :for="'droit_' + utilisateur.login + '_3'">Président</label> | ||
307 | + </p> | ||
308 | + </form> | ||
309 | + <h5>Changer de mot de passe</h5> | ||
310 | + <form @submit="u_mdp(utilisateur)"> | ||
311 | + <div class="input-field"> | ||
312 | + <i class="material-icons prefix">vpn_key</i> | ||
313 | + <input type="password" name="mdp" v-model="utilisateur.mdp"> | ||
314 | + <label for="utilisateur.mdp">Mot de passe</label> | ||
315 | + </div> | ||
316 | + <button :disabled="!utilisateur.mdp">Changer de mot de passe</button> | ||
317 | + </form> | ||
318 | + <h5> Changer de carte </h5> | ||
319 | + <form @submit="u_carte(utilisateur)"> | ||
320 | + <div class="input-field"> | ||
321 | + <i class="material-icons prefix">credit_card</i> | ||
322 | + <input type="text" name="carte" length="8" v-model="utilisateur.idCarte" > | ||
323 | + <label for="utilisateur.idCarte">Carte</label> | ||
324 | + </div> | ||
325 | + <button :disabled="!utilisateur.idCarte">Changer de carte</button> | ||
326 | + </form> | ||
327 | + | ||
328 | + <h5>Transactions</h5> | ||
329 | + <todo></todo> | ||
330 | + </div> | ||
331 | + </li> | ||
332 | + </ul> | ||
333 | + </div> | ||
284 | </div> | 334 | </div> |
285 | <div id="statistiques"> | 335 | <div id="statistiques"> |
286 | <h4>Statistiques</h4> | 336 | <h4>Statistiques</h4> |
337 | + <todo></todo> | ||
287 | </div> | 338 | </div> |
288 | </div> | 339 | </div> |
289 | </div> | 340 | </div> |
js/init.js
@@ -12,10 +12,13 @@ var TRANSACTION_DUREE = 60 | @@ -12,10 +12,13 @@ var TRANSACTION_DUREE = 60 | ||
12 | var PEUT_NFC = false | 12 | var PEUT_NFC = false |
13 | 13 | ||
14 | // Préparation de l'interactivité | 14 | // Préparation de l'interactivité |
15 | +function desactiverForms() { | ||
16 | + $('form').submit(function() { return false }); | ||
17 | +} | ||
15 | $(function(){ | 18 | $(function(){ |
16 | $('.button-collapse').sideNav(); | 19 | $('.button-collapse').sideNav(); |
17 | $('.modal-trigger').leanModal() | 20 | $('.modal-trigger').leanModal() |
18 | - $('form').submit(function() { return false }); | 21 | + desactiverForms() |
19 | $('[name=idCarte]').characterCounter(); | 22 | $('[name=idCarte]').characterCounter(); |
20 | }); | 23 | }); |
21 | 24 | ||
@@ -39,6 +42,7 @@ var app = new Vue({ | @@ -39,6 +42,7 @@ var app = new Vue({ | ||
39 | // Données | 42 | // Données |
40 | clients: [], | 43 | clients: [], |
41 | transactions: [], | 44 | transactions: [], |
45 | + utilisateurs: [], | ||
42 | }, | 46 | }, |
43 | methods: { | 47 | methods: { |
44 | // API | 48 | // API |
@@ -84,6 +88,20 @@ var app = new Vue({ | @@ -84,6 +88,20 @@ var app = new Vue({ | ||
84 | } | 88 | } |
85 | }) | 89 | }) |
86 | }, | 90 | }, |
91 | + actuUtilisateurs: function() { | ||
92 | + var that = this | ||
93 | + this.api("utilisateur/liste", {}, function(retour, donnees) { | ||
94 | + switch(retour) { | ||
95 | + case "ok": | ||
96 | + that.utilisateurs = donnees.utilisateurs | ||
97 | + break; | ||
98 | + | ||
99 | + default: | ||
100 | + that.erreur(retour, donnees); | ||
101 | + break; | ||
102 | + } | ||
103 | + }) | ||
104 | + }, | ||
87 | 105 | ||
88 | // Affichage | 106 | // Affichage |
89 | toast: function(texte) { | 107 | toast: function(texte) { |
@@ -120,15 +138,57 @@ var app = new Vue({ | @@ -120,15 +138,57 @@ var app = new Vue({ | ||
120 | })) | 138 | })) |
121 | that.toast(interieur); | 139 | that.toast(interieur); |
122 | }, | 140 | }, |
123 | - decouvert: function(idCarte, decouvert, e) { | 141 | + c_decouvert: function(client, e) { |
124 | var that = this | 142 | var that = this |
125 | // Hack pour récupérer la vraie valeur (decouvert peut mais pas obligatoirement avoir la bonne valeur tel qu'implémenté dans le HTML actuellmenent) | 143 | // Hack pour récupérer la vraie valeur (decouvert peut mais pas obligatoirement avoir la bonne valeur tel qu'implémenté dans le HTML actuellmenent) |
126 | if (typeof(e) == 'object') { | 144 | if (typeof(e) == 'object') { |
127 | - decouvert = $(e.target).is(':checked') | 145 | + client.decouvert = $(e.target).is(':checked') |
128 | } | 146 | } |
129 | - this.api("client/decouvert", {idCarte: idCarte, decouvert: decouvert}, function(retour, donnees) { | 147 | + this.api("client/decouvert", {idCarte: client.idCarte, decouvert: client.decouvert}, function(retour, donnees) { |
148 | + switch(retour) { | ||
149 | + case "ok": | ||
150 | + break; | ||
151 | + | ||
152 | + default: | ||
153 | + that.erreur(retour, donnees); | ||
154 | + break; | ||
155 | + } | ||
156 | + }); | ||
157 | + }, | ||
158 | + u_mdp: function(utilisateur) { | ||
159 | + var that = this | ||
160 | + this.api("utilisateur/mdp", {login: utilisateur.login, mdp: utilisateur.mdp}, function(retour, donnees) { | ||
130 | switch(retour) { | 161 | switch(retour) { |
131 | case "ok": | 162 | case "ok": |
163 | + that.toast(utilisateur.login + " : mot de passe changé") | ||
164 | + break; | ||
165 | + | ||
166 | + default: | ||
167 | + that.erreur(retour, donnees); | ||
168 | + break; | ||
169 | + } | ||
170 | + }); | ||
171 | + }, | ||
172 | + u_droit: function(utilisateur) { | ||
173 | + var that = this | ||
174 | + this.api("utilisateur/droit", {login: utilisateur.login, droit: utilisateur.droit}, function(retour, donnees) { | ||
175 | + switch(retour) { | ||
176 | + case "ok": | ||
177 | + that.toast(utilisateur.login + " : droit changé") | ||
178 | + break; | ||
179 | + | ||
180 | + default: | ||
181 | + that.erreur(retour, donnees); | ||
182 | + break; | ||
183 | + } | ||
184 | + }); | ||
185 | + }, | ||
186 | + u_carte: function(utilisateur) { | ||
187 | + var that = this | ||
188 | + this.api("utilisateur/carte", {login: utilisateur.login, idCarte: utilisateur.idCarte}, function(retour, donnees) { | ||
189 | + switch(retour) { | ||
190 | + case "ok": | ||
191 | + that.toast(utilisateur.login + " : carte changée") | ||
132 | break; | 192 | break; |
133 | 193 | ||
134 | default: | 194 | default: |
@@ -231,6 +291,14 @@ var app = new Vue({ | @@ -231,6 +291,14 @@ var app = new Vue({ | ||
231 | return minutes + ':' + (secondes < 10 ? '0' : '') + secondes | 291 | return minutes + ':' + (secondes < 10 ? '0' : '') + secondes |
232 | } | 292 | } |
233 | }, | 293 | }, |
294 | + components: { | ||
295 | + 'todo': Vue.extend({template: '<div class="chip green"> Prochainement </div>'}), | ||
296 | + }, | ||
297 | + watch: { | ||
298 | + utilisateurs: function() { | ||
299 | + desactiverForms() | ||
300 | + } | ||
301 | + } | ||
234 | }) | 302 | }) |
235 | 303 | ||
236 | Vue.filter('date', function(timestamp) { | 304 | Vue.filter('date', function(timestamp) { |
scss/style.scss
@@ -27,6 +27,7 @@ $tabs-bg-color: $primary-color !default; | @@ -27,6 +27,7 @@ $tabs-bg-color: $primary-color !default; | ||
27 | 27 | ||
28 | // Permet le footer de se mettre toujours en bas | 28 | // Permet le footer de se mettre toujours en bas |
29 | body { | 29 | body { |
30 | + overflow-y: scroll; // Toujours afficher la barre de défilment pour éviter les sautements | ||
30 | display: flex; | 31 | display: flex; |
31 | min-height: 100vh; | 32 | min-height: 100vh; |
32 | flex-direction: column; | 33 | flex-direction: column; |
@@ -107,6 +108,9 @@ form { | @@ -107,6 +108,9 @@ form { | ||
107 | 108 | ||
108 | .collapsible-body { | 109 | .collapsible-body { |
109 | padding: 20px; | 110 | padding: 20px; |
111 | + p { | ||
112 | + padding: inherit; | ||
113 | + } | ||
110 | } | 114 | } |
111 | 115 | ||
112 | 116 |