raghuram00's picture
Initial commit (Render + GDrive)
1a976d8
document.addEventListener('DOMContentLoaded', () => {
const codeInput = document.getElementById('codeInput');
const analyzeBtn = document.getElementById('analyzeBtn');
const btnText = analyzeBtn.querySelector('.btn-text');
const loader = analyzeBtn.querySelector('.loader');
// Result elements
const resNotation = document.getElementById('resNotation');
const resTitle = document.getElementById('resTitle');
const resDesc = document.getElementById('resDesc');
// Example chips
document.querySelectorAll('.chip').forEach(chip => {
chip.addEventListener('click', () => {
// Replace \n from dataset with actual newlines
codeInput.value = chip.dataset.example.replace(/\\n/g, '\n');
triggerAnalysis();
});
});
analyzeBtn.addEventListener('click', triggerAnalysis);
// Also support Cmd/Ctrl + Enter to trigger
codeInput.addEventListener('keydown', (e) => {
if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {
triggerAnalysis();
}
});
async function triggerAnalysis() {
const code = codeInput.value.trim();
if (!code) {
resNotation.innerHTML = "O(?)";
resTitle.innerHTML = "Error";
resDesc.innerHTML = "⚠️ Please paste some code before analyzing!";
return;
}
// UI Loading state
analyzeBtn.disabled = true;
btnText.innerHTML = "Analyzing structure...";
loader.classList.remove('hidden');
resNotation.style.opacity = '0.5';
resTitle.style.opacity = '0.5';
resDesc.style.opacity = '0.5';
try {
const response = await fetch('/api/predict', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ code: code })
});
if (!response.ok) {
throw new Error(`Server error: ${response.status}`);
}
const data = await response.json();
// Render Results
resNotation.innerHTML = data.notation;
resTitle.innerHTML = data.title;
resDesc.innerHTML = data.description;
} catch (error) {
console.error('Analysis failed:', error);
resNotation.innerHTML = "O(?)";
resTitle.innerHTML = "Analysis Failed";
resDesc.innerHTML = "An error occurred while connecting to the AI model. Ensure the backend is running.";
} finally {
// Restore UI state
analyzeBtn.disabled = false;
btnText.innerHTML = "⚡ Analyze Complexity";
loader.classList.add('hidden');
// Fade results back in
resNotation.style.opacity = '1';
resTitle.style.opacity = '1';
resDesc.style.opacity = '1';
// Add a little pop animation to the results
document.querySelectorAll('.result-card').forEach(card => {
card.style.transform = 'scale(1.02)';
setTimeout(() => card.style.transform = 'scale(1)', 200);
});
}
}
});