added graphs for balance, and fixed some issues with resending transactions on refresh

This commit is contained in:
Expand-sys 2021-06-06 12:48:56 +10:00
parent 46414744bf
commit 5c6844e923
2 changed files with 52 additions and 84 deletions

110
index.js
View file

@ -174,6 +174,8 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) {
if (req.session.sucess == true) {
successes.push({ msg: "Transfer successful" });
}
let errors = req.session.errors;
req.session.errors = [];
let admin;
try {
admin = req.session.admin;
@ -205,29 +207,29 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) {
} catch (e) {
console.log(e);
}
try {
logrec = await got.post(
process.env.BANKAPIURL + "BankF/" + req.session.user + "/log",
{
json: {
attempt: req.session.password,
},
responseType: "json",
}
);
} catch (e) {
console.log(e);
}
console.log("query finished " + Date.now());
logsent = logsent.body.value;
logrec = logsent;
let graphlog = logsent.reverse();
console.log(graphlog);
let graphdata = '["transaction", "balance"]';
let currentbal = balance.value;
for (i in graphlog) {
if (graphlog[i].from == req.session.user) {
currentbal = parseInt(currentbal) - parseInt(graphlog[i].amount);
graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]";
} else {
currentbal = parseInt(currentbal) + parseInt(graphlog[i].amount);
graphdata = graphdata + ", [" + parseInt(i) + "," + currentbal + "]";
}
}
console.log(graphdata);
if (logsent == 1 || logsent == -1 || logsent == null) {
logsent = undefined;
} else {
logsent = await logsent.filter(({ from }) => from === req.session.user);
}
logrec = logrec.body.value;
if (logrec === 1 || logrec === -1 || logrec === null) {
logrec = undefined;
} else {
@ -235,14 +237,16 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) {
}
for (i in logrec) {
logrec[i].time = new Date(logrec[i].time);
console.log(logrec[i].time);
}
for (i in logsent) {
logsent[i].time = new Date(logsent[i].time);
console.log(logsent[i].time);
}
let maxgraph = balance + 1000;
maxgraph = maxgraph * 3;
console.log("begin render " + Date.now());
res.render("bankf", {
maxgraph: maxgraph,
graphdata: graphdata,
logrec: logrec,
logsent: logsent,
user: req.session.user,
@ -250,6 +254,7 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) {
user: req.session.user,
admin: req.session.admin,
sucesses: successes,
errors: errors,
marketplace: process.env.MARKETPLACE,
random: papy(),
});
@ -268,7 +273,7 @@ app.post("/sendfunds", async function (req, res) {
let { amount, name, senderpass } = req.body;
let a_name = req.session.user;
let successes = [];
let errors = [];
req.session.errors = [];
let result = {};
result = await got.post(process.env.BANKAPIURL + "BankF/sendfunds", {
json: {
@ -279,77 +284,16 @@ app.post("/sendfunds", async function (req, res) {
},
responseType: "json",
});
if (result.body.value == true || result.body.value) {
req.session.success = true;
//post details
res.redirect("/BankF");
} else {
errors.push({ msg: "Transfer Unsuccessful" });
let logsent;
let logrec;
try {
logsent = await got.post(
process.env.BANKAPIURL + "BankF/" + req.session.user + "/log",
{
json: {
attempt: req.session.password,
},
responseType: "json",
}
);
} catch (e) {
console.log(e);
}
try {
logrec = await got.post(
process.env.BANKAPIURL + "BankF/" + req.session.user + "/log",
{
json: {
attempt: req.session.password,
},
responseType: "json",
}
);
} catch (e) {
console.log(e);
}
logsent = logsent.body.value;
console.log(logsent);
if (logsent == 1 || logsent == -1 || logsent == null) {
logsent = undefined;
} else {
logsent = await logsent.filter(({ from }) => from === req.session.user);
}
logrec = logrec.body.value;
if (logrec == 1 || logrec == -1 || logrec == null) {
logrec = undefined;
} else {
logrec = await logrec.filter(({ to }) => to === req.session.user);
}
for (i in logrec) {
let d = new Date(logrec[i].time);
logrec[i].time = d;
}
for (i in logsent) {
let d = new Date(logsent[i].time);
logsent[i].time = d;
}
res.render("bankf", {
logsent: logsent,
logrec: logrec,
errors: errors,
successes: successes,
balance: balance.value,
user: req.session.user,
admin: req.session.admin,
marketplace: process.env.MARKETPLACE,
random: papy(),
});
req.session.errors.push({ msg: "Transfer Unsuccessful" });
}
res.redirect("/bankf");
});
app.post("/register", async function (req, res) {

View file

@ -38,6 +38,8 @@ block content
a.nav-link.active.text-black(href='#sent', role='tab', aria-controls='sent', aria-selected='true') Sent
li.nav-item
a.nav-link.text-black(href='#received', role='tab', aria-controls='recieved', aria-selected='false') Recieved
li.nav-item
a.nav-link.text-black(href='#balhistory', role='tab', aria-controls='balhistory', aria-selected='false') Balance History
.tab-content.mt-3
#sent.tab-pane.active(role='tabpanel')
.logs
@ -55,6 +57,28 @@ block content
p Date: #{log.time}
p #{log.from} sent you $#{log.amount}
hr
#balhistory.tab-pane(role='tabpanel', aria-labelledby='contact-tab')
#chart_div
script(type='text/javascript' src='https://www.gstatic.com/charts/loader.js')
script(type='text/javascript').
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([!{graphdata}]);
var options = {
title: 'Balance',
hAxis: {title: 'Transaction', minValue: 0, maxValue: 15, direction: -1, textPosition: 'none'},
vAxis: {title: 'Balance', minValue: 0, maxValue: 500},
legend: 'none'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
br