Konfi-Castle-Kasino/assets/js/load.js
2019-09-03 22:58:40 +02:00

83 lines
2.7 KiB
JavaScript

if(typeof(EventSource) !== "undefined") {
console.log('SSE supported');
const tableName = '#konfis'
const table = $( tableName )
let source = new EventSource('/events');
source.onmessage = e => {
console.debug('unsupported event!', e)
};
source.addEventListener('init', e => {
console.debug('init', e)
const data = JSON.parse(e.data)
table.html('');
$.each( data, (i, item) => {
if (item.gemeinde !== undefined) {
table.append('<tr data-id="' + item.id + '"> ' +
'<td>' + item.name + '</td> ' +
'<td>' + item.gemeinde + '</td> ' +
'<td>' + item.kcoins + '</td>' +
'</tr>');
} else {
table.append('<tr data-id="' + item.id + '"> ' +
'<td>' + item.name + '</td> ' +
'<td>' + item.kcoins + '</td>' +
'<td>' + (item.coins_quota).toFixed(2) + '</td> ' +
'</tr>');
}
});
})
source.addEventListener('update', e => {
console.debug('update', e)
// TODO: Make sure everything is sorted...
const data = JSON.parse(e.data)
$(tableName + ` tr`).each((i, tr) => {
if(tr.dataset.id == data.id) {
tr.innerHTML = '<td>' + data.name + '</td> ' +
'<td>' + data.kcoins + '</td>' +
'<td>' + (data.coins_quota).toFixed(2) + '</td> '
}
})
})
source.addEventListener('create', e => {
console.debug('create', e)
const data = JSON.parse(e.data)
})
source.addEventListener('delete', e => {
console.debug('delete', e)
const data = JSON.parse(e.data)
})
source.onopen = evt => {
console.debug('SSE opened', evt)
}
source.onerror = evt => {
console.debug('SSE Error', evt)
}
} else {
console.log('SSE not supported!');
}
/*
setInterval(function() {
$.getJSON('/list', function (data) {
$( "#konfis" ).html('');
$.each( data, function( i, item ) {
if (item.gemeinde != undefined) {
$( "#konfis" ).append('<tr> ' +
'<td>' + item.name + '</td> ' +
'<td>' + item.gemeinde + '</td> ' +
'<td>' + item.kcoins + '</td>' +
'</tr>');
} else {
$( "#konfis" ).append('<tr> ' +
'<td>' + item.name + '</td> ' +
'<td>' + item.kcoins + '</td>' +
'<td>' + (item.coins_quota).toFixed(2) + '</td> ' +
'</tr>');
}
});
});
}, 1000);
*/