100 lines
3 KiB
HTML
100 lines
3 KiB
HTML
<script async>
|
|
// GNU-GPL-3.0-or-later
|
|
|
|
var its = (function() {
|
|
if(!$ || !$.ajax || !WebSocket) {
|
|
console.log('')
|
|
return;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
const logos_small = {
|
|
'open': '/uploads/default/original/1X/035708e99564401c8f17f64a5aec0c6f2c06ad92.svg',
|
|
'closed': '/uploads/default/original/1X/5bc51c625bdeb2084bea72d736e2b0eba692b6f1.svg',
|
|
'error': '/uploads/default/original/1X/f7046c4a5df3526e425ca00b94dbfe322c77f071.svg'
|
|
}
|
|
|
|
const logos_big = {
|
|
|
|
'open': '/uploads/default/original/1X/d2799509606cae0281ae53cbb41cb152bc6233b4.svg',
|
|
'closed': '/uploads/default/original/1X/a60c59ce7ffd444497c031714d90cc0dc01119cc.svg',
|
|
'error': '/uploads/default/original/1X/05b84ee89166c68cba461871c5ca09b3e73bf601.svg'
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
var url = new URL(new URL(location.href).origin);
|
|
url.protocol = url.protocol == 'https:' ? 'wss' : 'ws';
|
|
url += 'its-open-ws/';
|
|
|
|
|
|
var reconnect_delay = 1000;
|
|
var reconnect_giveup = 1000000;
|
|
|
|
function connect() {
|
|
if(reconnect_delay > reconnect_giveup)
|
|
return;
|
|
|
|
setTimeout(function() {
|
|
console.log('isitopen: reconnecting');
|
|
var ws = new WebSocket(url);
|
|
register(ws);
|
|
|
|
}, reconnect_delay);
|
|
|
|
reconnect_delay *= 2;
|
|
}
|
|
|
|
function refresh() {
|
|
$.get('https://it-syndikat.org/api/status.txt')
|
|
.then(function(data) {
|
|
var a = data.split(',');
|
|
var isitopen = a[0];
|
|
var up_date = new Date(parseInt(a[1]) * 1000);
|
|
|
|
var state;
|
|
|
|
if(isitopen === 'true')
|
|
state = 'open';
|
|
else if(isitopen === 'false')
|
|
state = 'closed';
|
|
else
|
|
state = 'error';
|
|
|
|
console.log('isitopen: it is', state);
|
|
update_dom(state);
|
|
}, function() {
|
|
console.log('isitopen: it is', 'error');
|
|
update_dom('error');
|
|
});
|
|
}
|
|
|
|
function update_dom(state) {
|
|
setTimeout(function() {
|
|
console.log('update_dom', state);
|
|
|
|
if($('.logo-big').length > 0) {
|
|
$('.logo-big').bind('DOMNodeRemoved', function(){ update_dom(state) });
|
|
$('.logo-big').attr('src', logos_big[state]).css('display', 'block');
|
|
} else if($('.logo-small').length > 0) {
|
|
$('.logo-small').bind('DOMNodeRemoved', function(){ update_dom(state) });
|
|
$('.logo-small').attr('src', logos_small[state]).css('display', 'block');
|
|
}
|
|
})
|
|
}
|
|
|
|
function register(ws) {
|
|
ws.onclose = function() { connect(); };
|
|
ws.onmessage = function(event) { refresh(); };
|
|
}
|
|
|
|
refresh();
|
|
connect();
|
|
|
|
return {
|
|
'update_dom': update_dom,
|
|
'refresh': refresh
|
|
};
|
|
})();
|
|
</script>
|