Blame view

js/init.js 11.9 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,
dc030339   Geoffrey PREUD'HOMME   Modification de s...
42
43
44
45
46
47
48
49
          // Champs (à remplacer par des objets)
          mdp: '',
          idCarte: '',
          solde: 0,
          credit: 0,
          prix: 0,
          moi: {},
          u_nouveau: {},
9868802a   Geoffrey PREUD'HOMME   Liste des clients
50
51
          // Données
          clients: [],
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
52
          transactions: [],
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
53
          utilisateurs: [],
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
54
55
56
57
      },
      methods: {
          // API
          apiBrute: function(chemin, donnees, cb) {
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
58
59
              $('body').css('opacity', 0.7)
              $.post('api/' + chemin, donnees).done(function(data) {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
60
                  cb(data['status'], data);
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
61
62
63
64
              }).error(function() {
                  cb('erreur_communication', {});
              }).always(function() {
                  $('body').css('opacity', 1)
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
65
66
              })
          },
344a37ad   Geoffrey PREUD'HOMME   Création de clients
67
68
69
70
          api: function(chemin, donnees, cb) {
              donnees['jeton'] = this.jeton
              this.apiBrute(chemin, donnees, cb)
          },
9868802a   Geoffrey PREUD'HOMME   Liste des clients
71
72
73
74
75
76
77
78
79
80
81
82
83
84
          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...
85
86
87
88
89
          actuTransactions: function() {
              var that = this
              this.api("transactions", {}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
90
91
92
93
94
95
96
97
                          that.transactions = donnees.transactions
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              })
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
98
          },
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
99
100
101
102
103
104
105
106
107
108
109
110
111
112
          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
113
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
114
          // Affichage
1de801b7   Geoffrey PREUD'HOMME   Ajouter utilisateur
115
116
117
          modal: function(nom) {
              $('#' + nom).openModal();
          },
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
118
119
120
121
122
          toast: function(texte) {
              Materialize.toast(texte, 4000);
          },
          erreur: function(retour, donnees) {
              this.erreurTitre = retour
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
123
              this.erreurMessage = donnees.message
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
124
125
              $("#modalErreur").openModal();
          },
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
126
          annuler: function(id) {
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
127
128
129
130
              var that = this
              this.api("annuler", {idTransaction: id}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
131
132
133
134
135
                          for (transaction of that.transactions) {
                              if (transaction.id == id) {
                                  transaction.valide = 0
                              }
                          }
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
136
137
138
139
140
141
142
143
144
                          that.toast("Client " + donnees.client + " : " + donnees.soldeAncien + " → " + donnees.soldeNouveau)
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
145
          transaction: function(id, texte) {
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
146
147
148
149
150
151
              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 ...
152
          c_decouvert: function(client, e) {
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
153
154
155
              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 ...
156
                  client.decouvert = $(e.target).is(':checked')
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
157
              }
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
158
159
160
161
162
163
164
165
166
167
168
              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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
          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 ...
183
184
185
          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...
186
187
                  switch(retour) {
                      case "ok":
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
                          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...
217
218
219
220
221
222
223
224
225
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
226
227
          // Fonctionnement
          connecter: function() {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
228
229
230
231
232
              var that = this;
              this.apiBrute("utilisateur/connexion", {login: this.login , mdp: this.mdp} , function(retour, donnees) {
                  that.mdp = ''
                  switch(retour) {
                      case "ok":
dc030339   Geoffrey PREUD'HOMME   Modification de s...
233
                          // TODO Virer les variables non-objet globales
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
234
235
236
237
                          that.login = donnees.login
                          that.droit = donnees.droit
                          that.jeton = donnees.jeton
                          that.connecte = that.date
dc030339   Geoffrey PREUD'HOMME   Modification de s...
238
239
  
                          that.moi = {login: donnees.login, droit: donnees.droit, jeton: donnees.jeton, connecte: that.date}
e5e2f19a   Geoffrey PREUD'HOMME   Mutli-pages
240
241
                          that.toast("Correctement identifié en tant que " + that.login + " pour " + JETON_DUREE/60+ " minutes")
                          that.page = 'operations'
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
242
                          break;
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
243
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
244
245
246
247
248
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              })
07329faa   Geoffrey PREUD'HOMME   Simplification de...
249
              return false
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
250
          },
344a37ad   Geoffrey PREUD'HOMME   Création de clients
251
          creer: function() {
344a37ad   Geoffrey PREUD'HOMME   Création de clients
252
              var that = this
9868802a   Geoffrey PREUD'HOMME   Liste des clients
253
              this.api("client/ajouter", {idCarte: this.idCarte, solde: this.solde, decouvert: this.decouvert}, function(retour, donnees) {
344a37ad   Geoffrey PREUD'HOMME   Création de clients
254
255
                  switch(retour) {
                      case "ok":
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
256
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " crée avec un solde de " + that.solde + " €")
344a37ad   Geoffrey PREUD'HOMME   Création de clients
257
258
                          break;
  
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
259
260
261
262
263
264
265
266
267
268
269
                      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
270
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " rechargé : " + donnees.soldeAncien + " + " + that.credit + " → " + donnees.soldeNouveau + " €")
344a37ad   Geoffrey PREUD'HOMME   Création de clients
271
272
273
274
275
276
277
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
278
279
280
281
282
283
284
285
286
287
288
289
          },
          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
290
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " débité : " + donnees.soldeAncien + " - " + donnees.montant + " → " + donnees.soldeNouveau + " €")
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
291
292
293
294
295
296
297
298
299
300
301
302
303
                          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
304
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " vidé : " + donnees.soldeAncien + " → 0 €")
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
305
306
307
308
309
310
311
312
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
313
314
      },
      computed: {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
315
316
          timer: function() {
              var secondes = this.connecte + JETON_DUREE - this.date
e5e2f19a   Geoffrey PREUD'HOMME   Mutli-pages
317
318
319
              var minutes = Math.floor(secondes/60)
              var secondes = secondes % 60
              return  minutes + ':' + (secondes < 10 ? '0' : '') + secondes
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
320
321
          }
      },
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
322
      components: {
dc030339   Geoffrey PREUD'HOMME   Modification de s...
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
          'todo': Vue.extend({
              template: $('#todo').html(),
          }),
          'umodifier': Vue.extend({
              props: ['utilisateur'],
              template: $('#u_modifier').html(),
              methods: { // TODO Pas bien
                  u_droit: function(data) { return this.$parent.u_droit(data) },
                  u_mdp: function(data) { return this.$parent.u_mdp(data) },
                  u_carte: function(data) { return this.$parent.u_carte(data) },
              },
              computed: {
                  moi: function() { return this.$parent.moi },
              },
          }),
  
c85f3520   Geoffrey PREUD'HOMME   Modification des ...
339
340
341
342
343
344
      },
      watch: {
          utilisateurs: function() {
              desactiverForms()
          }
      }
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
345
  })
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
346
  
dc030339   Geoffrey PREUD'HOMME   Modification de s...
347
  // Filtres
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
348
349
350
351
  Vue.filter('date', function(timestamp) {
      return Date(timestamp).toLocaleString();
  })
  
dc030339   Geoffrey PREUD'HOMME   Modification de s...
352
  // Actualisation du timer
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
353
354
355
  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...