com2014-server/resources/js/socket_script.js

168 lines
5.0 KiB
JavaScript

var my_res = {};
my_res.ulysses16 = {}
my_res.att48 = {}
my_res.st70 = {}
my_res.a280 = {}
my_res.pcb442 = {}
my_res.dsj1000 = {}
my_res.ulysses16.fitness = -1;
my_res.att48.fitness = -1;
my_res.st70.fitness = -1;
my_res.a280.fitness = -1;
my_res.pcb442.fitness = -1;
my_res.dsj1000.fitness = -1;
var socket = io();
// User connected
socket.on('connect', () => {
$("#status").removeClass('badge-secondary');
$("#status").addClass('badge-primary');
window.id = socket.id
console.log('Session Id: ', socket.id);
});
// User disconnected
socket.on('disconnect', () => {
$("#status").removeClass('badge-primary');
$("#status").addClass('badge-secondary');
$("#status").text('offline');
});
// Update online users
socket.on('users_count', (clients) => {
$("#status").text(clients + ' online');
});
// Server running algorithms
socket.on('start', () => {
console.log('Running');
Snackbar.show({
text: 'Running, please wait for your result.',
pos: 'bottom-right',
duration: 60000
});
});
// Update Leaderboard Table
socket.on('leaderboard', (obj) => {
// console.log(obj);
$(".leaderboard-table").find("tr:not(:first):not(:last)").remove();
if(obj.ulysses16.length != 0) {
obj.ulysses16.forEach(element => {
$('#ulysses16-last').before('<tr id=""><td>' + element.name + '</td><td>' + element.fitness.toFixed(2) + '</td><td>' + element.desc + '</td></tr>')
});
$('#ulysses16_best').text(obj.ulysses16[0].fitness.toFixed(2));
}
if(obj.att48.length != 0 ) {
obj.att48.forEach(element => {
$('#att48-last').before('<tr id=""><td>' + element.name + '</td><td>' + element.fitness.toFixed(2) + '</td><td>' + element.desc + '</td></tr>')
});
$('#att48_best').text(obj.att48[0].fitness.toFixed(2));
}
if (obj.st70.length != 0) {
obj.st70.forEach(element => {
$('#st70-last').before('<tr id=""><td>' + element.name + '</td><td>' + element.fitness.toFixed(2) + '</td><td>' + element.desc + '</td></tr>')
});
$('#st70_best').text(obj.st70[0].fitness.toFixed(2));
}
if (obj.a280.length != 0) {
obj.a280.forEach(element => {
$('#a280-last').before('<tr id=""><td>' + element.name + '</td><td>' + element.fitness.toFixed(2) + '</td><td>' + element.desc + '</td></tr>')
});
$('#a280_best').text(obj.a280[0].fitness.toFixed(2));
}
if(obj.pcb442.length != 0) {
obj.pcb442.forEach(element => {
$('#pcb442-last').before('<tr id=""><td>' + element.name + '</td><td>' + element.fitness.toFixed(2) + '</td><td>' + element.desc + '</td></tr>')
});
$('#pcb442_best').text(obj.pcb442[0].fitness.toFixed(2));
}
if(obj.dsj1000.length != 0) {
obj.dsj1000.forEach(element => {
$('#dsj1000-last').before('<tr id=""><td>' + element.name + '</td><td>' + element.fitness.toFixed(2) + '</td><td>' + element.desc + '</td></tr>')
});
$('#dsj1000_best').text(obj.dsj1000[0].fitness.toFixed(2));
}
});
// Log info in console
socket.on('info', (msg) => {
// var msg = msg.replace(/\x1b[[0-9;]*[a-zA-Z]/g, '');
msg = msg.replace(/[^\x20-\x7E]/g, '')
if(msg[1] == '[') {
msg = msg.substring(1);
}
console.log(msg);
});
function update_your_res(tsp_file, fitness) {
// Stop blinking
$("#" + tsp_file + "_your").removeClass('blink_me');
if(fitness > 0) {
$("#" + tsp_file + "_your").text(fitness.toFixed(2));
enable_btn($("#" + tsp_file + "_submit"))
}
else if (fitness == -1)
{
$("#" + tsp_file + "_your").text("No Answer");
}
else if (fitness == -2)
{
$("#" + tsp_file + "_your").text("Wrong Answer");
}
else if (fitness == -3)
{
$("#" + tsp_file + "_your").text("Timeout");
}
else {
console.log(tsp_file + ": " + fitness)
$("#" + tsp_file + "_your").text("Unknown");
}
}
// Update personal result
socket.on('result', (res) => {
$("#resultModal").modal('show');
res = JSON.parse(res);
$('#submission_info').show();
res.forEach(e => {
if(e.name === "ulysses16.txt") {
my_res.ulysses16.fitness = e.fitness
update_your_res("ulysses16", e.fitness)
}
if(e.name === "att48.txt") {
my_res.att48.fitness = e.fitness
update_your_res("att48", e.fitness)
}
if(e.name === "st70.txt") {
my_res.st70.fitness = e.fitness
update_your_res("st70", e.fitness)
}
if(e.name === "a280.txt") {
my_res.a280.fitness = e.fitness
update_your_res("a280", e.fitness)
}
if(e.name === "pcb442.txt") {
my_res.pcb442.fitness = e.fitness
update_your_res("pcb442", e.fitness)
}
if(e.name === "dsj1000.txt") {
my_res.dsj1000.fitness = e.fitness
update_your_res("dsj1000", e.fitness)
}
});
});