74 lines
3.0 KiB
JavaScript
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();
|
|
} |