Files
SuperSunday/frontend/public/assets/admin.js
2025-08-24 14:49:43 +00:00

74 lines
3.0 KiB
JavaScript

const loginBtn = document.getElementById('loginBtn');
const loginSection = document.getElementById('loginSection');
const adminSection = document.getElementById('adminSection');
const loginStatus = document.getElementById('loginStatus');
async function refreshLists(){
const ts = await SSAPI.get('/tournaments').catch(()=>[]);
const ms = await SSAPI.get('/matches').catch(()=>[]);
document.getElementById('adminTournaments').textContent = JSON.stringify(ts,null,2);
document.getElementById('adminMatches').textContent = JSON.stringify(ms,null,2);
}
loginBtn.onclick = async () => {
const email = document.getElementById('email').value;
const password = document.getElementById('password').value;
try {
const { token } = await SSAPI.post('/auth/login', { email, password });
SSAPI.setToken(token);
loginStatus.textContent = 'Connecté ✓';
loginSection.style.display = 'none';
adminSection.style.display = 'block';
await refreshLists();
} catch (e) {
loginStatus.textContent = 'Erreur: ' + e.message;
}
};
window.createTournament = async () => {
const name = document.getElementById('t_name').value;
const location = document.getElementById('t_loc').value;
const start_date = document.getElementById('t_sd').value;
const end_date = document.getElementById('t_ed').value;
await SSAPI.post('/tournaments', { name, location, start_date, end_date });
await refreshLists();
};
window.generateAmericano = async () => {
const tournament_id = Number(document.getElementById('g_tid').value);
const courts = document.getElementById('g_courts').value.split(',').map(s=>s.trim()).filter(Boolean);
const start_at = document.getElementById('g_start').value || null;
const interval_minutes = Number(document.getElementById('g_int').value || 20);
const res = await SSAPI.post('/matches/generate', { tournament_id, courts, start_at, interval_minutes });
alert('Matches créés: ' + res.created.length);
await refreshLists();
};
window.scoreMatch = async () => {
const id = Number(document.getElementById('m_id').value);
const score_a = Number(document.getElementById('m_a').value);
const score_b = Number(document.getElementById('m_b').value);
await SSAPI.post(`/matches/${id}/score`, { score_a, score_b });
await refreshLists();
};
// New: bulk enroll & auto teams
window.bulkEnroll = async () => {
const tournament_id = Number(document.getElementById('b_tid').value);
const ids = document.getElementById('b_ids').value.split(',').map(s=>Number(s.trim())).filter(Boolean);
await SSAPI.post('/enrollments/bulk', { tournament_id, player_ids: ids });
await refreshLists();
};
window.autoTeams = async () => {
const tournament_id = Number(document.getElementById('b_tid').value);
const res = await SSAPI.post('/teams/auto', { tournament_id });
alert('Équipes créées: ' + (res.created_count || 0));
await refreshLists();
};
// auto-show admin if token present
if (SSAPI.getToken()) {
loginSection.style.display = 'none';
adminSection.style.display = 'block';
refreshLists();
}