const form = document.querySelector('#registerForm');
const result = document.querySelector('#registerResult');
const statsGrid = document.querySelector('#statsGrid');
const eventList = document.querySelector('#eventList');
const refreshStats = document.querySelector('#refreshStats');
function renderStats(data) {
const counters = data.counters || {};
const service = data.service || {};
statsGrid.innerHTML = `
Сервис${service.active || 'unknown'}
Активные${counters.users_active ?? 0}
Пользователи${counters.users_total ?? 0}
Ожидают оплату${counters.payments_pending ?? 0}
`;
const events = data.latest_events || [];
if (events.length === 0) {
eventList.innerHTML = 'Пока нет событий в логе или лог недоступен.
';
return;
}
eventList.innerHTML = events.map((event) => `
${event.time || 'без времени'}
${event.callsign || 'XLX'}
${event.message}
`).join('');
}
async function loadStats() {
try {
const response = await fetch('/api/dashboard/stats');
const payload = await response.json();
if (!payload.ok) {
throw new Error(payload.error || 'Ошибка загрузки статистики');
}
renderStats(payload.data);
} catch (error) {
eventList.innerHTML = `${error.message}
`;
}
}
refreshStats?.addEventListener('click', loadStats);
loadStats();
form?.addEventListener('submit', async (event) => {
event.preventDefault();
result.textContent = 'Отправляем заявку...';
const data = Object.fromEntries(new FormData(form).entries());
const response = await fetch('/api/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data),
});
const payload = await response.json();
if (!payload.ok) {
result.textContent = payload.error || 'Ошибка регистрации';
return;
}
const payment = payload.data.payment || {};
const lines = [
`Заявка создана: ${payload.data.callsign}`,
`Статус: ${payload.data.status}`,
];
if (payment.confirmation_url) {
lines.push(`YooKassa: ${payment.confirmation_url}`);
}
if (payment.manual_transfer?.instructions) {
lines.push(`Перевод по чеку: ${payment.manual_transfer.instructions}`);
lines.push(`ID платежа для чека: ${payment.id}`);
}
result.textContent = lines.join('\n');
});