63 lines
1.6 KiB
JavaScript
63 lines
1.6 KiB
JavaScript
const fs = require('fs');
|
|
const express = require('express');
|
|
const pug = require('pug');
|
|
const app = express();
|
|
const port = 8000;
|
|
|
|
function parse(data) {
|
|
let content = JSON.parse(data);
|
|
let parsed = {ais: [], battles: {}};
|
|
for (let ai of content.ais) {
|
|
parsed.ais.push({
|
|
name: ai,
|
|
victories: 0,
|
|
defeats: 0,
|
|
});
|
|
}
|
|
|
|
for (let key in content.battles) {
|
|
let battlers = key.split('/');
|
|
let ai1 = battlers[0];
|
|
let ai2 = battlers[1];
|
|
parsed.battles[ai1 + '/' + ai2] = Math.floor(100 * content.battles[key]);
|
|
parsed.battles[ai2 + '/' + ai1] = 100 - parsed.battles[ai1 + '/' + ai2];
|
|
}
|
|
parsed.sortedAis = parsed.ais.slice(0);
|
|
|
|
parsed.sortedAis.sort((a, b) => {
|
|
if (a.victories < b.victories) {
|
|
return -1;
|
|
} else if (a.victories > b.victories) {
|
|
return 1;
|
|
} else {
|
|
if (a.defeats > b.defeats) {
|
|
return -1;
|
|
} else if (a.defeats < b.defeats) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
});
|
|
|
|
return parsed;
|
|
}
|
|
|
|
app.set('view engine', 'pug');
|
|
|
|
app.get('/', (req, res) => {
|
|
fs.readFile('assets/data.json', 'utf-8', (err, data) => {
|
|
if (err != null) {
|
|
console.log("Error: " + e);
|
|
}
|
|
let parsed = parse(data);
|
|
res.render('index', parsed);
|
|
});
|
|
});
|
|
|
|
app.use('/static', express.static('static'));
|
|
|
|
app.listen(port, () => {
|
|
console.log(`Example app listening on port ${port}!`)
|
|
})
|