Commit 344a37adf85c8c6450e7a4f4d969814265548eae
1 parent
e5e2f19a
Création de clients
Showing
2 changed files
with
56 additions
and
4 deletions
Show diff stats
index.html
@@ -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> |
js/init.js
@@ -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) |