-
Notifications
You must be signed in to change notification settings - Fork 0
/
dashboard.js
199 lines (186 loc) · 5.63 KB
/
dashboard.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
if (document.cookie.indexOf("CrewCentreSession=Valid") == -1) {
location.href = "/dashboard";
}
var data = JSON.parse( sessionStorage.getItem("data") );
if(data.admin == true){
console.log("user is admin")
location.href = "/dashboard";
}
var url = sessionStorage.getItem("url")
var idleTime = 0;
function timerIncrement() {
idleTime = idleTime + 1;
if(idleTime == 5){
$.notify("Inactivity detected. Logging out in 1 minute.", {autoHide: false});
}
else if (idleTime > 5) { // 20 minutes
sessionStorage.clear();
location.href = "/dashboard";
}
}
userData = async (username) => {
console.log(username)
let request = url + "/frontend/user_data/" + username // change this to ayeshas
let deposit_resp = await fetch(request);
let response = await deposit_resp.json()
let request2 = url + "/users/balance"
let deposit_resp2 = await fetch(request2, {
method: "POST",
mode: "cors",
body: JSON.stringify({
"username": username
}), // string or object
headers: {
'Content-Type': "application/json"
}});
let response2 = await deposit_resp2.json()
console.log("got user data", response, response2)
return {clam_balance: response2.user_balance, ref_code: response.ref_code}
}
refreshData = async(username) =>{
let user_data = await userData(username)
document.getElementById("amount").innerHTML = user_data.clam_balance
document.getElementById("ref_code").innerHTML = user_data.ref_code
}
jQuery(document).ready(async function($){
let data = JSON.parse( sessionStorage.getItem("data") );
//Increment the idle time counter every minute.
var idleInterval = setInterval(timerIncrement, 60000); // 1 minute
//Zero the idle timer on mouse movement.
$(this).mousemove(function (e) {
console.log("mouse move")
idleTime = 0;
});
$(this).keypress(function (e) {
console.log("key press")
idleTime = 0;
});
console.log('data',data)
document.getElementById("logout").onclick = async () =>{
sessionStorage.clear();
let data = JSON.parse( sessionStorage.getItem("data") );
console.log("logout", data)
return window.location.href = 'index.html'
}
document.getElementById("dashboard").onclick = async () =>{
if(data.admin){
return window.location.href = 'dashboardAdmin.html'
}
else{
return window.location.href = 'dashboard.html';
}
}
var username = data.username
refreshData(username)
let request = url + "/users/transaction_history"
let user_resp = await fetch(request, {
method: "POST",
mode: "cors",
body: JSON.stringify({
"username":username,
}), // string or object
headers: {
'Content-Type': "application/json"
}
});
let history = await user_resp.json()
let dates = []
for(let i=0; i<history.transaction_history.length; i++){
let user_data = history.transaction_history[i]
dates.push(user_data)
console.log("user data", user_data)
}
dates = dates.sort((a,b) => {
a = a.time
b = b.time
// console.log(a, b)
return a>b ? 1 : a<b ? -1 : 0;
})
console.log("dates", dates)
if(dates.length > 10){
sliced_dates =[]
let diff = Math.floor(dates.length/10)
for(let i = 0; i< dates.length; i+= diff){
sliced_dates.push(dates[i])
}
dates = sliced_dates
}
console.log("sliced dates", dates)
let labels = []
let values= []
for(let j = 0; j<dates.length; j++){
labels.push(dates[j].time.toString().slice(0,10))
values.push(dates[j].user_balance)
}
var ctx = document.getElementById("clam-chart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: labels,
datasets: [{
label: 'Clam Balance',
data: values,
backgroundColor: [
'rgba(50,205,50, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(173,255,47, 0.2)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
document.getElementById("transferButton").onclick = async () =>{
let amount = document.getElementById("transfer").value
console.log("amount", amount)
let username2 = document.getElementById("transferTo").value
console.log("from", username, "to", username2)
if(amount != null && amount != undefined && amount != "" && !isNaN(amount)){
let request = url + "/transactions/transfer"
let response = await fetch(request, {
method: "POST",
mode: "cors",
body: JSON.stringify({
"amount": parseFloat(amount),
"username": username,
"sender": username,
"recipient":username2
}), // string or object
headers: {
'Content-Type': "application/json"
}
});
let resp_json = await response.json()
if(resp_json.code == "transfer amount successful"){
$.notify("Successfully transfered " + amount + " to " + username2, "success")
setTimeout(async ()=>{
refreshData(username)
}, 1000)
}else{
alert(resp_json.msg)
}
}else{
alert("Input is not a number!")
console.log("not number!")
}
}
});