Commit 344a37adf85c8c6450e7a4f4d969814265548eae

Authored by Geoffrey PREUD'HOMME
1 parent e5e2f19a

Création de clients

Showing 2 changed files with 56 additions and 4 deletions   Show diff stats
@@ -104,7 +104,7 @@ @@ -104,7 +104,7 @@
104 </div> 104 </div>
105 </form> 105 </form>
106 </div> 106 </div>
107 - <div v-if="peutNFC"> 107 + <div v-if="PEUT_NFC">
108 <h5>Avec votre carte étudiant</h5> 108 <h5>Avec votre carte étudiant</h5>
109 <p>Passez-la simplement devant le lecteur</p> 109 <p>Passez-la simplement devant le lecteur</p>
110 </div> 110 </div>
@@ -116,12 +116,16 @@ @@ -116,12 +116,16 @@
116 <h5>Créer un nouveau client</h5> 116 <h5>Créer un nouveau client</h5>
117 <div class="row"> 117 <div class="row">
118 <form class="col s12"> 118 <form class="col s12">
  119 + <div class="input-field col s12" v-if="!PEUT_NFC">
  120 + <input type="text" name="idCarte" maxlength="8" v-model="idCarte">
  121 + <label for="idCarte">Identifiant de la carte</label>
  122 + </div>
119 <div class="input-field col s12"> 123 <div class="input-field col s12">
120 - <input type="number" name="solde"> 124 + <input type="number" name="solde" v-model="solde">
121 <label for="solde">Solde initial (€)</label> 125 <label for="solde">Solde initial (€)</label>
122 </div> 126 </div>
123 <div class="row center"> 127 <div class="row center">
124 - <a class="btn-large waves-effect waves-light">Créer</a> 128 + <a class="btn-large waves-effect waves-light" @click="creer" :class="{'disabled': !peutCreer}">Créer</a>
125 </div> 129 </div>
126 </form> 130 </form>
127 </div> 131 </div>
@@ -130,6 +134,10 @@ @@ -130,6 +134,10 @@
130 <h5>Recharger un client</h5> 134 <h5>Recharger un client</h5>
131 <div class="row"> 135 <div class="row">
132 <form class="col s12"> 136 <form class="col s12">
  137 + <div class="input-field col s12" v-if="!PEUT_NFC">
  138 + <input type="text" name="idCarte" maxlength="8" v-model="idCarte">
  139 + <label for="idCarte">Identifiant de la carte</label>
  140 + </div>
133 <div class="input-field col s12"> 141 <div class="input-field col s12">
134 <input type="number" name="credit"> 142 <input type="number" name="credit">
135 <label for="credit">Crédit (€)</label> 143 <label for="credit">Crédit (€)</label>
@@ -144,6 +152,12 @@ @@ -144,6 +152,12 @@
144 <h5>Vendre à un client</h5> 152 <h5>Vendre à un client</h5>
145 <div class="row"> 153 <div class="row">
146 <form class="col s12"> 154 <form class="col s12">
  155 + <div class="input-field col s12" v-if="!PEUT_NFC">
  156 + <input type="text" name="idCarte" maxlength="8" v-model="idCarte">
  157 + <label for="idCarte">Identifiant de la carte</label>
  158 + </div>
  159 + <br/>
  160 + <h6>En spécifiant le nombre de consommations</h6>
147 <div id="grilleBieres"> 161 <div id="grilleBieres">
148 <div class="row"> 162 <div class="row">
149 <div class="col s4"><a class="waves-effect waves-light btn">1</a></div> 163 <div class="col s4"><a class="waves-effect waves-light btn">1</a></div>
@@ -156,6 +170,8 @@ @@ -156,6 +170,8 @@
156 <div class="col s4"><a class="waves-effect waves-light btn">6</a></div> 170 <div class="col s4"><a class="waves-effect waves-light btn">6</a></div>
157 </div> 171 </div>
158 </div> 172 </div>
  173 + <br/>
  174 + <h6>En spécifiant un montant</h6>
159 <div class="row"> 175 <div class="row">
160 <div class="input-field col s12"> 176 <div class="input-field col s12">
161 <input type="number" name="prix"> 177 <input type="number" name="prix">
@@ -170,6 +186,10 @@ @@ -170,6 +186,10 @@
170 </div> 186 </div>
171 <div id="vidange"> 187 <div id="vidange">
172 <h5>Vider le contenu de la carte d'un client</h5> 188 <h5>Vider le contenu de la carte d'un client</h5>
  189 + <div class="input-field col s12" v-if="!PEUT_NFC">
  190 + <input type="text" name="idCarte" maxlength="8" v-model="idCarte">
  191 + <label for="idCarte">Identifiant de la carte</label>
  192 + </div>
173 <div class="row center"> 193 <div class="row center">
174 <a class="btn-large waves-effect waves-light">Vider</a> 194 <a class="btn-large waves-effect waves-light">Vider</a>
175 </div> 195 </div>
@@ -9,6 +9,8 @@ var TRANSACTION_VIDANGE = 4 @@ -9,6 +9,8 @@ var TRANSACTION_VIDANGE = 4
9 9
10 var TRANSACTION_DUREE = 60 10 var TRANSACTION_DUREE = 60
11 11
  12 +var PEUT_NFC = false
  13 +
12 // Fonctions pour Materialize 14 // Fonctions pour Materialize
13 $(function(){ 15 $(function(){
14 $('.button-collapse').sideNav(); 16 $('.button-collapse').sideNav();
@@ -20,10 +22,14 @@ $(function(){ @@ -20,10 +22,14 @@ $(function(){
20 var app = new Vue({ 22 var app = new Vue({
21 el: 'body', 23 el: 'body',
22 data: { 24 data: {
  25 + // Constantes
  26 + PEUT_NFC: PEUT_NFC,
  27 + // Affichage
23 page: 'connexion', 28 page: 'connexion',
24 - connecte: false,  
25 erreurTitre: '', 29 erreurTitre: '',
26 erreurMessage: '', 30 erreurMessage: '',
  31 + // Session
  32 + connecte: false,
27 date: 1, 33 date: 1,
28 }, 34 },
29 methods: { 35 methods: {
@@ -33,6 +39,10 @@ var app = new Vue({ @@ -33,6 +39,10 @@ var app = new Vue({
33 cb(data['status'], data); 39 cb(data['status'], data);
34 }) 40 })
35 }, 41 },
  42 + api: function(chemin, donnees, cb) {
  43 + donnees['jeton'] = this.jeton
  44 + this.apiBrute(chemin, donnees, cb)
  45 + },
36 // Affichage 46 // Affichage
37 toast: function(texte) { 47 toast: function(texte) {
38 Materialize.toast(texte, 4000); 48 Materialize.toast(texte, 4000);
@@ -68,11 +78,33 @@ var app = new Vue({ @@ -68,11 +78,33 @@ var app = new Vue({
68 } 78 }
69 }) 79 })
70 }, 80 },
  81 + creer: function() {
  82 + if (!this.peutCreer) return
  83 + var that = this
  84 + this.api("client/ajouter", {idCarte: this.idCarte, solde: this.solde}, function(retour, donnees) {
  85 + switch(retour) {
  86 + case "ok":
  87 + that.toast("Client " + that.idCarte + " crée avec un solde de " + that.solde + " €")
  88 + break;
  89 +
  90 + case "solde_negatif":
  91 + that.toast("Solde négatif")
  92 + break;
  93 +
  94 + default:
  95 + that.erreur(retour, donnees);
  96 + break;
  97 + }
  98 + });
  99 + }
71 }, 100 },
72 computed: { 101 computed: {
73 peutConnecter: function() { 102 peutConnecter: function() {
74 return this.login && this.mdp; 103 return this.login && this.mdp;
75 }, 104 },
  105 + peutCreer: function() {
  106 + return this.solde && (this.PEUT_NFC || this.idCarte)
  107 + },
76 timer: function() { 108 timer: function() {
77 var secondes = this.connecte + JETON_DUREE - this.date 109 var secondes = this.connecte + JETON_DUREE - this.date
78 var minutes = Math.floor(secondes/60) 110 var minutes = Math.floor(secondes/60)