File size: 3,897 Bytes
b0bcfd5 e3566c9 b0bcfd5 46811bc b0bcfd5 46811bc b0bcfd5 e3566c9 46811bc b0bcfd5 46811bc b0bcfd5 e4fd6e0 b0bcfd5 e4fd6e0 b0bcfd5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | {% extends "base.html" %}
{% block title %}Batch Processing β AI Medical Intelligence Pipeline{% endblock %}
{% block content %}
{% set display_total = batch.total if batch.total else (expected_total or 0) %}
<div class="batch-page"
data-batch-id="{{ batch_id }}"
data-status-url="{{ url_for('batch_status', batch_id=batch_id) }}"
data-cancel-url="{{ url_for('cancel_batch', batch_id=batch_id) }}"
data-reports-url="{{ url_for('reports') }}"
data-expected-total="{{ display_total }}">
<section class="breadcrumb">
<a href="{{ url_for('home') }}">Home</a>
<span class="sep">/</span>
<a href="{{ url_for('upload') }}">Upload</a>
<span class="sep">/</span>
<span>Batch {{ batch_id }}</span>
</section>
<section class="batch-header">
<h1 id="batchTitle">Processing Batch…</h1>
<p class="muted" id="batchSubtitle">
Analyzing {{ display_total }} DICOM file{{ 's' if display_total != 1 }} β please keep this page open.
</p>
<p class="muted" id="queueStatus">
{% if batch.queue_size is not none %}
Queue size: {{ batch.queue_size }}
{% endif %}
</p>
<div class="batch-header-actions">
<button type="button" class="btn btn-outline" id="cancelBatch">Cancel Batch</button>
</div>
</section>
<!-- ββ Progress bar ββββββββββββββββββββββββββββββββββββββββββββββββββ -->
<section class="panel batch-panel">
<div class="batch-stats-row">
<div class="batch-stat">
<span class="batch-stat-label">Total</span>
<span class="batch-stat-value" id="statTotal">{{ display_total }}</span>
</div>
<div class="batch-stat">
<span class="batch-stat-label">Processed</span>
<span class="batch-stat-value" id="statProcessed">0</span>
</div>
<div class="batch-stat accent-green">
<span class="batch-stat-label">Succeeded</span>
<span class="batch-stat-value" id="statSucceeded">0</span>
</div>
<div class="batch-stat accent-red">
<span class="batch-stat-label">Failed</span>
<span class="batch-stat-value" id="statFailed">0</span>
</div>
</div>
<div class="progress-track">
<div class="progress-fill" id="progressFill" style="width: 0%"></div>
</div>
<div class="progress-text">
<span id="progressPct">0%</span>
<span id="currentFile" class="muted"></span>
</div>
</section>
<!-- ββ Live feed of recent results βββββββββββββββββββββββββββββββββββ -->
<section class="panel" id="feedPanel" style="display: none">
<h3>Recent Results</h3>
<ul class="batch-feed" id="batchFeed"></ul>
</section>
<!-- ββ Completion summary (shown when done) ββββββββββββββββββββββββββ -->
<section class="panel batch-done-panel" id="donePanel" style="display: none">
<div class="batch-done-icon">
<svg width="48" height="48" viewBox="0 0 24 24" fill="none"
stroke="var(--green)" stroke-width="2">
<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14" />
<polyline points="22 4 12 14.01 9 11.01" />
</svg>
</div>
<h2>Batch Complete</h2>
<p class="muted" id="doneSummary"></p>
<div class="batch-done-actions">
<a href="{{ url_for('reports') }}" class="btn btn-primary">View Reports</a>
<a href="{{ url_for('upload') }}" class="btn">Upload More</a>
</div>
</section>
<!-- ββ Failed files (shown only if failures) βββββββββββββββββββββββββ -->
<section class="panel" id="failPanel" style="display: none">
<h3 class="text-red">Failed Files</h3>
<ul class="batch-fail-list" id="failList"></ul>
</section>
</div>
{% endblock %}
{% block scripts %}
<script src="{{ url_for('static', filename='js/batch.js') }}" defer></script>
{% endblock %}
|