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...
|
|
|