Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

MediaWiki:Common.js: различия между версиями

Страница интерфейса MediaWiki
Add live Red Star server status
 
Remove obsolete status script
Метка: очистка
 
Строка 1: Строка 1:
(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);
    });
})();

Текущая версия от 01:52, 4 июня 2026