68 lines
2.2 KiB
JavaScript
68 lines
2.2 KiB
JavaScript
(function () {
|
|
var count = document.getElementById('online-count');
|
|
var status = document.getElementById('refresh-status');
|
|
var graphs = document.querySelectorAll('.js-live-graph');
|
|
var lightbox = document.getElementById('graph-lightbox');
|
|
var lightboxImage = document.getElementById('lightbox-image');
|
|
var openers = document.querySelectorAll('.js-graph-open');
|
|
var closeButtons = document.querySelectorAll('[data-lightbox-close]');
|
|
|
|
function refresh() {
|
|
if (status) status.textContent = 'Odświeżanie…';
|
|
|
|
if (count) {
|
|
fetch('/stats/live', {cache: 'no-store'})
|
|
.then(function (response) {
|
|
if (!response.ok) throw new Error('stats');
|
|
return response.json();
|
|
})
|
|
.then(function (data) {
|
|
if (typeof data.current === 'number') count.textContent = String(data.current);
|
|
if (status) status.textContent = 'Dane aktualne';
|
|
})
|
|
.catch(function () {
|
|
if (status) status.textContent = 'Nie udało się odświeżyć';
|
|
});
|
|
}
|
|
|
|
var stamp = Date.now();
|
|
graphs.forEach(function (img) {
|
|
var src = img.dataset.src;
|
|
if (src) img.src = src + '?v=' + stamp;
|
|
});
|
|
}
|
|
|
|
function openLightbox(src) {
|
|
if (!lightbox || !lightboxImage) return;
|
|
lightboxImage.src = src + (src.indexOf('?') === -1 ? '?' : '&') + 'v=' + Date.now();
|
|
lightbox.hidden = false;
|
|
lightbox.setAttribute('aria-hidden', 'false');
|
|
document.body.classList.add('lightbox-open');
|
|
}
|
|
|
|
function closeLightbox() {
|
|
if (!lightbox || !lightboxImage) return;
|
|
lightbox.hidden = true;
|
|
lightbox.setAttribute('aria-hidden', 'true');
|
|
lightboxImage.src = '';
|
|
document.body.classList.remove('lightbox-open');
|
|
}
|
|
|
|
openers.forEach(function (button) {
|
|
button.addEventListener('click', function () {
|
|
var src = button.getAttribute('data-full');
|
|
if (src) openLightbox(src);
|
|
});
|
|
});
|
|
|
|
closeButtons.forEach(function (button) {
|
|
button.addEventListener('click', closeLightbox);
|
|
});
|
|
|
|
document.addEventListener('keydown', function (event) {
|
|
if (event.key === 'Escape' && lightbox && !lightbox.hidden) closeLightbox();
|
|
});
|
|
|
|
window.setInterval(refresh, 60000);
|
|
})();
|