Selasa1

Aplikasi Tes Online Lengkap

Selamat Datang di Aplikasi Tes Online

👁️

LOGIN
// Sebelumnya (menggunakan variabel JS): // if (enteredPassword === currentPasswordPeserta) { ... } // Sekarang (mengirim ke backend): async function loginAs(role) { const username = document.getElementById('loginUsername').value; // Jika ada username const password = document.getElementById('loginPassword').value; try { const response = await fetch('/api/login', { // URL API backend method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password, role }) }); const data = await response.json(); if (response.ok) { localStorage.setItem('authToken', data.token); // Simpan token autentikasi currentUserRole = data.role; if (data.role === 'admin') { showPage('adminPage'); // Muat data admin } else { showPage('identityPage'); } } else { document.getElementById('loginError').textContent = data.message || "Login gagal!"; } } catch (error) { console.error("Error logging in:", error); document.getElementById('loginError').textContent = "Terjadi kesalahan koneksi."; } } // Sebelumnya (dari array JS `currentActiveQuestions`): // const question = currentActiveQuestions[index]; // Sekarang (mengambil dari backend): async function loadQuestion(index) { try { // Asumsi currentTestId sudah diketahui const response = await fetch(`/api/tests/\{currentTestId\}/questions/{index}`, { headers: { 'Authorization': `Bearer ${localStorage.getItem('authToken')}` } }); if (!response.ok) throw new Error('Gagal memuat soal'); const question = await response.json(); // ... (lanjutkan logika untuk menampilkan soal seperti sebelumnya) ... // questionNumberEl.textContent = `Soal Ke-${question.order_in_test} dari ${totalQuestionsInThisTest}`; // questionTextEl.textContent = question.question_text; // ... dan seterusnya ... } catch (error) { console.error("Error loading question:", error); // Tampilkan pesan error ke pengguna } } async function submitTest(timeUp = false) { // ... (hentikan timer, kumpulkan semua jawaban dari userAnswers array) ... try { const response = await fetch(`/api/tests/${currentTestId}/submit`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${localStorage.getItem('authToken')}` }, body: JSON.stringify({ answers: userAnswers, timeUp }) }); const resultData = await response.json(); if (response.ok) { // ... (tampilkan hasil tes seperti sebelumnya menggunakan resultData dari backend) ... showPage('resultPage'); } else { // Tampilkan pesan error } } catch (error) { // Tangani error koneksi } } from app import init_db init_db() exit()

Postingan populer dari blog ini

jajal

Selasa