Commit 1de801b76cb7d175695264125c113731d10d1718

Authored by Geoffrey PREUD'HOMME
1 parent 8a71d37c

Ajouter utilisateur

Showing 3 changed files with 90 additions and 12 deletions   Show diff stats
index.html
... ... @@ -48,9 +48,48 @@
48 48 <a class="modal-action modal-close waves-effect waves-red btn-flat">Annuler</a>
49 49 </div>
50 50 </div>
  51 + <div id="u_ajouter" class="modal">
  52 + <form @submit="u_ajouter(u_nouveau)">
  53 + <div class="modal-content">
  54 + <h4>Ajouter un utilisateur</h4>
  55 + <div class="input-field">
  56 + <i class="material-icons prefix">perm_identity</i>
  57 + <input type="text" name="login" v-model="u_nouveau.login" length="30">
  58 + <label for="u_nouveau.login">Login</label>
  59 + </div>
  60 + <p>
  61 + <input name="droit_nouveau" type="radio" id="droit_nouveau_1" v-model="u_nouveau.droit" value="1" />
  62 + <label for="droit_nouveau_1">BDE</label>
  63 + </p>
  64 + <p>
  65 + <input name="droit_nouveau" type="radio" id="droit_nouveau_2" v-model="u_nouveau.droit" value="2" />
  66 + <label for="droit_nouveau_2">Bar</label>
  67 + </p>
  68 + <p>
  69 + <input name="droit_nouveau" type="radio" id="droit_nouveau_3" v-model="u_nouveau.droit" value="3" />
  70 + <label for="droit_nouveau_3">Président</label>
  71 + </p>
  72 + <div class="input-field">
  73 + <i class="material-icons prefix">vpn_key</i>
  74 + <input type="password" name="mdp" v-model="u_nouveau.mdp" length="72">
  75 + <label for="u_nouveau.mdp">Mot de passe</label>
  76 + </div>
  77 + <div class="input-field">
  78 + <i class="material-icons prefix">credit_card</i>
  79 + <input type="text" name="carte" length="8" v-model="u_nouveau.idCarte">
  80 + <label for="carte">Carte</label>
  81 + </div>
  82 + </div>
  83 + <div class="modal-footer">
  84 + <button type="submit" class="modal-action modal-close waves-green" :disabled="!u_nouveau.login || !u_nouveau.droit || !u_nouveau.mdp">Créer</button>
  85 + <button type="reset" class="modal-action modal-close waves-red">Annuler</button>
  86 + </div>
  87 + </form>
  88 + </div>
51 89  
52 90 <!-- Page -->
53 91 <nav role="navigation">
  92 +
54 93 <div>
55 94 <div>
56 95 <a class="brand-logo" v-if="page == 'connexion'">10⁵</a>
... ... @@ -287,22 +326,21 @@
287 326 <div class="collapsible-header">
288 327 <i class="material-icons" v-if="utilisateur.droit == 1">assignment_ind</i>
289 328 <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 }}
  329 + <i class="material-icons" v-if="utilisateur.droit == 3">supervisor_account</i> {{ utilisateur.login }}
292 330 </div>
293 331 <div class="collapsible-body">
294 332 <h5>Changer de droit</h5>
295 333 <form @change="u_droit(utilisateur)">
296 334 <p>
297   - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_1'" v-model="utilisateur.droit" value="1"/>
  335 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_1'" v-model="utilisateur.droit" value="1" />
298 336 <label :for="'droit_' + utilisateur.login + '_1'">BDE</label>
299 337 </p>
300 338 <p>
301   - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_2'" v-model="utilisateur.droit" value="2"/>
  339 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_2'" v-model="utilisateur.droit" value="2" />
302 340 <label :for="'droit_' + utilisateur.login + '_2'">Bar</label>
303 341 </p>
304 342 <p>
305   - <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_3'" v-model="utilisateur.droit" value="3"/>
  343 + <input :name="'droit_' + utilisateur.login" type="radio" :id="'droit_' + utilisateur.login + '_3'" v-model="utilisateur.droit" value="3" />
306 344 <label :for="'droit_' + utilisateur.login + '_3'">Président</label>
307 345 </p>
308 346 </form>
... ... @@ -310,7 +348,7 @@
310 348 <form @submit="u_mdp(utilisateur)">
311 349 <div class="input-field">
312 350 <i class="material-icons prefix">vpn_key</i>
313   - <input type="password" name="mdp" v-model="utilisateur.mdp">
  351 + <input type="password" name="mdp" v-model="utilisateur.mdp" length="72">
314 352 <label for="utilisateur.mdp">Mot de passe</label>
315 353 </div>
316 354 <button :disabled="!utilisateur.mdp">Changer de mot de passe</button>
... ... @@ -319,7 +357,7 @@
319 357 <form @submit="u_carte(utilisateur)">
320 358 <div class="input-field">
321 359 <i class="material-icons prefix">credit_card</i>
322   - <input type="text" name="carte" length="8" v-model="utilisateur.idCarte" >
  360 + <input type="text" name="carte" length="8" v-model="utilisateur.idCarte">
323 361 <label for="utilisateur.idCarte">Carte</label>
324 362 </div>
325 363 <button :disabled="!utilisateur.idCarte">Changer de carte</button>
... ... @@ -330,14 +368,19 @@
330 368 </div>
331 369 </li>
332 370 </ul>
333   - </div>
334   - </div>
335   - <div id="statistiques">
336   - <h4>Statistiques</h4>
337   - <todo></todo>
  371 + <div class="fixed-action-btn">
  372 + <button @click="modal('u_ajouter')">
  373 + <i class="large material-icons">add</i>
  374 + </button>
  375 + </div>
338 376 </div>
339 377 </div>
  378 + <div id="statistiques">
  379 + <h4>Statistiques</h4>
  380 + <todo></todo>
  381 + </div>
340 382 </div>
  383 + </div>
341 384  
342 385  
343 386 </div>
... ...
js/init.js
... ... @@ -43,6 +43,7 @@ var app = new Vue({
43 43 clients: [],
44 44 transactions: [],
45 45 utilisateurs: [],
  46 + u_nouveau: {},
46 47 },
47 48 methods: {
48 49 // API
... ... @@ -104,6 +105,9 @@ var app = new Vue({
104 105 },
105 106  
106 107 // Affichage
  108 + modal: function(nom) {
  109 + $('#' + nom).openModal();
  110 + },
107 111 toast: function(texte) {
108 112 Materialize.toast(texte, 4000);
109 113 },
... ... @@ -155,6 +159,20 @@ var app = new Vue({
155 159 }
156 160 });
157 161 },
  162 + u_ajouter: function(utilisateur) {
  163 + var that = this
  164 + this.api("utilisateur/ajouter", utilisateur, function(retour, donnees) {
  165 + switch(retour) {
  166 + case "ok":
  167 + that.toast("Utilisateur " + utilisateur.login + " ajouté")
  168 + break;
  169 +
  170 + default:
  171 + that.erreur(retour, donnees);
  172 + break;
  173 + }
  174 + });
  175 + },
158 176 u_mdp: function(utilisateur) {
159 177 var that = this
160 178 this.api("utilisateur/mdp", {login: utilisateur.login, mdp: utilisateur.mdp}, function(retour, donnees) {
... ...
scss/style.scss
... ... @@ -68,6 +68,12 @@ nav&gt;div {
68 68  
69 69 }
70 70  
  71 +.modal-footer {
  72 + >a, >button {
  73 + @extend .waves-effect;
  74 + @extend .btn-flat;
  75 + }
  76 +}
71 77  
72 78 // Stylisation de tous les boutons
73 79 button {
... ... @@ -80,6 +86,17 @@ button[disabled] {
80 86 @extend .disabled;
81 87 }
82 88  
  89 +.fixed-action-btn {
  90 + bottom: 75px;
  91 + right: 50px;
  92 + >button {
  93 + @extend .btn-floating;
  94 + @extend .btn-large;
  95 + @extend .indigo;
  96 + }
  97 +
  98 +}
  99 +
83 100 // Simplification des formulaires
84 101 form {
85 102 @extend .row;
... ...