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>
54 lines
1.9 KiB
HTML
54 lines
1.9 KiB
HTML
<!doctype html>
|
|
<html lang="pl">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Aidem Media — Command Center</title>
|
|
<link rel="stylesheet" href="style.css">
|
|
</head>
|
|
<body>
|
|
<header class="topbar">
|
|
<div class="brand">⌖ Aidem Media <span>Command Center</span></div>
|
|
<div class="sub">Piklib / BlooMoo — analiza różnicowa powierzchni silnika</div>
|
|
</header>
|
|
|
|
<div class="layout">
|
|
<aside id="sidebar" class="sidebar">
|
|
<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>
|
|
|
|
<main class="main">
|
|
<div class="controls">
|
|
<div class="slots">
|
|
<span class="slot" id="slot-a">A: <em>—</em></span>
|
|
<span class="arrow">→</span>
|
|
<span class="slot" id="slot-b">B: <em>—</em></span>
|
|
</div>
|
|
<input id="owner" class="owner" placeholder="filtr klasy, np. CMC_Animo" autocomplete="off">
|
|
<span id="axes" class="axes"></span>
|
|
<button id="compare" class="compare" disabled>Porównaj A→B</button>
|
|
</div>
|
|
<div id="results" class="results">
|
|
<div class="hint">Wybierz dwie wersje (A i B) z panelu po lewej, a potem „Porównaj”.<br>
|
|
Kliknij nazwę wersji, by przejrzeć jej powierzchnię.</div>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
|
|
<script src="app.js"></script>
|
|
</body>
|
|
</html>
|