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 status = document.getElementById('rs-server-status');

    if (!status) {
        return;
    }

    const players = document.getElementById('rs-status-players');
    const maxPlayers = document.getElementById('rs-status-max');
    const map = document.getElementById('rs-status-map');
    const preset = document.getElementById('rs-status-preset');
    const label = document.getElementById('rs-status-label');

    async function updateServerStatus() {
        try {
            const response = await fetch('/server-status', {
                cache: 'no-store',
                headers: {
                    'Accept': 'application/json'
                }
            });

            if (!response.ok) {
                throw new Error(`HTTP ${response.status}`);
            }

            const data = await response.json();

            players.textContent =
                Number.isInteger(data.players) ? data.players : '—';

            maxPlayers.textContent =
                Number.isInteger(data.soft_max_players)
                    ? data.soft_max_players
                    : '—';

            map.textContent =
                typeof data.map === 'string' && data.map.trim()
                    ? data.map
                    : '—';

            preset.textContent =
                typeof data.preset === 'string' && data.preset.trim()
                    ? data.preset
                    : '—';

            label.textContent = 'СЕРВЕР';
            status.classList.remove('rs-home-status--offline');
            status.classList.add('rs-home-status--online');
        } catch (error) {
            players.textContent = '—';
            maxPlayers.textContent = '—';
            map.textContent = '—';
            preset.textContent = 'Недоступен';

            label.textContent = 'СЕРВЕР';
            status.classList.remove('rs-home-status--online');
            status.classList.add('rs-home-status--offline');

            console.warn('RedStar server status unavailable:', error);
        }
    }

    updateServerStatus();
    window.setInterval(updateServerStatus, 30000);
})();