Blame view

js/init.js 11.1 KB
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
1
2
3
4
5
6
7
8
9
10
11
  // Constantes
  var JETON_TAILLE = 30 // Taille d'un jeton
  var JETON_DUREE = 10*60 // Temps de validité du jeton en secondes
  
  var TRANSACTION_CREATION = 1
  var TRANSACTION_RECHARGEMENT = 2
  var TRANSACTION_PAIEMENT = 3
  var TRANSACTION_VIDANGE = 4
  
  var TRANSACTION_DUREE = 60
  
344a37ad   Geoffrey PREUD'HOMME   Création de clients
12
13
  var PEUT_NFC = false
  
07329faa   Geoffrey PREUD'HOMME   Simplification de...
14
  // Préparation de l'interactivité
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
15
16
17
  function desactiverForms() {
      $('form').submit(function() { return false });
  }
bf26706c   Geoffrey PREUD'HOMME   Écran principal
18
19
20
  $(function(){
      $('.button-collapse').sideNav();
      $('.modal-trigger').leanModal()
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
21
      desactiverForms()
4525b510   Geoffrey PREUD'HOMME   Des trucs useless
22
      $('[name=idCarte]').characterCounter();
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
23
  });
bf26706c   Geoffrey PREUD'HOMME   Écran principal
24
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
25
  // Application
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
26
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
27
28
29
  var app = new Vue({
      el: 'body',
      data: {
344a37ad   Geoffrey PREUD'HOMME   Création de clients
30
31
32
          // Constantes
          PEUT_NFC: PEUT_NFC,
          // Affichage
e5e2f19a   Geoffrey PREUD'HOMME   Mutli-pages
33
          page: 'connexion',
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
34
35
          erreurTitre: '',
          erreurMessage: '',
344a37ad   Geoffrey PREUD'HOMME   Création de clients
36
          // Session
9868802a   Geoffrey PREUD'HOMME   Liste des clients
37
38
39
          login: '',
          droit: '',
          jeton: '',
344a37ad   Geoffrey PREUD'HOMME   Création de clients
40
          connecte: false,
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
41
          date: 1,
9868802a   Geoffrey PREUD'HOMME   Liste des clients
42
43
          // Données
          clients: [],
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
44
          transactions: [],
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
45
          utilisateurs: [],
1de801b7   Geoffrey PREUD'HOMME   Ajouter utilisateur
46
          u_nouveau: {},
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
47
48
49
50
      },
      methods: {
          // API
          apiBrute: function(chemin, donnees, cb) {
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
51
52
              $('body').css('opacity', 0.7)
              $.post('api/' + chemin, donnees).done(function(data) {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
53
                  cb(data['status'], data);
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
54
55
56
57
              }).error(function() {
                  cb('erreur_communication', {});
              }).always(function() {
                  $('body').css('opacity', 1)
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
58
59
              })
          },
344a37ad   Geoffrey PREUD'HOMME   Création de clients
60
61
62
63
          api: function(chemin, donnees, cb) {
              donnees['jeton'] = this.jeton
              this.apiBrute(chemin, donnees, cb)
          },
9868802a   Geoffrey PREUD'HOMME   Liste des clients
64
65
66
67
68
69
70
71
72
73
74
75
76
77
          actuClients: function() {
              var that = this
              this.api("client/liste", {}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
                          that.clients = donnees.clients
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              })
          },
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
78
79
80
81
82
          actuTransactions: function() {
              var that = this
              this.api("transactions", {}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
83
84
85
86
87
88
89
90
                          that.transactions = donnees.transactions
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              })
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
91
          },
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
92
93
94
95
96
97
98
99
100
101
102
103
104
105
          actuUtilisateurs: function() {
              var that = this
              this.api("utilisateur/liste", {}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
                          that.utilisateurs = donnees.utilisateurs
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              })
          },
9868802a   Geoffrey PREUD'HOMME   Liste des clients
106
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
107
          // Affichage
1de801b7   Geoffrey PREUD'HOMME   Ajouter utilisateur
108
109
110
          modal: function(nom) {
              $('#' + nom).openModal();
          },
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
111
112
113
114
115
          toast: function(texte) {
              Materialize.toast(texte, 4000);
          },
          erreur: function(retour, donnees) {
              this.erreurTitre = retour
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
116
              this.erreurMessage = donnees.message
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
117
118
              $("#modalErreur").openModal();
          },
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
119
          annuler: function(id) {
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
120
121
122
123
              var that = this
              this.api("annuler", {idTransaction: id}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
124
125
126
127
128
                          for (transaction of that.transactions) {
                              if (transaction.id == id) {
                                  transaction.valide = 0
                              }
                          }
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
129
130
131
132
133
134
135
136
137
                          that.toast("Client " + donnees.client + " : " + donnees.soldeAncien + " → " + donnees.soldeNouveau)
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
138
          transaction: function(id, texte) {
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
139
140
141
142
143
144
              var that = this
              var interieur = $('<span>').text(texte + ' ').append($('<a>').text('Annuler').one('click', function() {
                  that.annuler(id)
              }))
              that.toast(interieur);
          },
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
145
          c_decouvert: function(client, e) {
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
146
147
148
              var that = this
              // 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)
              if (typeof(e) == 'object') {
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
149
                  client.decouvert = $(e.target).is(':checked')
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
150
              }
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
151
152
153
154
155
156
157
158
159
160
161
              this.api("client/decouvert", {idCarte: client.idCarte, decouvert: client.decouvert}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
1de801b7   Geoffrey PREUD'HOMME   Ajouter utilisateur
162
163
164
165
166
167
168
169
170
171
172
173
174
175
          u_ajouter: function(utilisateur) {
              var that = this
              this.api("utilisateur/ajouter", utilisateur, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
                          that.toast("Utilisateur " + utilisateur.login + " ajouté")
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
176
177
178
          u_mdp: function(utilisateur) {
              var that = this
              this.api("utilisateur/mdp", {login: utilisateur.login, mdp: utilisateur.mdp}, function(retour, donnees) {
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
179
180
                  switch(retour) {
                      case "ok":
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
                          that.toast(utilisateur.login + " : mot de passe changé")
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
          u_droit: function(utilisateur) {
              var that = this
              this.api("utilisateur/droit", {login: utilisateur.login, droit: utilisateur.droit}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
                          that.toast(utilisateur.login + " : droit changé")
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
          u_carte: function(utilisateur) {
              var that = this
              this.api("utilisateur/carte", {login: utilisateur.login, idCarte: utilisateur.idCarte}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
                          that.toast(utilisateur.login + " : carte changée")
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
210
211
212
213
214
215
216
217
218
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
219
220
          // Fonctionnement
          connecter: function() {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
221
222
223
224
225
226
227
228
229
              var that = this;
              this.apiBrute("utilisateur/connexion", {login: this.login , mdp: this.mdp} , function(retour, donnees) {
                  that.mdp = ''
                  switch(retour) {
                      case "ok":
                          that.login = donnees.login
                          that.droit = donnees.droit
                          that.jeton = donnees.jeton
                          that.connecte = that.date
e5e2f19a   Geoffrey PREUD'HOMME   Mutli-pages
230
231
                          that.toast("Correctement identifié en tant que " + that.login + " pour " + JETON_DUREE/60+ " minutes")
                          that.page = 'operations'
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
232
                          break;
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
233
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
234
235
236
237
238
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              })
07329faa   Geoffrey PREUD'HOMME   Simplification de...
239
              return false
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
240
          },
344a37ad   Geoffrey PREUD'HOMME   Création de clients
241
          creer: function() {
344a37ad   Geoffrey PREUD'HOMME   Création de clients
242
              var that = this
9868802a   Geoffrey PREUD'HOMME   Liste des clients
243
              this.api("client/ajouter", {idCarte: this.idCarte, solde: this.solde, decouvert: this.decouvert}, function(retour, donnees) {
344a37ad   Geoffrey PREUD'HOMME   Création de clients
244
245
                  switch(retour) {
                      case "ok":
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
246
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " crée avec un solde de " + that.solde + " €")
344a37ad   Geoffrey PREUD'HOMME   Création de clients
247
248
                          break;
  
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
249
250
251
252
253
254
255
256
257
258
259
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
          recharger: function() {
              var that = this
              this.api("client/recharger", {idCarte: this.idCarte, montant: this.credit}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
260
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " rechargé : " + donnees.soldeAncien + " + " + that.credit + " → " + donnees.soldeNouveau + " €")
344a37ad   Geoffrey PREUD'HOMME   Création de clients
261
262
263
264
265
266
267
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
268
269
270
271
272
273
274
275
276
277
278
279
          },
          payer: function(quantite) {
              var that = this
              var options = {idCarte: this.idCarte}
              if (typeof(quantite) == 'number') {
                  options.quantite = quantite
              } else {
                  options.montant = that.prix
              }
              this.api("client/payer", options, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
280
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " débité : " + donnees.soldeAncien + " - " + donnees.montant + " → " + donnees.soldeNouveau + " €")
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
281
282
283
284
285
286
287
288
289
290
291
292
293
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
          vidanger: function() {
              var that = this
              this.api("client/vidange", {idCarte: this.idCarte}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
294
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " vidé : " + donnees.soldeAncien + " → 0 €")
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
295
296
297
298
299
300
301
302
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
303
304
      },
      computed: {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
305
306
          timer: function() {
              var secondes = this.connecte + JETON_DUREE - this.date
e5e2f19a   Geoffrey PREUD'HOMME   Mutli-pages
307
308
309
              var minutes = Math.floor(secondes/60)
              var secondes = secondes % 60
              return  minutes + ':' + (secondes < 10 ? '0' : '') + secondes
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
310
311
          }
      },
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
312
313
314
315
316
317
318
319
      components: {
          'todo': Vue.extend({template: '<div class="chip green"> Prochainement </div>'}),
      },
      watch: {
          utilisateurs: function() {
              desactiverForms()
          }
      }
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
320
  })
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
321
  
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
322
323
324
325
  Vue.filter('date', function(timestamp) {
      return Date(timestamp).toLocaleString();
  })
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
326
327
328
  setInterval(function actualiserDate() {
      app.$data.date = Math.floor(Date.now()/1000)
  }, 1000);
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...

79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...