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") }) }