La til sortering

This commit is contained in:
Trygve 2024-10-08 21:40:46 +02:00
parent 426ebd189c
commit 6c5adf546c

View File

@ -29,6 +29,17 @@ class Runner
{ {
$this->splits[$control] = $timestamp; $this->splits[$control] = $timestamp;
} }
function get_control()
{
// Returns wich control the runner last passed
for ($i = 0; $i < count($this->splits); $i++) {
if (!is_object($this->splits[$i])) {
return $i-1;
}
}
return count($this->splits)-1;
}
} }
//find runner by id in list of Runner objects //find runner by id in list of Runner objects
@ -42,6 +53,30 @@ function get_runner($runnner_list, int $id)
return false; return false;
} }
function cmp(Runner $a, Runner $b) {
$a_control = $a->get_control();
$b_control = $b->get_control();
if ($a_control > $b_control){
return -1;
}
if ($a_control < $b_control){
return 1;
}
if ($a_control == -1) {
return 1;
}
if ($b_control == -1) {
return -1;
}
if ($a->splits[$a_control]->getTimestamp() < $b->splits[$b_control]->getTimestamp()){
return -1;
}
if ($a->splits[$a_control]->getTimestamp() > $b->splits[$b_control]->getTimestamp()){
return 1;
}
return 0;
}
$runners = []; $runners = [];
$csv_runners = file_get_contents("db.csv"); $csv_runners = file_get_contents("db.csv");
$csv_runners = str_getcsv($csv_runners, "\n"); $csv_runners = str_getcsv($csv_runners, "\n");
@ -72,7 +107,15 @@ for ($i = 0; $i < count($timings); $i++) {
$runner->set_split($line[0]-1, $time); $runner->set_split($line[0]-1, $time);
} }
//print_r($runners); usort($runners, "cmp");
echo(" <tr>
<th>#</th>
<th>Startnummer</th>
<th>Navn</th>
<th>1. matpost</th>
<th>2. matpost</th>
<th>Mål</th>
</tr>");
for ($i = 0; $i < count($runners); $i++) { for ($i = 0; $i < count($runners); $i++) {
$runner = $runners[$i]; $runner = $runners[$i];
$tid_1_mat = ""; $tid_1_mat = "";
@ -82,13 +125,11 @@ for ($i = 0; $i < count($runners); $i++) {
} }
$tid_2_mat = ""; $tid_2_mat = "";
if ($runner->splits[1] != false) { if ($runner->splits[1] != false) {
// https://www.php.net/manual/en/class.dateinterval.php
$tid_2_mat = $GLOBALS['start_time']->diff($runner->splits[1])->format('%H:%I:%S'); $tid_2_mat = $GLOBALS['start_time']->diff($runner->splits[1])->format('%H:%I:%S');
} }
$tid_maal = ""; $tid_maal = "";
if ($runner->splits[2] != false) { if ($runner->splits[2] != false) {
// https://www.php.net/manual/en/class.dateinterval.php
$tid_maal = $GLOBALS['start_time']->diff($runner->splits[2])->format('%H:%I:%S'); $tid_maal = $GLOBALS['start_time']->diff($runner->splits[2])->format('%H:%I:%S');
} }
echo ("<tr><td>$runner->id</td><td>$runner->name</td><td>$tid_1_mat</td><td>$tid_2_mat</td><td>$tid_maal</td></tr>"); echo ("<tr><td>". $i+1 .".</td><td>$runner->id</td><td>$runner->name</td><td>$tid_1_mat</td><td>$tid_2_mat</td><td>$tid_maal</td></tr>\n");
} }