UI: upload panel — POST /jobs with live status polling

Adds a "+ wgraj" control to the sidebar that uploads an ISO/ZIP/DLL to the
acquisition endpoint and tracks the job to completion, then refreshes the
version list so the new snapshot appears without a reload.

- index.html: upload form + #jobs panel in the sidebar
- app.js: submitUpload() (FormData → POST /jobs), pollJobs() (2.5s while any
  job is queued/started; finished → load(); failed → inline error)
- style.css: mini-btn / upload form / job rows + queued/started badges

Verified: node --check clean; uvicorn serves /ui assets 200 and GET /jobs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Patryk Gensch
2026-05-31 12:28:35 +02:00
parent f4aa7caaa9
commit 30b2b1011e
4 changed files with 133 additions and 2 deletions

View File

@@ -14,7 +14,19 @@
<div class="layout">
<aside id="sidebar" class="sidebar">
<div class="panel-title">Gry / wersje</div>
<div class="panel-title">
Gry / wersje
<button id="upload-toggle" class="mini-btn" title="Wgraj grę (ISO / ZIP / DLL)">+ wgraj</button>
</div>
<form id="upload-form" class="upload" hidden>
<input type="file" id="upload-file" required>
<input type="text" id="upload-game" class="owner" placeholder="nazwa gry (opcjonalnie)" autocomplete="off">
<button type="submit" id="upload-submit" class="compare">Wyślij do analizy</button>
<div id="upload-msg" class="upload-msg"></div>
</form>
<div id="jobs" class="jobs"></div>
<div id="games" class="games"></div>
</aside>