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