MediaWiki:Common.js
Страница интерфейса MediaWiki
Дополнительные действия
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
(function () {
function formatRoundTime(rawTime) {
if (!rawTime) {
return '?';
}
try {
var normalized = rawTime.replace('Z', '+00:00');
var start = new Date(normalized);
var now = new Date();
if (Number.isNaN(start.getTime())) {
return '?';
}
var totalMinutes = Math.max(0, Math.floor((now - start) / 60000));
var hours = Math.floor(totalMinutes / 60);
var minutes = totalMinutes % 60;
if (hours > 0) {
return hours + 'ч ' + minutes + 'м';
}
return minutes + 'м';
} catch (e) {
return '?';
}
}
function setStatusOffline() {
var main = document.getElementById('redstar-status-main');
var details = document.getElementById('redstar-status-details');
if (main) {
main.textContent = '● Оффлайн';
main.style.color = '#ff4545';
}
if (details) {
details.textContent = 'Сервер недоступен';
}
}
function setStatus(data) {
var main = document.getElementById('redstar-status-main');
var details = document.getElementById('redstar-status-details');
if (!main || !details) {
return;
}
var players = data.players ?? '?';
var maxPlayers = data.soft_max_players ?? '?';
var mapName = data.map;
var runLevel = data.run_level;
var roundStartTime = data.round_start_time;
main.textContent = '● Онлайн';
main.style.color = '#4ee26b';
if (runLevel === 0 || !mapName || !roundStartTime) {
details.textContent = players + '/' + maxPlayers + ' игроков · Лобби';
return;
}
details.textContent = players + '/' + maxPlayers + ' игроков · ' + mapName + ' · ' + formatRoundTime(roundStartTime);
}
function updateStatus() {
fetch('/ss14-status', { cache: 'no-store' })
.then(function (response) {
if (!response.ok) {
throw new Error('Bad response');
}
return response.json();
})
.then(setStatus)
.catch(setStatusOffline);
}
mw.hook('wikipage.content').add(function () {
updateStatus();
setInterval(updateStatus, 30000);
});
})();