Spaces:
Sleeping
Sleeping
File size: 3,576 Bytes
ed925c4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | document.addEventListener('DOMContentLoaded', () => {
const checkBtn = document.getElementById('check-btn');
const clearBtn = document.getElementById('clear-btn');
const contentInput = document.getElementById('content-input');
// UI Elements
const btnText = document.querySelector('.btn-text');
const btnLoader = document.getElementById('btn-loader');
const resultContainer = document.getElementById('result-container');
const statusIcon = document.getElementById('status-icon');
const resultLabel = document.getElementById('result-label');
const progressFill = document.getElementById('progress-fill');
const scoreText = document.getElementById('score-text');
const explanationText = document.getElementById('explanation-text');
checkBtn.addEventListener('click', async () => {
const text = contentInput.value.trim();
if (!text) {
alert("Please enter some text or a URL to analyze.");
return;
}
// Set Loading State
setLoading(true);
try {
const response = await fetch('/api/analyze', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ content: text })
});
const data = await response.json();
if (!response.ok) {
throw new Error(data.error || "Failed to analyze content");
}
displayResult(data);
} catch (error) {
alert(`Error: ${error.message}`);
// Reset UI slightly
resultContainer.classList.add('hidden');
} finally {
setLoading(false);
}
});
clearBtn.addEventListener('click', () => {
contentInput.value = '';
resultContainer.classList.add('hidden');
// Reset classes
resultContainer.className = 'result-card glass-panel hidden';
progressFill.style.width = '0%';
});
function setLoading(isLoading) {
if (isLoading) {
checkBtn.disabled = true;
btnText.classList.add('hidden');
btnLoader.classList.remove('hidden');
resultContainer.classList.add('hidden');
} else {
checkBtn.disabled = false;
btnText.classList.remove('hidden');
btnLoader.classList.add('hidden');
}
}
function displayResult(data) {
// Remove existing state classes
resultContainer.className = 'result-card glass-panel';
const result = data.result; // "Real", "Fake", or "Uncertain"
const score = data.confidence; // 0 - 100
const explanation = data.explanation;
// Apply new state class
resultContainer.classList.add(`state-${result.toLowerCase()}`);
// Update text
resultLabel.textContent = `${result} Content`;
scoreText.textContent = `${score}%`;
explanationText.textContent = explanation;
// Icons
if (result === 'Real') {
statusIcon.textContent = '✓';
} else if (result === 'Fake') {
statusIcon.textContent = '✕';
} else {
statusIcon.textContent = '?';
}
// Show container
resultContainer.classList.remove('hidden');
// Animate progress bar slightly after container shows
setTimeout(() => {
progressFill.style.width = `${score}%`;
}, 100);
}
});
|