NORUS2 / templates /NORUS.html
mabil's picture
Uploaded NORUS app files
af53f00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>NORUS Tool</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="{{ url_for('static', filename='js/script.js') }}"></script>
</head>
<body>
<header>
<div style="text-align: center; margin-top: 20px;">
<a href="#" id="logo-link">
<img id="logo" src="https://i.imgur.com/MT5Sl9h.png" alt="NORUS Logo" style="width: 150px;" />
</a>
</div>
<h1>NORUS Tool</h1>
<p>Analyze your PDF and discover originality and similarity</p>
</header>
<main>
<form id="analysisForm" action="/validate" method="POST" enctype="multipart/form-data" onsubmit="startProgress()">
<label for="analysis_type">Choose Analysis Type:</label>
<select name="analysis_type" id="analysis_type" required>
<option value="local">Local Comparison</option>
<option value="pubmed">PubMed Search</option>
</select>
<div id="pubmed-options" style="display: none;">
<label for="query">PubMed Query:</label>
<input type="text" name="query" id="query" />
<label for="year_start">Start Year:</label>
<input type="number" name="year_start" id="year_start" min="1900" max="2025" value="2000" />
<label for="year_end">End Year:</label>
<input type="number" name="year_end" id="year_end" min="1900" max="2025" value="2025" />
<label for="num_articles">Number of Articles:</label>
<input type="number" name="num_articles" id="num_articles" min="1" value="10" />
</div>
<div id="local-options" style="display: none;">
<label for="comparison_files">Upload comparison PDFs (select multiple):</label>
<input type="file" name="comparison_files" id="comparison_files" multiple />
</div>
<label for="pdf_file">Upload your main PDF:</label>
<input type="file" name="pdf_file" id="pdf_file" required />
<button type="submit">Analyze</button>
</form>
<div id="progress-container" style="display: none;">
<p style="text-align: center;">⏳ Analysis in progress...</p>
<div id="progress-bar">0%</div>
</div>
{% if results %}
<section>
<h2>Analysis Results</h2>
<table>
<thead>
<tr>
<th>Title</th>
<th>Semantic Similarity (%)</th>
<th>Token Overlap (%)</th>
<th>OUI (Originality & Uniqueness Index)</th>
</tr>
</thead>
<tbody>
{% for result in results %}
<tr>
<td style="max-width: 400px; word-wrap: break-word;">{{ result.title }}</td>
<td>{{ "%.2f"|format(result.similarity) }}</td>
<td>{{ "%.2f"|format(result.token_overlap) }}</td>
<td>{{ "%.2f"|format(result.oui) }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% if keywords %}
<div class="results" style="text-align: center; margin-top: 30px;">
<h3>πŸ”‘ Common Keywords</h3>
<p>
{% for kw, count in keywords %}
<span style="margin: 5px; font-weight: bold;">{{ kw }} ({{ count }})</span>
{% endfor %}
</p>
</div>
{% endif %}
<form action="/download_report" method="post" style="text-align: center; margin-top: 30px;">
<button type="submit">πŸ“„ Download PDF Report</button>
</form>
<div id="chart-container" style="margin-top: 50px;">
<canvas id="similarityChart"></canvas>
</div>
</section>
{% endif %}
</main>
<footer><p>&copy; 2025 NORUS Tool. All rights reserved.</p></footer>
<script>
document.addEventListener("DOMContentLoaded", function() {
const analysisType = document.getElementById("analysis_type");
const pubmedOptions = document.getElementById("pubmed-options");
const localOptions = document.getElementById("local-options");
function toggleOptions() {
if (analysisType.value === "pubmed") {
pubmedOptions.style.display = "block";
localOptions.style.display = "none";
} else {
pubmedOptions.style.display = "none";
localOptions.style.display = "block";
}
}
analysisType.addEventListener("change", toggleOptions);
toggleOptions();
});
</script>
{% if results %}
<script>
new Chart(document.getElementById('similarityChart'), {
type: 'bar',
data: {
labels: {{ results | map(attribute='title') | list | safe }},
datasets: [
{
label: 'Semantic Similarity (%)',
data: {{ results | map(attribute='similarity') | list | safe }},
backgroundColor: 'rgba(54, 162, 235, 0.7)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1
},
{
label: 'Token Overlap (%)',
data: {{ results | map(attribute='token_overlap') | list | safe }},
backgroundColor: 'rgba(255, 159, 64, 0.7)',
borderColor: 'rgba(255, 159, 64, 1)',
borderWidth: 1
},
{
label: 'OUI (%)',
data: {{ results | map(attribute='oui') | list | safe }},
backgroundColor: 'rgba(153, 102, 255, 0.7)',
borderColor: 'rgba(153, 102, 255, 1)',
borderWidth: 1
}
]
},
options: {
responsive: true,
plugins: {
legend: { position: 'top' },
tooltip: { mode: 'index', intersect: false }
},
scales: {
y: { beginAtZero: true },
x: {
ticks: {
autoSkip: false,
maxRotation: 45,
minRotation: 45
}
}
}
}
});
</script>
{% endif %}
</body>
</html>