Download templates/infer.html from SFM2001/SimpleAES: direct link, hf CLI and curl.
- Browser
- Download file 7.09 kB
-
https://huggingface.co/spaces/SFM2001/SimpleAES/resolve/main/templates/infer.html
- Command line
-
hf download hf://spaces/SFM2001/SimpleAES/templates/infer.html
-
curl -L -o infer.html https://huggingface.co/spaces/SFM2001/SimpleAES/resolve/main/templates/infer.html
7.09 kB
| {% extends 'base.html' %} | |
| {% block title %}Prediction Results{% endblock %} | |
| {% block content %} | |
| <div class="container mt-4"> | |
| <!-- Topic Card (same width as comparison) --> | |
| <div class="row"> | |
| <div class="col-12 mb-4"> | |
| <div class="card border-primary"> | |
| <div class="card-header bg-secondary text-white"> | |
| <h4 class="mb-0">Topic</h4> | |
| </div> | |
| <div class="card-body"> | |
| <p class="card-text" style="color: black;">{{ topic }}</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Essay Comparison --> | |
| <div class="row"> | |
| <div class="col-12 mb-4"> | |
| <div class="card border-primary"> | |
| <div class="card-header bg-secondary text-white"> | |
| <h4 class="mb-0">Essay Comparison</h4> | |
| </div> | |
| <div class="card-body p-0"> | |
| <div class="row g-0"> | |
| <!-- Original Essay --> | |
| <div class="col-md-6 border-end"> | |
| <div class="p-3"> | |
| <h5 class="text-center text-primary">Original Essay</h5> | |
| <div class="original-essay" id="originalEssay" style="color: black; height: 400px; overflow-y: auto;"> | |
| {{ essay }} | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Corrected Essay --> | |
| <div class="col-md-6"> | |
| <div class="p-3"> | |
| <h5 class="text-center text-success">Corrected Essay</h5> | |
| <div class="corrected-essay" id="correctedEssay" style="color: black; height: 400px; overflow-y: auto;"> | |
| {{ corrected_essay }} | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Rubric Cards (now below comparison) --> | |
| <div class="row"> | |
| {% set rubrics = [ | |
| ('Task Response', result[0], tr , 'task_response'), | |
| ('Coherence and Cohesion', result[1], cc, 'coherence_cohesion'), | |
| ('Lexical Resource', result[2], lr, 'lexical_resource'), | |
| ('Grammatical Range and Accuracy', result[3], gra, 'grammatical_accuracy') | |
| ] %} | |
| {% for rubric, score, explanation, link in rubrics %} | |
| <div class="col-md-3 mb-4"> <!-- Changed to col-md-3 for 4 cards in a row --> | |
| <div class="card h-100 bg-light border-info"> <!-- Changed to light bg with info border --> | |
| <div class="card-body"> | |
| <h5 class="card-title" style="color: black;">{{ rubric }}</h5> | |
| <div class="score-display mb-3 text-center"> <!-- Centered score --> | |
| <span class="score">{{ score|int }}</span>/9 | |
| </div> | |
| <p class="card-text text-truncate-multiline text-dark"> <!-- Dark text for better readability --> | |
| {{ explanation }} | |
| </p> | |
| <div class="d-flex justify-content-between mt-3"> | |
| <button type="button" class="btn btn-sm btn-outline-info" data-bs-toggle="modal" data-bs-target="#feedbackModal{{ loop.index }}"> | |
| View Feedback | |
| </button> | |
| <a href="{{ url_for('infer.rubric_explanation', rubric=link) }}" class="btn btn-sm btn-outline-info"> | |
| Details | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Modal for each feedback item --> | |
| <div class="modal fade" id="feedbackModal{{ loop.index }}" tabindex="-1" aria-labelledby="feedbackModalLabel{{ loop.index }}" aria-hidden="true"> | |
| <div class="modal-dialog modal-dialog-centered"> | |
| <div class="modal-content"> | |
| <div class="modal-header bg-info text-white"> | |
| <h5 class="modal-title" id="feedbackModalLabel{{ loop.index }}">{{ rubric }} Feedback</h5> | |
| <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> | |
| </div> | |
| <div class="modal-body" style="max-height: 60vh; overflow-y: auto;"> | |
| {{ explanation }} | |
| </div> | |
| <div class="modal-footer"> | |
| <button type="button" class="btn btn-info" data-bs-dismiss="modal">Close</button> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| {% endfor %} | |
| </div> | |
| <div class="text-center mt-4"> | |
| <a href="{{ url_for('infer.index') }}" class="btn btn-primary">Submit Another Essay</a> | |
| </div> | |
| </div> | |
| {% endblock %} | |
| {% block extra_scripts %} | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/jsdiff/5.0.1/diff.min.js"></script> | |
| <script> | |
| document.addEventListener('DOMContentLoaded', function() { | |
| try { | |
| const origEl = document.getElementById('originalEssay'); | |
| const corrEl = document.getElementById('correctedEssay'); | |
| if (!origEl || !corrEl) return; | |
| const originalText = origEl.textContent; | |
| const correctedText = corrEl.textContent; | |
| // 2) do the diff | |
| const diff = JsDiff.diffWordsWithSpace(originalText, correctedText); | |
| // if nothing really changed, bail out | |
| if (diff.length <= 1) return; | |
| // 3) clear out the old | |
| corrEl.innerHTML = ''; | |
| // 4) re‐render with spans | |
| diff.forEach(part => { | |
| const span = document.createElement('span'); | |
| span.textContent = part.value; | |
| if (part.added) span.classList.add('diff-ins'); | |
| if (part.removed) span.classList.add('diff-del'); | |
| corrEl.appendChild(span); | |
| }); | |
| } | |
| catch (e) { | |
| console.error('Diff rendering error:', e); | |
| } | |
| }); | |
| </script> | |
| <style> | |
| .diff-ins {border-bottom:2px solid #28a745; } | |
| .diff-del {text-decoration: line-through; color: #dc3545; } | |
| /* Custom styles */ | |
| .score-display { | |
| font-size: 1.2rem; | |
| font-weight: bold; | |
| } | |
| .score { | |
| color: #0d6efd; /* Changed to Bootstrap primary blue */ | |
| font-size: 1.5rem; | |
| } | |
| .text-truncate-multiline { | |
| display: -webkit-box; | |
| -webkit-line-clamp: 3; | |
| -webkit-box-orient: vertical; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| min-height: 4.5em; | |
| } | |
| .card { | |
| transition: transform 0.2s; | |
| } | |
| .card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 4px 15px rgba(13, 110, 253, 0.25); /* Primary blue shadow */ | |
| } | |
| </style> | |
| {% endblock %} |