<!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Skrining Awal BED</title> <script src="https://cdn.tailwindcss.com"></script> <style> /* CSS Anda tetap sama */ body { font-family: "Inter", sans-serif; background-image: linear-gradient(to right top, #d16ba5, #c777b9, #ba83ca, #aa8fd8, #9a9ae1, #8aa7ec, #79b3f4, #69bff8, #52cffe, #41dfff, #46eefa, #5ffbf1); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 1rem; } .container { background-color: rgba(255, 255, 255, 0.95); border-radius: 2rem; box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2); backdrop-filter: blur(10px); max-width: 600px; width: 100%; padding: 2.5rem; } .question-card { background-color: #f8fafc; border-radius: 1.5rem; padding: 1.5rem; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); border: 1px solid #e2e8f0; } .radio-option, .checkbox-option { display: flex; align-items: center; padding: 1rem 1.25rem; border-radius: 1rem; cursor: pointer; transition: background-color 0.2s ease-in-out; font-size: 1.125rem; } .radio-option:hover, .checkbox-option:hover { background-color: #cbd5e0; } input[type="radio"]:checked + span, input[type="checkbox"]:checked + span { font-weight: 600; color: #6366f1; } input[type="radio"], input[type="checkbox"] { margin-right: 0.75rem; accent-color: #6366f1; transform: scale(1.2); } .submit-button { background-image: linear-gradient(to right, #6366f1, #a855f7); color: white; padding: 1.25rem 2.5rem; border-radius: 1.5rem; font-weight: 700; font-size: 1.25rem; transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out; box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); } .submit-button:hover { transform: translateY(-4px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3); } .submit-button:disabled { background-image: none; background-color: #9ca3af; cursor: not-allowed; } .result-box { background-color: #e0f2fe; border-left: 5px solid #2563eb; border-radius: 1.5rem; padding: 1.5rem; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); } </style> </head> <body> <div class="container mx-auto text-gray-800"> <h1 class="text-4xl font-extrabold text-center mb-6 text-transparent bg-clip-text bg-gradient-to-r from-pink-500 to-yellow-500"> Skrining Awal Binge Eating Disorder (BED) </h1> <p class="text-center text-gray-600 mb-8 text-lg">Mohon jawab pertanyaan di bawah ini dengan jujur untuk membantu kami memahami kondisi Anda.</p> <form id="bedScreeningForm" class="space-y-6"> <div class="question-card"> <p class="font-semibold text-xl text-gray-700 mb-4">1. Dalam 3 bulan terakhir, apakah Anda pernah mengalami episode makan di mana Anda makan dalam jumlah yang jauh lebih besar dari kebanyakan orang dalam waktu singkat (misalnya, kurang dari 2 jam)?</p> <div class="space-y-3"> <label class="radio-option"><input checked type="radio" name="q1_binge_episode" value="ya" required><span>Ya</span></label> <label class="radio-option"><input type="radio" name="q1_binge_episode" value="tidak"><span>Tidak</span></label> </div> </div> <div class="question-card"> <p class="font-semibold text-xl text-gray-700 mb-4">2. Saat episode makan tersebut, apakah Anda merasa kehilangan kendali (tidak bisa berhenti makan atau mengontrol apa/berapa banyak yang Anda makan)?</p> <div class="space-y-3"> <label class="radio-option"><input checked type="radio" name="q2_loss_of_control" value="ya" required><span>Ya</span></label> <label class="radio-option"><input type="radio" name="q2_loss_of_control" value="tidak"><span>Tidak</span></label> </div> </div> <div class="question-card"> <p class="font-semibold text-xl text-gray-700 mb-4">3. Dalam 3 bulan terakhir, berapa sering rata-rata episode makan berlebihan yang Anda alami terjadi dalam seminggu?</p> <div class="space-y-3"> <label class="radio-option"><input checked type="radio" name="q3_frequency" value="tidak_pernah" required><span>Tidak pernah</span></label> <label class="radio-option"><input checked type="radio" name="q3_frequency" value="kurang_1x"><span>Kurang dari 1x seminggu</span></label> <label class="radio-option"><input checked type="radio" name="q3_frequency" value="1-3x"><span>1-3x seminggu</span></label> <label class="radio-option"><input type="radio" name="q3_frequency" value="4-7x"><span>4-7x seminggu</span></label> <label class="radio-option"><input type="radio" name="q3_frequency" value="lebih_8x"><span>Lebih dari 8x seminggu</span></label> </div> </div> <div class="question-card"> <p class="font-semibold text-xl text-gray-700 mb-4">4. Saat episode makan berlebihan, apakah Anda sering mengalami setidaknya TIGA dari hal berikut? (Pilih semua yang sesuai)</p> <div class="space-y-3"> <label class="checkbox-option"><input checked type="checkbox" name="q4_features[]" value="makan_cepat"><span>Makan jauh lebih cepat dari normal</span></label> <label class="checkbox-option"><input checked type="checkbox" name="q4_features[]" value="kenyang_tidak_nyaman"><span>Makan sampai merasa sangat kenyang atau tidak nyaman</span></label> <label class="checkbox-option"><input checked type="checkbox" name="q4_features[]" value="makan_tidak_lapar"><span>Makan dalam jumlah besar meskipun tidak merasa lapar</span></label> <label class="checkbox-option"><input type="checkbox" name="q4_features[]" value="makan_sendirian"><span>Makan sendirian karena merasa malu dengan jumlah makanan yang dimakan</span></label> <label class="checkbox-option"><input type="checkbox" name="q4_features[]" value="jijik_depresi_bersalah"><span>Merasa jijik pada diri sendiri, depresi, atau sangat bersalah setelah makan berlebihan</span></label> </div> </div> <div class="question-card"> <p class="font-semibold text-xl text-gray-700 mb-4">5. Setelah episode makan berlebihan, apakah Anda mencoba 'mengimbangi' dengan perilaku seperti muntah, menggunakan laksatif, berpuasa, atau olahraga berlebihan?</p> <div class="space-y-3"> <label class="radio-option"><input checked type="radio" name="q5_compensatory" value="ya" required><span>Ya</span></label> <label class="radio-option"><input type="radio" name="q5_compensatory" value="tidak"><span>Tidak</span></label> </div> </div> <div class="flex justify-center mt-8"> <button type="submit" id="submitBtn" class="submit-button"> Dapatkan Analisis AI </button> </div> </form> <div id="result" class="result-box p-6 mt-8 hidden"> <h2 id="resultTitle" class="text-2xl font-bold mb-4"></h2> <p id="analysisText" class="text-gray-700 leading-relaxed whitespace-pre-wrap"></p> <h3 class="text-xl font-bold mt-6 mb-2">Saran untuk Anda:</h3> <p id="suggestionText" class="text-gray-700 leading-relaxed whitespace-pre-wrap"></p> <div id="referensiContainer" class="mt-6"></div> <p id="disclaimerText" class="text-sm text-gray-500 mt-4 italic"></p> <a href="menu_utama.php" target="_parent" title="Klik Disini Untuk Ke Menu Utama" class="block text-center mt-6 text-blue-600 hover:underline font-semibold"> Lanjut ke Menu Utama </a> </div> </div> <script> document.getElementById('bedScreeningForm').addEventListener('submit', function(event) { event.preventDefault(); const submitBtn = document.getElementById('submitBtn'); const resultDiv = document.getElementById('result'); const resultTitle = document.getElementById('resultTitle'); const analysisText = document.getElementById('analysisText'); const suggestionText = document.getElementById('suggestionText'); const disclaimerText = document.getElementById('disclaimerText'); // ▼▼▼ PERUBAHAN JAVASCRIPT DI SINI ▼▼▼ const referensiContainer = document.getElementById('referensiContainer'); // ▲▲▲ PERUBAHAN JAVASCRIPT DI SINI ▲▲▲ submitBtn.disabled = true; submitBtn.textContent = 'Menganalisis...'; const formData = new FormData(this); fetch('proses_skrining.php', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.error) { resultTitle.textContent = 'Terjadi Kesalahan'; analysisText.textContent = data.error; suggestionText.innerHTML = 'Silakan coba lagi nanti. Detail: ' + (data.details || ''); disclaimerText.textContent = ''; // Kosongkan referensi jika ada error referensiContainer.innerHTML = ''; } else { const riskLevel = data.tingkat_risiko || 'Tidak Diketahui'; const riskColor = getRiskColor(riskLevel); resultTitle.className = `text-2xl font-bold mb-4 ${riskColor}`; resultTitle.textContent = `Hasil Analisis: Tingkat Risiko ${riskLevel}`; analysisText.textContent = data.analisa_kesimpulan || 'Tidak ada analisis.'; let saranHtml = Array.isArray(data.saran) ? '<ul>' + data.saran.map(item => `<li class="list-disc ml-5">${item}</li>`).join('') + '</ul>' : (data.saran || 'Tidak ada saran.'); suggestionText.innerHTML = saranHtml; disclaimerText.textContent = data.disclaimer || ''; // ▼▼▼ PERUBAHAN JAVASCRIPT DI SINI ▼▼▼ // Proses dan tampilkan referensi referensiContainer.innerHTML = ''; // Kosongkan dulu container-nya if (data.referensi && Array.isArray(data.referensi) && data.referensi.length > 0) { let referensiHtml = '<h3 class="text-xl font-bold mt-6 mb-2 border-t pt-4">Referensi Terkait:</h3>'; data.referensi.forEach(ref => { referensiHtml += ` <div class="mt-4 p-3 bg-gray-100 rounded-lg border border-gray-200"> <p class="text-sm font-semibold text-gray-800">${ref.sitasi || 'Sitasi tidak tersedia.'}</p> <p class="text-sm text-gray-600 italic mt-1">${ref.ringkasan || 'Ringkasan tidak tersedia.'}</p> </div> `; }); referensiContainer.innerHTML = referensiHtml; } // ▲▲▲ PERUBAHAN JAVASCRIPT DI SINI ▲▲▲ } resultDiv.classList.remove('hidden'); resultDiv.scrollIntoView({ behavior: 'smooth', block: 'start' }); }) .catch(error => { console.error('Error:', error); resultTitle.textContent = 'Terjadi Kesalahan Jaringan'; analysisText.textContent = 'Tidak dapat terhubung ke server. Periksa koneksi internet Anda dan coba lagi.'; resultDiv.classList.remove('hidden'); }) .finally(() => { submitBtn.disabled = false; submitBtn.textContent = 'Dapatkan Analisis AI'; }); }); function getRiskColor(riskLevel) { switch (riskLevel.toLowerCase()) { case 'tinggi': case 'indikasi gangguan lain (bulimia)': return 'text-red-700'; case 'menengah': return 'text-orange-700'; case 'rendah': return 'text-green-700'; default: return 'text-gray-700'; } } </script> </body> </html>