backend / templates /form.html
Yash goyal
Update templates/form.html
fb2bf39 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SnapSkin - Skin Lesion Diagnosis</title>
<link rel="stylesheet" href="{{ url_for('static', filename='form-styles.css') }}">
<link rel="icon" type="image/png" href="{{ url_for('static', filename='logo.png') }}">
</head>
<body>
<div class="container">
<header>
<h1>SnapSkin</h1>
<p>AI-Powered Skin Lesion Diagnosis</p>
</header>
<form id="diagnosis-form" action="{{ url_for('predict') }}" method="POST" enctype="multipart/form-data">
<div class="form-group">
<label for="name">Full Name:</label>
<input type="text" id="name" name="name" placeholder="Enter your full name" required>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" id="email" name="email" placeholder="Enter your email address" required>
</div>
<div class="form-group">
<label for="gender">Gender:</label>
<select id="gender" name="gender" required>
<option value="" disabled selected>Select your gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
<option value="Other">Other</option>
</select>
</div>
<div class="form-group">
<label for="age">Age:</label>
<input type="number" id="age" name="age" min="0" max="150" placeholder="e.g., 35" required>
</div>
<div class="form-group">
<label for="image">Upload Skin Image:</label>
<input type="file" id="image" name="image" accept="image/*" required>
<label for="image" class="file-upload-label" id="file-upload-text">Click to choose an image</label>
</div>
<button type="submit" class="submit-button" id="submit-btn">Diagnose</button>
</form>
{% if result %}
<div class="result">
<h2>Diagnosis Result</h2>
<div class="alert {% if result.prediction == 'Error' %}alert-error{% elif result.confidence and result.confidence.replace('%','')|float < 70 %}alert-warning{% else %}alert-success{% endif %}">
<p><strong>Condition:</strong> {{ result.prediction }}</p>
{% if result.confidence %}
<p><strong>Confidence:</strong> {{ result.confidence }}</p>
{% endif %}
{% if result.message %}
<p><strong>Message:</strong> {{ result.message }}</p>
{% endif %}
</div>
{% if result.email_status %}
<p id="email-status">{{ result.email_status }}</p>
{% endif %}
</div>
{% endif %}
<div id="history-section">
</div>
<div id="history-results">
</div>
</div>
</div>
<script src="{{ url_for('static', filename='preloader.js') }}"></script>
<script src="{{ url_for('static', filename='cursor-effect.js') }}"></script>
<script>
const fileInput = document.getElementById('image');
const fileUploadText = document.getElementById('file-upload-text');
const diagnosisForm = document.getElementById('diagnosis-form');
const submitBtn = document.getElementById('submit-btn');
if (fileInput) {
fileInput.addEventListener('change', () => {
if (fileInput.files.length > 0) {
fileUploadText.textContent = `File selected: ${fileInput.files[0].name}`;
fileUploadText.classList.add('file-selected');
} else {
fileUploadText.textContent = 'Click to choose an image';
fileUploadText.classList.remove('file-selected');
}
});
}
if (diagnosisForm) {
diagnosisForm.addEventListener('submit', () => {
if(submitBtn) {
submitBtn.disabled = true;
submitBtn.textContent = 'Processing...';
}
});
}
document.getElementById('fetch-history-btn').addEventListener('click', () => {
const email = document.getElementById('history-email').value;
if (!email) {
alert('Please enter an email address.');
return;
}
const historyDiv = document.getElementById('history-results');
historyDiv.innerHTML = '<p>Loading history...</p>';
fetch(`/api/history?email=${encodeURIComponent(email)}`)
.then(response => response.json())
.then(data => {
historyDiv.innerHTML = '';
if (data.error || data.length === 0) {
historyDiv.innerHTML = '<p>No scan history found for this email.</p>';
return;
}
const ul = document.createElement('ul');
data.forEach(scan => {
const li = document.createElement('li');
li.classList.add('history-item');
li.innerHTML = `
<img src="${scan.image_url}" alt="Scan Image">
<div class="history-details">
<p><strong>Prediction:</strong> ${scan.prediction} (${scan.confidence})</p>
<p><strong>Patient:</strong> ${scan.patient_name}</p>
<p><strong>Date:</strong> ${scan.timestamp}</p>
</div>
`;
ul.appendChild(li);
});
historyDiv.appendChild(ul);
})
.catch(error => {
console.error('Error fetching history:', error);
historyDiv.innerHTML = '<p>Error loading history. Please try again.</p>';
});
});
</script>
</body>
</html>