79bb411d
Geoffrey PREUD'HOMME
Possibilité de se...
|
1
2
|
// Constantes
var JETON_TAILLE = 30 // Taille d'un jeton
|
90e646d5
Geoffrey PREUD'HOMME
Remonte le timer ...
|
3
|
var JETON_DUREE = 5*60 // Temps de validité du jeton en secondes
|
79bb411d
Geoffrey PREUD'HOMME
Possibilité de se...
|
4
5
6
7
8
9
10
11
|
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
|
// Champs (à remplacer par des objets)
mdp: '',
idCarte: '',
|
33a27ead
Geoffrey PREUD'HOMME
Reset des champs ...
|
45
46
47
|
solde: '',
credit: '',
prix: '',
|
dc030339
Geoffrey PREUD'HOMME
Modification de s...
|
48
49
|
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: [],
|
2c195774
Geoffrey PREUD'HOMME
Statistiques client
|
54
|
statistiques: {},
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
55
56
57
58
|
},
methods: {
// API
apiBrute: function(chemin, donnees, cb) {
|
d449eb6b
Geoffrey PREUD'HOMME
Fix mise à jour d...
|
59
60
|
$('body').css('opacity', 0.7)
$.post('api/' + chemin, donnees).done(function(data) {
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
61
|
cb(data['status'], data);
|
d449eb6b
Geoffrey PREUD'HOMME
Fix mise à jour d...
|
62
63
64
65
|
}).error(function() {
cb('erreur_communication', {});
}).always(function() {
$('body').css('opacity', 1)
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
66
67
|
})
},
|
344a37ad
Geoffrey PREUD'HOMME
Création de clients
|
68
|
api: function(chemin, donnees, cb) {
|
90e646d5
Geoffrey PREUD'HOMME
Remonte le timer ...
|
69
|
var that = this
|
344a37ad
Geoffrey PREUD'HOMME
Création de clients
|
70
|
donnees['jeton'] = this.jeton
|
90e646d5
Geoffrey PREUD'HOMME
Remonte le timer ...
|
71
72
73
74
|
this.apiBrute(chemin, donnees, function(retour, donnees) {
that.moi.connecte = that.date
cb(retour, donnees)
})
|
344a37ad
Geoffrey PREUD'HOMME
Création de clients
|
75
|
},
|
5f0b1280
Geoffrey PREUD'HOMME
Reset des données
|
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
resetDonnees: function() {
this.login = ''
this.droit = ''
this.jeton = ''
this.connecte = false
this.date = 1
this.mdp = ''
this.idCarte = ''
this.solde = ''
this.credit = ''
this.prix = ''
this.moi = {}
this.u_nouveau = {}
this.clients = []
this.transactions = []
this.utilisateurs = []
this.statistiques = {}
},
|
9868802a
Geoffrey PREUD'HOMME
Liste des clients
|
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
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...
|
108
109
|
actuTransactions: function() {
var that = this
|
5464dee3
Geoffrey PREUD'HOMME
Affichage propres...
|
110
|
if (this.moi.droit >= 3) {
|
f4bbceae
Geoffrey PREUD'HOMME
Fix appel api tra...
|
111
|
appel = "transactions"
|
5464dee3
Geoffrey PREUD'HOMME
Affichage propres...
|
112
113
114
115
116
117
|
donnees = {}
} else {
appel = "utilisateur/fiche"
donnees = {login: this.moi.login}
}
this.api(appel, donnees, function(retour, donnees) {
|
d0fe5751
Geoffrey PREUD'HOMME
Liste des transac...
|
118
119
|
switch(retour) {
case "ok":
|
d0fe5751
Geoffrey PREUD'HOMME
Liste des transac...
|
120
121
122
123
124
125
126
127
|
that.transactions = donnees.transactions
break;
default:
that.erreur(retour, donnees);
break;
}
})
|
d0fe5751
Geoffrey PREUD'HOMME
Liste des transac...
|
128
|
},
|
c85f3520
Geoffrey PREUD'HOMME
Modification des ...
|
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
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;
}
})
},
|
2c195774
Geoffrey PREUD'HOMME
Statistiques client
|
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
actuStatistiques: function() {
var that = this
this.api("statistiques", {}, function(retour, donnees) {
switch(retour) {
case "ok":
that.statistiques = donnees
break;
default:
that.erreur(retour, donnees);
break;
}
})
},
|
9868802a
Geoffrey PREUD'HOMME
Liste des clients
|
157
|
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
158
|
// Affichage
|
1de801b7
Geoffrey PREUD'HOMME
Ajouter utilisateur
|
159
160
161
|
modal: function(nom) {
$('#' + nom).openModal();
},
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
162
163
164
165
166
|
toast: function(texte) {
Materialize.toast(texte, 4000);
},
erreur: function(retour, donnees) {
this.erreurTitre = retour
|
d449eb6b
Geoffrey PREUD'HOMME
Fix mise à jour d...
|
167
|
this.erreurMessage = donnees.message
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
168
169
|
$("#modalErreur").openModal();
},
|
2c195774
Geoffrey PREUD'HOMME
Statistiques client
|
170
171
172
173
174
175
|
changerPage: function(page, onglet) {
this.page = page
if (typeof(onglet) == 'string') {
$('ul.tabs').tabs('select_tab', onglet);
}
},
|
d0fe5751
Geoffrey PREUD'HOMME
Liste des transac...
|
176
|
annuler: function(id) {
|
c450b12e
Geoffrey PREUD'HOMME
Annulation + ombres
|
177
178
179
180
|
var that = this
this.api("annuler", {idTransaction: id}, function(retour, donnees) {
switch(retour) {
case "ok":
|
d449eb6b
Geoffrey PREUD'HOMME
Fix mise à jour d...
|
181
182
183
184
185
|
for (transaction of that.transactions) {
if (transaction.id == id) {
transaction.valide = 0
}
}
|
c450b12e
Geoffrey PREUD'HOMME
Annulation + ombres
|
186
187
188
189
190
191
192
193
194
|
that.toast("Client " + donnees.client + " : " + donnees.soldeAncien + " → " + donnees.soldeNouveau)
break;
default:
that.erreur(retour, donnees);
break;
}
});
},
|
d0fe5751
Geoffrey PREUD'HOMME
Liste des transac...
|
195
|
transaction: function(id, texte) {
|
c450b12e
Geoffrey PREUD'HOMME
Annulation + ombres
|
196
197
198
199
200
201
|
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 ...
|
202
|
c_decouvert: function(client, e) {
|
d449eb6b
Geoffrey PREUD'HOMME
Fix mise à jour d...
|
203
204
205
|
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 ...
|
206
|
client.decouvert = $(e.target).is(':checked')
|
d449eb6b
Geoffrey PREUD'HOMME
Fix mise à jour d...
|
207
|
}
|
c85f3520
Geoffrey PREUD'HOMME
Modification des ...
|
208
209
210
211
212
213
214
215
216
217
218
|
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
|
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
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 ...
|
233
234
235
|
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...
|
236
237
|
switch(retour) {
case "ok":
|
c85f3520
Geoffrey PREUD'HOMME
Modification des ...
|
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
|
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...
|
267
268
269
270
271
272
273
274
275
|
break;
default:
that.erreur(retour, donnees);
break;
}
});
},
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
276
277
|
// Fonctionnement
connecter: function() {
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
278
279
280
281
282
|
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...
|
283
|
// TODO Virer les variables non-objet globales
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
284
285
286
287
|
that.login = donnees.login
that.droit = donnees.droit
that.jeton = donnees.jeton
that.connecte = that.date
|
dc030339
Geoffrey PREUD'HOMME
Modification de s...
|
288
289
|
that.moi = {login: donnees.login, droit: donnees.droit, jeton: donnees.jeton, connecte: that.date}
|
e5e2f19a
Geoffrey PREUD'HOMME
Mutli-pages
|
290
291
|
that.toast("Correctement identifié en tant que " + that.login + " pour " + JETON_DUREE/60+ " minutes")
that.page = 'operations'
|
c450b12e
Geoffrey PREUD'HOMME
Annulation + ombres
|
292
|
break;
|
79bb411d
Geoffrey PREUD'HOMME
Possibilité de se...
|
293
|
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
294
295
296
297
298
|
default:
that.erreur(retour, donnees);
break;
}
})
|
07329faa
Geoffrey PREUD'HOMME
Simplification de...
|
299
|
return false
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
300
|
},
|
e924b695
Geoffrey PREUD'HOMME
Déconnexion
|
301
302
303
304
305
|
deconnecter: function() {
var that = this;
this.api("utilisateur/deconnexion", {} , function(retour, donnees) {
switch(retour) {
case "ok":
|
5f0b1280
Geoffrey PREUD'HOMME
Reset des données
|
306
|
that.resetDonnees()
|
e924b695
Geoffrey PREUD'HOMME
Déconnexion
|
307
308
309
310
311
312
313
314
315
316
|
that.page = 'connexion'
break;
default:
that.erreur(retour, donnees);
break;
}
})
return false
},
|
344a37ad
Geoffrey PREUD'HOMME
Création de clients
|
317
|
creer: function() {
|
344a37ad
Geoffrey PREUD'HOMME
Création de clients
|
318
|
var that = this
|
9868802a
Geoffrey PREUD'HOMME
Liste des clients
|
319
|
this.api("client/ajouter", {idCarte: this.idCarte, solde: this.solde, decouvert: this.decouvert}, function(retour, donnees) {
|
344a37ad
Geoffrey PREUD'HOMME
Création de clients
|
320
321
|
switch(retour) {
case "ok":
|
1b5199e6
Geoffrey PREUD'HOMME
Toast avant de re...
|
322
|
that.transaction(donnees.idTransaction, "Client " + that.idCarte + " crée avec un solde de " + that.solde + " €")
|
33a27ead
Geoffrey PREUD'HOMME
Reset des champs ...
|
323
324
|
that.idCarte = ''
that.solde = ''
|
344a37ad
Geoffrey PREUD'HOMME
Création de clients
|
325
326
|
break;
|
1dc9797d
Geoffrey PREUD'HOMME
Reste des transac...
|
327
328
329
330
331
332
333
334
335
336
337
|
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":
|
1b5199e6
Geoffrey PREUD'HOMME
Toast avant de re...
|
338
|
that.transaction(donnees.idTransaction, "Client " + that.idCarte + " rechargé : " + donnees.soldeAncien + " + " + that.credit + " → " + donnees.soldeNouveau + " €")
|
33a27ead
Geoffrey PREUD'HOMME
Reset des champs ...
|
339
340
|
that.idCarte = ''
that.credit = ''
|
344a37ad
Geoffrey PREUD'HOMME
Création de clients
|
341
342
343
344
345
346
347
|
break;
default:
that.erreur(retour, donnees);
break;
}
});
|
1dc9797d
Geoffrey PREUD'HOMME
Reste des transac...
|
348
349
350
351
352
353
354
355
356
357
358
359
|
},
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":
|
1b5199e6
Geoffrey PREUD'HOMME
Toast avant de re...
|
360
|
that.transaction(donnees.idTransaction, "Client " + that.idCarte + " débité : " + donnees.soldeAncien + " - " + donnees.montant + " → " + donnees.soldeNouveau + " €")
|
33a27ead
Geoffrey PREUD'HOMME
Reset des champs ...
|
361
362
|
that.idCarte = ''
that.prix = ''
|
1dc9797d
Geoffrey PREUD'HOMME
Reste des transac...
|
363
364
365
366
367
368
369
370
371
372
373
374
375
|
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
|
376
|
that.transaction(donnees.idTransaction, "Client " + that.idCarte + " vidé : " + donnees.soldeAncien + " → 0 €")
|
1b5199e6
Geoffrey PREUD'HOMME
Toast avant de re...
|
377
|
that.idCarte = ''
|
1dc9797d
Geoffrey PREUD'HOMME
Reste des transac...
|
378
379
380
381
382
383
384
385
|
break;
default:
that.erreur(retour, donnees);
break;
}
});
},
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
386
387
|
},
computed: {
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
388
|
timer: function() {
|
90e646d5
Geoffrey PREUD'HOMME
Remonte le timer ...
|
389
|
var secondes = this.moi.connecte + JETON_DUREE - this.date
|
e924b695
Geoffrey PREUD'HOMME
Déconnexion
|
390
391
392
|
if (secondes <= 0) {
this.deconnecter()
}
|
e5e2f19a
Geoffrey PREUD'HOMME
Mutli-pages
|
393
394
395
|
var minutes = Math.floor(secondes/60)
var secondes = secondes % 60
return minutes + ':' + (secondes < 10 ? '0' : '') + secondes
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
396
397
|
}
},
|
c85f3520
Geoffrey PREUD'HOMME
Modification des ...
|
398
|
components: {
|
dc030339
Geoffrey PREUD'HOMME
Modification de s...
|
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
|
'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 ...
|
415
416
417
418
419
420
|
},
watch: {
utilisateurs: function() {
desactiverForms()
}
}
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
421
|
})
|
79bb411d
Geoffrey PREUD'HOMME
Possibilité de se...
|
422
|
|
dc030339
Geoffrey PREUD'HOMME
Modification de s...
|
423
|
// Filtres
|
d0fe5751
Geoffrey PREUD'HOMME
Liste des transac...
|
424
425
426
427
|
Vue.filter('date', function(timestamp) {
return Date(timestamp).toLocaleString();
})
|
dc030339
Geoffrey PREUD'HOMME
Modification de s...
|
428
|
// Actualisation du timer
|
2146d35a
Geoffrey PREUD'HOMME
Vue interactive
|
429
430
431
|
setInterval(function actualiserDate() {
app.$data.date = Math.floor(Date.now()/1000)
}, 1000);
|
79bb411d
Geoffrey PREUD'HOMME
Possibilité de se...
|
|
|