Blame view

js/init.js 8.2 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é
bf26706c   Geoffrey PREUD'HOMME   Écran principal
15
16
17
  $(function(){
      $('.button-collapse').sideNav();
      $('.modal-trigger').leanModal()
07329faa   Geoffrey PREUD'HOMME   Simplification de...
18
      $('form').submit(function() { return false });
4525b510   Geoffrey PREUD'HOMME   Des trucs useless
19
      $('[name=idCarte]').characterCounter();
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
20
  });
bf26706c   Geoffrey PREUD'HOMME   Écran principal
21
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
22
  // Application
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
23
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
24
25
26
  var app = new Vue({
      el: 'body',
      data: {
344a37ad   Geoffrey PREUD'HOMME   Création de clients
27
28
29
          // Constantes
          PEUT_NFC: PEUT_NFC,
          // Affichage
e5e2f19a   Geoffrey PREUD'HOMME   Mutli-pages
30
          page: 'connexion',
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
31
32
          erreurTitre: '',
          erreurMessage: '',
344a37ad   Geoffrey PREUD'HOMME   Création de clients
33
          // Session
9868802a   Geoffrey PREUD'HOMME   Liste des clients
34
35
36
          login: '',
          droit: '',
          jeton: '',
344a37ad   Geoffrey PREUD'HOMME   Création de clients
37
          connecte: false,
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
38
          date: 1,
9868802a   Geoffrey PREUD'HOMME   Liste des clients
39
40
          // Données
          clients: [],
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
41
          transactions: [],
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
42
43
44
45
      },
      methods: {
          // API
          apiBrute: function(chemin, donnees, cb) {
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
46
47
              $('body').css('opacity', 0.7)
              $.post('api/' + chemin, donnees).done(function(data) {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
48
                  cb(data['status'], data);
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
49
50
51
52
              }).error(function() {
                  cb('erreur_communication', {});
              }).always(function() {
                  $('body').css('opacity', 1)
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
53
54
              })
          },
344a37ad   Geoffrey PREUD'HOMME   Création de clients
55
56
57
58
          api: function(chemin, donnees, cb) {
              donnees['jeton'] = this.jeton
              this.apiBrute(chemin, donnees, cb)
          },
9868802a   Geoffrey PREUD'HOMME   Liste des clients
59
60
61
62
63
64
65
66
67
68
69
70
71
72
          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...
73
74
75
76
77
          actuTransactions: function() {
              var that = this
              this.api("transactions", {}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
78
79
80
81
82
83
84
85
                          that.transactions = donnees.transactions
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              })
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
86
          },
9868802a   Geoffrey PREUD'HOMME   Liste des clients
87
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
88
89
90
91
92
93
          // Affichage
          toast: function(texte) {
              Materialize.toast(texte, 4000);
          },
          erreur: function(retour, donnees) {
              this.erreurTitre = retour
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
94
              this.erreurMessage = donnees.message
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
95
96
              $("#modalErreur").openModal();
          },
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
97
          annuler: function(id) {
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
98
99
100
101
              var that = this
              this.api("annuler", {idTransaction: id}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
102
103
104
105
106
                          for (transaction of that.transactions) {
                              if (transaction.id == id) {
                                  transaction.valide = 0
                              }
                          }
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
107
108
109
110
111
112
113
114
115
                          that.toast("Client " + donnees.client + " : " + donnees.soldeAncien + " → " + donnees.soldeNouveau)
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
116
          transaction: function(id, texte) {
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
117
118
119
120
121
122
              var that = this
              var interieur = $('<span>').text(texte + ' ').append($('<a>').text('Annuler').one('click', function() {
                  that.annuler(id)
              }))
              that.toast(interieur);
          },
d449eb6b   Geoffrey PREUD'HOMME   Fix mise à jour d...
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
          decouvert: function(idCarte, decouvert, e) {
              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') {
                  decouvert = $(e.target).is(':checked')
              }
              this.api("client/decouvert", {idCarte: idCarte, decouvert: decouvert}, function(retour, donnees) {
                  switch(retour) {
                      case "ok":
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
141
142
          // Fonctionnement
          connecter: function() {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
143
144
145
146
147
148
149
150
151
              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
152
153
                          that.toast("Correctement identifié en tant que " + that.login + " pour " + JETON_DUREE/60+ " minutes")
                          that.page = 'operations'
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
154
                          break;
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
155
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
156
157
158
159
160
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              })
07329faa   Geoffrey PREUD'HOMME   Simplification de...
161
              return false
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
162
          },
344a37ad   Geoffrey PREUD'HOMME   Création de clients
163
          creer: function() {
344a37ad   Geoffrey PREUD'HOMME   Création de clients
164
              var that = this
9868802a   Geoffrey PREUD'HOMME   Liste des clients
165
              this.api("client/ajouter", {idCarte: this.idCarte, solde: this.solde, decouvert: this.decouvert}, function(retour, donnees) {
344a37ad   Geoffrey PREUD'HOMME   Création de clients
166
167
                  switch(retour) {
                      case "ok":
c450b12e   Geoffrey PREUD'HOMME   Annulation + ombres
168
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " crée avec un solde de " + that.solde + " €")
344a37ad   Geoffrey PREUD'HOMME   Création de clients
169
170
                          break;
  
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
171
172
173
174
175
176
177
178
179
180
181
                      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
182
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " rechargé : " + donnees.soldeAncien + " + " + that.credit + " → " + donnees.soldeNouveau + " €")
344a37ad   Geoffrey PREUD'HOMME   Création de clients
183
184
185
186
187
188
189
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
190
191
192
193
194
195
196
197
198
199
200
201
          },
          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
202
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " débité : " + donnees.soldeAncien + " - " + donnees.montant + " → " + donnees.soldeNouveau + " €")
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
203
204
205
206
207
208
209
210
211
212
213
214
215
                          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
216
                          that.transaction(donnees.idTransaction, "Client " + that.idCarte + " vidé : " + donnees.soldeAncien + " → 0 €")
1dc9797d   Geoffrey PREUD'HOMME   Reste des transac...
217
218
219
220
221
222
223
224
                          break;
  
                      default:
                          that.erreur(retour, donnees);
                          break;
                  }
              });
          },
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
225
226
      },
      computed: {
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
227
228
          timer: function() {
              var secondes = this.connecte + JETON_DUREE - this.date
e5e2f19a   Geoffrey PREUD'HOMME   Mutli-pages
229
230
231
              var minutes = Math.floor(secondes/60)
              var secondes = secondes % 60
              return  minutes + ':' + (secondes < 10 ? '0' : '') + secondes
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
232
233
234
          }
      },
  })
79bb411d   Geoffrey PREUD'HOMME   Possibilité de se...
235
  
d0fe5751   Geoffrey PREUD'HOMME   Liste des transac...
236
237
238
239
  Vue.filter('date', function(timestamp) {
      return Date(timestamp).toLocaleString();
  })
  
2146d35a   Geoffrey PREUD'HOMME   Vue interactive
240
241
242
  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...