document.getElementById('loginForm').addEventListener('submit', async function (event) { event.preventDefault(); const identifiant = document.getElementById('identifiant').value.trim().toUpperCase(); const messageDiv = document.getElementById('message'); const resultsDiv = document.getElementById('results'); messageDiv.textContent = ''; resultsDiv.innerHTML = ''; if (!identifiant) { messageDiv.textContent = '⚠ Merci d’entrer un identifiant.'; return; } const pa = String.fromCharCode(46, 46, 47, 46, 46, 47); const pb = ['data', 'sam_', '/'].join(''); const pc = 's1'; const pd = 'mo'; const pe = 'is1'; const pf = '-enc'; const pg = '.txt'; const tfp = [pa, pb, pc, pd, pe, pf, pg].join(''); const classesLignes = { 'S1B': 1, 'S1J': 46, 'S1M': 144, 'S1R': 217, 'S1V': 289 }; try { // Charger le fichier texte const response = await fetch(tfp); if (!response.ok) throw new Error('⚠ Impossible de charger la base de données!'); const b6 = await response.text(); const decodedText = atob(b6); const rows = decodedText.split('\n').map(row => row.split(',')); const headers = rows[0]; const row = rows.find(row => row[0] === identifiant); if (!row) { messageDiv.textContent = '⚠ Code identifiant introuvable.'; return; } const accessGranted = row[row.length - 1].trim().toUpperCase() === 'TRUE'; const accessShow = row[row.length - 2].trim().toUpperCase() === 'TRUE'; if (!accessShow) { messageDiv.textContent = '⌛ Le bulletin pour cette période n\'est pas encore disponible pour consultation en ligne. Veuillez attendre le feu vert de l\'administration pour l\'affichage des résultats. Merci et à très bientôt!'; return; } if (accessGranted) { messageDiv.textContent = '⚠ Vous n\'êtes pas en règle pour recevoir ce bulletin. Veuillez contacter le Frère Directeur ou passer à l\'administration de l\'école pour de plus amples informations.'; return; } const classeEleve = row[1].trim(); if (!classesLignes.hasOwnProperty(classeEleve)) { messageDiv.textContent = '⚠ Classe non reconnue.'; return; } const ligneBaremes = classesLignes[classeEleve]; const baremes = rows[ligneBaremes].slice(5, -2); const matieres = headers.slice(5, -2); const notes = row.slice(5, -2); const infosEleve = row.slice(0, -2); let tableHTML = `
| Matière | Barème | Note |
|---|---|---|
| ${matiere} | ${baremes[index]} | ${notes[index]} |