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