Commit dc030339afd1b981284bfd805bc0e70e517bea39

Authored by Geoffrey PREUD'HOMME
1 parent 1de801b7

Modification de son propre utilisateur

Showing 2 changed files with 75 additions and 36 deletions   Show diff stats
index.html
... ... @@ -319,6 +319,9 @@
319 319 </ul>
320 320 </div>
321 321 <div id="utilisateurs">
  322 + <h4>{{ moi.login }}</h4>
  323 + <umodifier :utilisateur="moi"></umodifier>
  324 +
322 325 <h4>Liste des utilisateurs</h4>
323 326 <button @click="actuUtilisateurs">Rafraîchir</button>
324 327 <ul class="collapsible popout" data-collapsible="accordion">
... ... @@ -329,39 +332,7 @@
329 332 <i class="material-icons" v-if="utilisateur.droit == 3">supervisor_account</i> {{ utilisateur.login }}
330 333 </div>
331 334 <div class="collapsible-body">
332   - <h5>Changer de droit</h5>
333   - <form @change="u_droit(utilisateur)">
334   - <p>
335   - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_1'" v-model="utilisateur.droit" value="1" />
336   - <label :for="'droit_' + utilisateur.login + '_1'">BDE</label>
337   - </p>
338   - <p>
339   - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_2'" v-model="utilisateur.droit" value="2" />
340   - <label :for="'droit_' + utilisateur.login + '_2'">Bar</label>
341   - </p>
342   - <p>
343   - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_3'" v-model="utilisateur.droit" value="3" />
344   - <label :for="'droit_' + utilisateur.login + '_3'">Président</label>
345   - </p>
346   - </form>
347   - <h5>Changer de mot de passe</h5>
348   - <form @submit="u_mdp(utilisateur)">
349   - <div class="input-field">
350   - <i class="material-icons prefix">vpn_key</i>
351   - <input type="password" name="mdp" v-model="utilisateur.mdp" length="72">
352   - <label for="utilisateur.mdp">Mot de passe</label>
353   - </div>
354   - <button :disabled="!utilisateur.mdp">Changer de mot de passe</button>
355   - </form>
356   - <h5> Changer de carte </h5>
357   - <form @submit="u_carte(utilisateur)">
358   - <div class="input-field">
359   - <i class="material-icons prefix">credit_card</i>
360   - <input type="text" name="carte" length="8" v-model="utilisateur.idCarte">
361   - <label for="utilisateur.idCarte">Carte</label>
362   - </div>
363   - <button :disabled="!utilisateur.idCarte">Changer de carte</button>
364   - </form>
  335 + <umodifier :utilisateur="utilisateur"></umodifier>
365 336  
366 337 <h5>Transactions</h5>
367 338 <todo></todo>
... ... @@ -393,11 +364,52 @@
393 364 </div>
394 365 </footer>
395 366  
  367 + <!-- Modèles -->
  368 + <script type="text/template" id="todo">
  369 + <div class="chip green">
  370 + Prochainement
  371 + </div>
  372 + </script>
  373 + <script type="text/template" id="u_modifier">
  374 + <h5>Changer de droit</h5>
  375 + <form @change="u_droit(utilisateur)">
  376 + <p>
  377 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_1'" v-model="utilisateur.droit" value="1" :disabled="moi.droit < 3"/>
  378 + <label :for="'droit_' + utilisateur.login + '_1'">BDE</label>
  379 + </p>
  380 + <p>
  381 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_2'" v-model="utilisateur.droit" value="2" :disabled="moi.droit < 3"/>
  382 + <label :for="'droit_' + utilisateur.login + '_2'">Bar</label>
  383 + </p>
  384 + <p>
  385 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_3'" v-model="utilisateur.droit" value="3" :disabled="moi.droit < 3"/>
  386 + <label :for="'droit_' + utilisateur.login + '_3'">Président</label>
  387 + </p>
  388 + </form>
  389 + <h5>Changer de mot de passe</h5>
  390 + <form @submit="u_mdp(utilisateur)">
  391 + <div class="input-field">
  392 + <i class="material-icons prefix">vpn_key</i>
  393 + <input type="password" name="mdp" v-model="utilisateur.mdp" length="72">
  394 + <label for="utilisateur.mdp">Mot de passe</label>
  395 + </div>
  396 + <button :disabled="!utilisateur.mdp">Changer de mot de passe</button>
  397 + </form>
  398 + <h5> Changer de carte </h5>
  399 + <form @submit="u_carte(utilisateur)">
  400 + <div class="input-field">
  401 + <i class="material-icons prefix">credit_card</i>
  402 + <input type="text" name="carte" length="8" v-model="utilisateur.idCarte">
  403 + <label for="utilisateur.idCarte">Carte</label>
  404 + </div>
  405 + <button :disabled="!utilisateur.idCarte">Changer de carte</button>
  406 + </form>
  407 + </script>
396 408  
397 409 <!-- Scripts-->
398 410 <script src="lib/jquery/dist/jquery.min.js"></script>
399 411 <script src="lib/Materialize/dist/js/materialize.min.js"></script>
400   - <script src="lib/vue/dist/vue.min.js"></script>
  412 + <script src="lib/vue/dist/vue.js"></script>
401 413 <script src="js/init.js"></script>
402 414  
403 415 </body>
... ...
js/init.js
... ... @@ -39,11 +39,18 @@ var app = new Vue({
39 39 jeton: '',
40 40 connecte: false,
41 41 date: 1,
  42 + // Champs (à remplacer par des objets)
  43 + mdp: '',
  44 + idCarte: '',
  45 + solde: 0,
  46 + credit: 0,
  47 + prix: 0,
  48 + moi: {},
  49 + u_nouveau: {},
42 50 // Données
43 51 clients: [],
44 52 transactions: [],
45 53 utilisateurs: [],
46   - u_nouveau: {},
47 54 },
48 55 methods: {
49 56 // API
... ... @@ -223,10 +230,13 @@ var app = new Vue({
223 230 that.mdp = ''
224 231 switch(retour) {
225 232 case "ok":
  233 + // TODO Virer les variables non-objet globales
226 234 that.login = donnees.login
227 235 that.droit = donnees.droit
228 236 that.jeton = donnees.jeton
229 237 that.connecte = that.date
  238 +
  239 + that.moi = {login: donnees.login, droit: donnees.droit, jeton: donnees.jeton, connecte: that.date}
230 240 that.toast("Correctement identifié en tant que " + that.login + " pour " + JETON_DUREE/60+ " minutes")
231 241 that.page = 'operations'
232 242 break;
... ... @@ -310,7 +320,22 @@ var app = new Vue({
310 320 }
311 321 },
312 322 components: {
313   - 'todo': Vue.extend({template: '<div class="chip green"> Prochainement </div>'}),
  323 + 'todo': Vue.extend({
  324 + template: $('#todo').html(),
  325 + }),
  326 + 'umodifier': Vue.extend({
  327 + props: ['utilisateur'],
  328 + template: $('#u_modifier').html(),
  329 + methods: { // TODO Pas bien
  330 + u_droit: function(data) { return this.$parent.u_droit(data) },
  331 + u_mdp: function(data) { return this.$parent.u_mdp(data) },
  332 + u_carte: function(data) { return this.$parent.u_carte(data) },
  333 + },
  334 + computed: {
  335 + moi: function() { return this.$parent.moi },
  336 + },
  337 + }),
  338 +
314 339 },
315 340 watch: {
316 341 utilisateurs: function() {
... ... @@ -319,10 +344,12 @@ var app = new Vue({
319 344 }
320 345 })
321 346  
  347 +// Filtres
322 348 Vue.filter('date', function(timestamp) {
323 349 return Date(timestamp).toLocaleString();
324 350 })
325 351  
  352 +// Actualisation du timer
326 353 setInterval(function actualiserDate() {
327 354 app.$data.date = Math.floor(Date.now()/1000)
328 355 }, 1000);
... ...