MediaWiki:Common.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
(() => {
const root = document.getElementById('rs-server-status');
if (!root) {
return;
}
const online = document.getElementById('rs-status-online');
const state = document.getElementById('rs-status-state');
const map = document.getElementById('rs-status-map');
const time = document.getElementById('rs-status-time');
const preset = document.getElementById('rs-status-preset');
const players = document.getElementById('rs-status-players');
const maxPlayers = document.getElementById('rs-status-max');
const fill = document.getElementById('rs-status-fill');
function offline() {
root.classList.add('rs-home-status--offline');
online.textContent = 'Оффлайн';
state.textContent = 'Сервер недоступен';
map.textContent = '—';
time.textContent = '—';
preset.textContent = '—';
players.textContent = '0';
maxPlayers.textContent = '0';
fill.style.width = '0%';
}
function onlineState(data) {
root.classList.remove('rs-home-status--offline');
const currentPlayers =
Number.isInteger(data.players) ? data.players : 0;
const maximum =
Number.isInteger(data.soft_max_players)
? data.soft_max_players
: 0;
online.textContent = 'Онлайн';
state.textContent =
data.run_level === 2
? 'Идёт раунд'
: 'Ожидание раунда';
map.textContent =
typeof data.map === 'string' && data.map.trim()
? data.map.trim()
: '—';
time.textContent = '—';
preset.textContent =
typeof data.preset === 'string' && data.preset.trim()
? data.preset.trim()
: '—';
players.textContent = String(currentPlayers);
maxPlayers.textContent = String(maximum);
const percent =
maximum > 0
? Math.min(100, Math.max(0, currentPlayers / maximum * 100))
: 0;
fill.style.width = percent.toFixed(0) + '%';
}
async function update() {
try {
const response = await fetch('/server-status', {
cache: 'no-store',
headers: {
Accept: 'application/json'
}
});
if (!response.ok) {
throw new Error('HTTP ' + response.status);
}
onlineState(await response.json());
} catch (error) {
console.warn('RedStar server status unavailable:', error);
offline();
}
}
update();
window.setInterval(update, 30000);
})();