Add a live run submission workflow and admin moderation UI. - Add run.html: new page to submit runs (video, raw footage, notes) and show recent submissions. - Update admelist.html: admin overview plus run queue table for reviewing/approving/rejecting/deleting submissions. - Update app.js: client-side support for runs (load/refresh/caching, SSE "runs-update", admin review actions, run submission handling, and graceful fallback when no server is available). - Server changes: add server/runs.json, implement /api/runs (GET, POST) and /api/runs/:id (PUT, DELETE) in server/server.js, ensure runs file, emit runs-update events, broaden CORS, set BASE path (/fedl) and default port 8090. - Add styles for admin overview, run submission UI and submission cards in styles.css. - Update README with run/admin pages and example URLs, adjust start-server.command to use PORT=8090, and minor note in LINUX_SERVICE_SETUP.txt. Notes: live submission/review features require running the Node server; client falls back to static behavior when served from file:// or when server is unavailable.
95 lines
2.9 KiB
HTML
95 lines
2.9 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
<title>Edit List - GD fedl</title>
|
|
<link rel="stylesheet" href="styles.css">
|
|
</head>
|
|
<body data-page="admelist">
|
|
<header>
|
|
<h1>FEDL Admin</h1>
|
|
<nav>
|
|
<a href="index.html">Home</a>
|
|
<a href="lists.html">Lists</a>
|
|
<a href="run.html">Submit Run</a>
|
|
<a href="players.html">Players</a>
|
|
<a href="rules.html">Rules</a>
|
|
<a href="roulette.html">Roulette</a>
|
|
</nav>
|
|
</header>
|
|
<main class="admin-shell">
|
|
<section class="panel admin-overview-panel">
|
|
<div>
|
|
<p class="hero-kicker">Control Center</p>
|
|
<h2>Manage the live list and incoming runs</h2>
|
|
<p class="muted">Use the first panel to edit placements and the second panel to review new run submissions.</p>
|
|
</div>
|
|
<div class="admin-overview-badges">
|
|
<span>Live list editor</span>
|
|
<span>Run moderation</span>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="panel admin-panel">
|
|
<div class="admin-toolbar">
|
|
<div>
|
|
<p class="hero-kicker">List Editor</p>
|
|
<h2>Manage the live list</h2>
|
|
<p id="admin-status" class="muted">Loading list data...</p>
|
|
</div>
|
|
<div class="admin-actions">
|
|
<input id="admin-search" type="text" placeholder="Search rows..." />
|
|
<button id="add-row" type="button" class="btn ghost-btn">Add Row</button>
|
|
<button id="save-list" type="button" class="btn">Save List</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="table-wrap">
|
|
<table class="levels-table admin-table">
|
|
<thead>
|
|
<tr>
|
|
<th style="width:90px">#</th>
|
|
<th style="width:140px">Level</th>
|
|
<th>Title</th>
|
|
<th>Video URL</th>
|
|
<th style="width:120px">Delete</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="admin-list-body"></tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="panel admin-panel">
|
|
<div class="admin-toolbar">
|
|
<div>
|
|
<p class="hero-kicker">Run Queue</p>
|
|
<h2>Review submitted runs</h2>
|
|
<p id="runs-admin-status" class="muted">Loading run submissions...</p>
|
|
</div>
|
|
<div class="admin-actions">
|
|
<input id="run-search" type="text" placeholder="Search submissions..." />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="table-wrap">
|
|
<table class="levels-table admin-table">
|
|
<thead>
|
|
<tr>
|
|
<th style="width:130px">Status</th>
|
|
<th style="width:160px">Player</th>
|
|
<th>Level</th>
|
|
<th style="width:180px">Submitted</th>
|
|
<th style="width:240px">Actions</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="run-admin-body"></tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
<script src="app.js"></script>
|
|
</body>
|
|
</html>
|