Admin: Datum und Uhrzeit der Server-Anforderung anzeigen

This commit is contained in:
mregosar committed 2026-10-29 13:54:45 +01:00
1 parent 3040124b33
commit f022673c4d
2 files changed
+19 -6

No files matched your search

+15 -4
View File
@@ -298,11 +298,18 @@ function MatchAdminCard({ m, run, busy, token, reload, setNotice }) {
{current.live?.roundsPlayed != null && <span className="muted">Runde {current.live.roundsPlayed + 1}</span>} {current.live?.roundsPlayed != null && <span className="muted">Runde {current.live.roundsPlayed + 1}</span>}
</div> </div>
)} )}
{m.server?.address && m.server.status !== 'stopped' && ( {m.server && (m.server.requestedAt || (m.server.address && m.server.status !== 'stopped')) && (
<div className="admin-address"> <div className="admin-address">
<span><span className="muted">Server</span> <code>{m.server.address.host}:{m.server.address.port}</code></span> {m.server.address && m.server.status !== 'stopped' && (
{m.server.address.tvPort && ( <>
<span><span className="muted">CSTV</span> <code>{m.server.address.host}:{m.server.address.tvPort}</code></span> <span><span className="muted">Server</span> <code>{m.server.address.host}:{m.server.address.port}</code></span>
{m.server.address.tvPort && (
<span><span className="muted">CSTV</span> <code>{m.server.address.host}:{m.server.address.tvPort}</code></span>
)}
</>
)}
{m.server.requestedAt && (
<span><span className="muted">Angefordert</span> {formatDateTime(m.server.requestedAt)}</span>
)} )}
</div> </div>
)} )}
@@ -686,3 +693,7 @@ function DockerHostsPanel({ token, setNotice }) {
</section> </section>
); );
} }
/** Datum und Uhrzeit auf Deutsch, z. B. 29.10.2026, 12:54 Uhr */
function formatDateTime(ms) {
return `${new Date(ms).toLocaleString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' })} Uhr`;
}
+4 -2
View File
@@ -956,8 +956,10 @@ export class MatchService extends EventEmitter {
updatedAt: row.updated_at, updatedAt: row.updated_at,
idleTimeoutMinutes: this.config.idleTimeoutMinutes, idleTimeoutMinutes: this.config.idleTimeoutMinutes,
}; };
if (viewer.isOrganizer && row.host) { if (viewer.isOrganizer) {
view.address = { host: row.host, port: row.port, tvPort: row.tv_port }; // Zeitpunkt der letzten Anforderung (neuer Start oder "Server neu starten / wiederholen")
view.requestedAt = row.started_at ?? null;
if (row.host) view.address = { host: row.host, port: row.port, tvPort: row.tv_port };
} }
const configured = row.status === 'configured'; const configured = row.status === 'configured';
if (!configured || viewer.role === 'public') return view; if (!configured || viewer.role === 'public') return view;