ojaskittur's picture
config
08080e4
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Local Intro Scorer</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body { background-color: #f8f9fa; padding-top: 50px; }
.card-score { font-size: 2rem; font-weight: bold; color: #0d6efd; }
</style>
</head>
<body>
<div class="container">
<h1 class="text-center mb-4">Introduction Scoring System (Local)</h1>
<div class="row">
<div class="col-md-6">
<div class="card p-4">
<div class="mb-3">
<label for="transcript" class="form-label">Transcript</label>
<textarea class="form-control" id="transcript" rows="10" placeholder="Paste text here..."></textarea>
</div>
<div class="mb-3">
<label for="duration" class="form-label">Duration (seconds)</label>
<input type="number" class="form-control" id="duration" value="60">
</div>
<button onclick="analyze()" class="btn btn-primary w-100" id="btnAnalyze">Analyze</button>
</div>
</div>
<div class="col-md-6">
<div class="card p-4 h-100">
<h3>Results</h3>
<div id="loading" class="text-muted" style="display:none;">Processing...</div>
<div id="results-area" style="display:none;">
<div class="text-center mb-3">
<div>Total Score</div>
<div class="card-score" id="total-score">0/100</div>
</div>
<ul class="list-group" id="breakdown-list">
</ul>
</div>
</div>
</div>
</div>
</div>
<script>
async function analyze() {
const transcript = document.getElementById('transcript').value;
const duration = document.getElementById('duration').value;
const btn = document.getElementById('btnAnalyze');
const loading = document.getElementById('loading');
const resArea = document.getElementById('results-area');
if(!transcript) return alert("Please enter text");
btn.disabled = true;
loading.style.display = 'block';
resArea.style.display = 'none';
try {
const response = await fetch('/api/score', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({ transcript: transcript, duration: parseInt(duration) })
});
const data = await response.json();
document.getElementById('total-score').innerText = data['Total Score'] + "/100";
const list = document.getElementById('breakdown-list');
list.innerHTML = "";
for (const [key, val] of Object.entries(data['Breakdown'])) {
const li = document.createElement('li');
li.className = "list-group-item";
li.innerHTML = `<strong>${key}</strong>: ${val.score} pts <br><small class='text-muted'>${val.feedback}</small>`;
list.appendChild(li);
}
resArea.style.display = 'block';
} catch (error) {
alert("Error connecting to backend");
console.error(error);
} finally {
btn.disabled = false;
loading.style.display = 'none';
}
}
</script>
</body>
</html>