187 lines
4.7 KiB
JavaScript
187 lines
4.7 KiB
JavaScript
module.exports = (app, router, upload) => {
|
|
const fileWorker = require('../controllers/file.controller.js')
|
|
|
|
var path = __basedir + '/views/'
|
|
|
|
const tsp_list = ["ulysses16", "att48", "st70", "a280", "pcb442", "dsj1000"]
|
|
|
|
router.use((req,res,next) => {
|
|
console.log("/" + req.method)
|
|
next()
|
|
});
|
|
|
|
app.get('/', (req,res) => {
|
|
res.sendFile(path + "index.html")
|
|
});
|
|
|
|
app.get('/leaderboard', (req, res) => {
|
|
leaderboard = global.leaderboard
|
|
if(req.query.type === 'txt') {
|
|
res.set({"Content-Disposition":"attachment; filename=\"" + tsp_list[req.query.tsp] + ".txt\""})
|
|
result = "Not Found"
|
|
switch (parseInt(req.query.tsp)) {
|
|
case 0:
|
|
leaderboard.ulysses16.forEach(e => {
|
|
console.log('leader', e.id)
|
|
if(e.id == req.query.id) {
|
|
sentFlag = true
|
|
result = `${e.fitness}\n${e.solution}`
|
|
}
|
|
})
|
|
res.end(result)
|
|
break;
|
|
case 1:
|
|
leaderboard.att48.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
result = `${e.fitness}\n${e.solution}`
|
|
}
|
|
})
|
|
res.end(result)
|
|
break;
|
|
case 2:
|
|
leaderboard.st70.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
result = `${e.fitness}\n${e.solution}`
|
|
}
|
|
})
|
|
res.end(result)
|
|
break;
|
|
case 3:
|
|
leaderboard.a280.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
result = `${e.fitness}\n${e.solution}`
|
|
}
|
|
})
|
|
res.end(result)
|
|
break;
|
|
case 4:
|
|
leaderboard.pcb442.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
result = `${e.fitness}\n${e.solution}`
|
|
}
|
|
})
|
|
res.end(result)
|
|
break;
|
|
case 5:
|
|
leaderboard.dsj1000.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
result = `${e.fitness}\n${e.solution}`
|
|
}
|
|
})
|
|
res.end(result)
|
|
default:
|
|
res.sendStatus(404);
|
|
break;
|
|
}
|
|
}
|
|
else if (req.query.type === 'json') {
|
|
res.set({"Content-Disposition":"attachment; filename=\"" + tsp_list[req.query.tsp] + ".json\""})
|
|
// res.header("Content-Type",'application/json');
|
|
data = {}
|
|
switch (parseInt(req.query.tsp)) {
|
|
case 0:
|
|
data = require('../../data/ulysses16.json')
|
|
data['edges'] = []
|
|
leaderboard.ulysses16.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
for (let i = 0; i < e.solution.length; i++) {
|
|
data['edges'].push({
|
|
'source': e.solution[i % e.solution.length],
|
|
'target': e.solution[(i+1) % e.solution.length]
|
|
})
|
|
}
|
|
}
|
|
})
|
|
break;
|
|
case 1:
|
|
data = require('../../data/att48.json')
|
|
data['edges'] = []
|
|
leaderboard.att48.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
for (let i = 0; i < e.solution.length; i++) {
|
|
data['edges'].push({
|
|
'source': e.solution[i % e.solution.length],
|
|
'target': e.solution[(i+1) % e.solution.length]
|
|
})
|
|
}
|
|
}
|
|
})
|
|
break;
|
|
case 2:
|
|
data = require('../../data/st70.json')
|
|
data['edges'] = []
|
|
leaderboard.st70.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
for (let i = 0; i < e.solution.length; i++) {
|
|
data['edges'].push({
|
|
'source': e.solution[i % e.solution.length],
|
|
'target': e.solution[(i+1) % e.solution.length]
|
|
})
|
|
}
|
|
}
|
|
})
|
|
break;
|
|
case 3:
|
|
data = require('../../data/a280.json')
|
|
data['edges'] = []
|
|
leaderboard.a280.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
for (let i = 0; i < e.solution.length; i++) {
|
|
data['edges'].push({
|
|
'source': e.solution[i % e.solution.length],
|
|
'target': e.solution[(i+1) % e.solution.length]
|
|
})
|
|
}
|
|
}
|
|
})
|
|
break;
|
|
case 4:
|
|
data = require('../../data/pcb442.json')
|
|
data['edges'] = []
|
|
leaderboard.pcb442.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
for (let i = 0; i < e.solution.length; i++) {
|
|
data['edges'].push({
|
|
'source': e.solution[i % e.solution.length],
|
|
'target': e.solution[(i+1) % e.solution.length]
|
|
})
|
|
}
|
|
}
|
|
})
|
|
break;
|
|
case 5:
|
|
data = require('../../data/dsj1000.json')
|
|
data['edges'] = []
|
|
leaderboard.dsj1000.forEach(e => {
|
|
if(e.id == req.query.id) {
|
|
for (let i = 0; i < e.solution.length; i++) {
|
|
data['edges'].push({
|
|
'source': e.solution[i % e.solution.length],
|
|
'target': e.solution[(i+1) % e.solution.length]
|
|
})
|
|
}
|
|
}
|
|
})
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
res.end(JSON.stringify(data));
|
|
}
|
|
else {
|
|
res.sendStatus(404);
|
|
}
|
|
});
|
|
|
|
app.post('/api/files/upload', upload.single("uploadfile"), fileWorker.uploadFile)
|
|
|
|
app.get('/api/files/getall', fileWorker.listAllFiles)
|
|
|
|
app.get('/api/files/result', fileWorker.downloadFile)
|
|
|
|
app.use('/',router)
|
|
|
|
app.use('*', (req,res) => {
|
|
res.sendFile(path + "404.html")
|
|
})
|
|
} |