ml-model-hub / static /script.js
muhalwan's picture
add housing and UI
55acd9b
document.addEventListener('DOMContentLoaded', () => {
// Model selection buttons and sections
const sentimentBtn = document.getElementById('sentiment-btn');
const catdogBtn = document.getElementById('catdog-btn');
const housingBtn = document.getElementById('housing-btn');
const sentimentSection = document.getElementById('sentiment-section');
const catdogSection = document.getElementById('catdog-section');
const housingSection = document.getElementById('housing-section');
const sections = [sentimentSection, catdogSection, housingSection];
const buttons = [sentimentBtn, catdogBtn, housingBtn];
// Forms and result displays
const sentimentForm = document.getElementById('sentiment-form');
const catdogForm = document.getElementById('catdog-form');
const housingForm = document.getElementById('housing-form');
const sentimentResult = document.getElementById('sentiment-result');
const catdogResult = document.getElementById('catdog-result');
const housingResult = document.getElementById('housing-result');
const imagePreview = document.getElementById('image-preview');
const catdogFileInput = document.getElementById('catdog-file');
// --- Event Listeners for Model Switching ---
function switchTab(activeIndex) {
buttons.forEach((button, index) => {
button.classList.toggle('active', index === activeIndex);
});
sections.forEach((section, index) => {
section.classList.toggle('active', index === activeIndex);
});
}
sentimentBtn.addEventListener('click', () => switchTab(0));
catdogBtn.addEventListener('click', () => switchTab(1));
housingBtn.addEventListener('click', () => switchTab(2));
// --- Form Submission Handlers ---
// Sentiment Form
sentimentForm.addEventListener('submit', async (e) => {
e.preventDefault();
const text = document.getElementById('sentiment-text').value;
sentimentResult.textContent = 'Analyzing...';
try {
const response = await fetch('/predict/sentiment', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text })
});
const data = await response.json();
if (!response.ok) throw new Error(data.detail || 'An unknown error occurred.');
sentimentResult.textContent = `Prediction: ${data.prediction}`;
} catch (error) {
sentimentResult.textContent = `Error: ${error.message}`;
}
});
// Cat & Dog Form
catdogForm.addEventListener('submit', async (e) => {
e.preventDefault();
const formData = new FormData(catdogForm);
catdogResult.textContent = 'Classifying...';
try {
const response = await fetch('/predict/catdog', {
method: 'POST',
body: formData
});
const data = await response.json();
if (!response.ok) throw new Error(data.detail || 'An unknown error occurred.');
catdogResult.textContent = `Prediction: ${data.prediction}`;
} catch (error) {
catdogResult.textContent = `Error: ${error.message}`;
}
});
// Housing Form
housingForm.addEventListener('submit', async (e) => {
e.preventDefault();
const formData = new FormData(housingForm);
const data = Object.fromEntries(formData.entries());
housingResult.textContent = 'Predicting...';
try {
const response = await fetch('/predict/housing', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
});
const result = await response.json();
if (!response.ok) throw new Error(result.detail || 'An unknown error occurred.');
housingResult.textContent = `Predicted Price: ${result.prediction}`;
} catch (error) {
housingResult.textContent = `Error: ${error.message}`;
}
});
// Image Preview Handler
catdogFileInput.addEventListener('change', () => {
const file = catdogFileInput.files[0];
if (file) {
const reader = new FileReader();
reader.onload = (e) => {
imagePreview.src = e.target.result;
imagePreview.style.display = 'block';
};
reader.readAsDataURL(file);
} else {
imagePreview.style.display = 'none';
}
});
});