MediaWiki:Common.js: различия между версиями
Обновление живого статуса сервера |
Откат скрипта статуса Метка: ручная отмена |
||
| Строка 1: | Строка 1: | ||
(() => { | (() => { | ||
const | const status = document.getElementById('rs-server-status'); | ||
if (! | if (!status) { | ||
return; | return; | ||
} | } | ||
const | const players = document.getElementById('rs-status-players'); | ||
const | const maxPlayers = document.getElementById('rs-status-max'); | ||
const | const map = document.getElementById('rs-status-map'); | ||
const | const preset = document.getElementById('rs-status-preset'); | ||
const | const label = document.getElementById('rs-status-label'); | ||
async function updateServerStatus() { | |||
async function | |||
try { | try { | ||
const response = await fetch('/server-status', { | const response = await fetch('/server-status', { | ||
| Строка 77: | Строка 22: | ||
if (!response.ok) { | if (!response.ok) { | ||
throw new Error( | throw new Error(`HTTP ${response.status}`); | ||
} | } | ||
const data = await response.json(); | const data = await response.json(); | ||
} catch ( | players.textContent = | ||
console.warn('RedStar status | 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( | window.setInterval(updateServerStatus, 30000); | ||
})(); | })(); | ||
Версия от 14:31, 29 сентября 2026
(() => {
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);
})();