lagde matpost nedtelling

This commit is contained in:
Trygve 2025-10-30 21:06:47 +01:00
parent 568c00ddd6
commit f2ede38dca
6 changed files with 141 additions and 0 deletions

View File

@ -33,6 +33,12 @@
<li class="disabled"><a href="/registrering.php">⏱️ Registrer passering matpost/mål</a></li>
<li class="disabled"><a href="/db_editor.html">👥 Endre løperbase</a></li>
<li class="disabled"><a href="/config_editor.html">⚙️ Konfigurasjon</a></li>
<li class="selected">⏳️ Nedtelling matpost
<menu>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=0">1. mat</a></li>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=1">2. mat</a></li>
</menu>
</li>
</menu>
</nav>
<button class="danger" onclick="log_out()">Logg ut</button>

50
api/countdown.php Normal file
View File

@ -0,0 +1,50 @@
<?php
$documentRoot = $_SERVER['DOCUMENT_ROOT'];
include("$documentRoot/import_runners.php");
function format($seconds) {
// Ensure it's an integer and non-negative
$seconds = max(0, (int)$seconds);
$minutes = floor($seconds / 60);
$remainingSeconds = $seconds % 60;
// Format with leading zeros (e.g., 02:05)
return sprintf('%02d:%02d', $minutes, $remainingSeconds);
}
$method = $_SERVER['REQUEST_METHOD'];
$time_limit = 240;
if ($method == "GET") {
parse_str($_SERVER['QUERY_STRING'], $query);
$control = $query['matpost'];
$runners = read_runners_from_csv();
usort($runners, "cmp");
$runners = array_reverse($runners);
$hourMin = date('H:i:s');
$waiting = "$hourMin
<h1>Tid igjen matpost:<h1><div class='flex wrap center'>";
$finished = "<h1>Kan løpe videre:<h1><div class='flex wrap center'>";
for ($i = 0; $i < count($runners); $i++) {
$runner = $runners[$i];
if ($runner->get_control() == $control){
$time_since_punch = time() - ($runner->splits[$control])->getTimestamp();
//Løperen har ikke venta 4 minutt:
if ($time_since_punch < $time_limit) {
$time = format($time_limit - $time_since_punch);
$waiting .= "<div class=\"flash attention\">$runner->id $runner->name <span class=\"time\">-$time</span></div>";
} elseif ($time_since_punch >= $time_limit && $time_since_punch <900){ //Løperen har venta ferdig
$time = format(time()-$runner->splits[$control]->getTimestamp() - $time_limit) ;
$finished .= "<div class=\"flash success\">$runner->id $runner->name <span class=\"time\">+$time</span></div>";
}
}
}
echo($waiting . "</div>". $finished . "</div>");
}

View File

@ -19,6 +19,12 @@
<li class="disabled"><a href="/registrering.php">⏱️ Registrer passering på matpost/mål</a></li>
<li class="disabled"><a href="/db_editor.html">👥 Endre løperbase</a></li>
<li class="selected"><a href="/config_editor.html">⚙️ Konfigurasjon</a></li>
<li class="selected">⏳️ Nedtelling matpost
<menu>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=0">1. mat</a></li>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=1">2. mat</a></li>
</menu>
</li>
</menu>
</nav>

View File

@ -19,6 +19,12 @@
<li class="disabled"><a href="/registrering.php">⏱️ Registrer passering på matpost/mål</a></li>
<li class="selected"><a href="/db_editor.html">👥 Endre løperbase</a></li>
<li class="disabled"><a href="/config_editor.html">⚙️ Konfigurasjon</a></li>
<li class="selected">⏳️ Nedtelling matpost
<menu>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=0">1. mat</a></li>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=1">2. mat</a></li>
</menu>
</li>
</menu>
</nav>
<h2>Legg til løper</h2>

67
matpost_nedtelling.php Normal file
View File

@ -0,0 +1,67 @@
<!DOCTYPE html>
<html lang="no">
<head>
<meta charset="UTF-8" />
<title>EKT admin</title>
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="description" content="Elektronisk Kadaver Tidtakningssystem" />
<link rel="icon" type="image/png" href="/img/favicon-96x96.png" sizes="96x96" />
<link rel="shortcut icon" href="/img/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png" />
<meta name="apple-mobile-web-app-title" content="Kadaver'n" />
<link rel="manifest" href="/img/site.webmanifest" />
<link rel="stylesheet" href="css/matcha.css">
<style>
body {
padding: 0;
margin: 0;
width: 100%;
max-width: 100%;
}
.ui {
padding: 0 1.5rem;
padding-top: 0px;
padding-right: 1.5rem;
padding-bottom: 0px;
padding-left: 1.5rem;
margin: 0 auto;
margin-top: 0px;
margin-right: auto;
margin-bottom: 0px;
margin-left: auto;
max-width: var(--ct-width);
}
.time {
font-size: 1.5em;
font-weight: bold;
}
.flash {
margin: 0.2em;
}
</style>
</head>
<body hx-ext="morph">
<nav class="ui">
<menu>
<li class="disabled"><a href="/admin.php">📊 Dashbord</a></li>
<li class="disabled"><a href="/registrering.php">⏱️ Registrer passering matpost/mål</a></li>
<li class="disabled"><a href="/db_editor.html">👥 Endre løperbase</a></li>
<li class="disabled"><a href="/config_editor.html">⚙️ Konfigurasjon</a></li>
<li class="selected">⏳️ Nedtelling matpost
<menu>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=0">1. mat</a></li>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=1">2. mat</a></li>
</menu>
</li>
</menu>
</nav>
<?php
parse_str($_SERVER['QUERY_STRING'], $query);
$control = $query['matpost'];
echo("<div hx-get='/api/countdown.php?matpost=$control' hx-trigger='load, every 1s' hx-swap='morph:innerHTML'></div>");
?>
<script src="/lib/htmx.min.js"></script>
<script src="https://unpkg.com/idiomorph@0.7.4/dist/idiomorph-ext.min.js" integrity="sha384-SsScJKzATF/w6suEEdLbgYGsYFLzeKfOA6PY+/C5ZPxOSuA+ARquqtz/BZz9JWU8" crossorigin="anonymous"></script>
</body>
</html>

View File

@ -53,6 +53,12 @@
<li class="selected"><a href="/registrering.php">⏱️ Registrer passering matpost/mål</a></li>
<li class="disabled"><a href="/db_editor.html">👥 Endre løperbase</a></li>
<li class="disabled"><a href="/config_editor.html">⚙️ Konfigurasjon</a></li>
<li class="selected">⏳️ Nedtelling matpost
<menu>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=0">1. mat</a></li>
<li><a href="http://localhost:8000/matpost_nedtelling.php?matpost=1">2. mat</a></li>
</menu>
</li>
</menu>
</nav>
<fieldset>