From 093fd69fb00c5c286449959f8a87d18f40b1fa35 Mon Sep 17 00:00:00 2001 From: CMDR furrycat Date: Tue, 9 Feb 2016 10:08:59 -0500 Subject: [PATCH] Graph entries per day. --- lib/race.php | 20 ++++++++++++++++++++ race.js | 7 +++++++ 2 files changed, 27 insertions(+) diff --git a/lib/race.php b/lib/race.php index 35f83db..2386383 100644 --- a/lib/race.php +++ b/lib/race.php @@ -538,6 +538,7 @@ echo "
\n"; echo "
\n"; echo "
\n"; + echo "
\n"; echo "
\n"; /* Sort options. */ @@ -838,6 +839,22 @@ $laps["fastest_laps"]["x"][] = "Lap " . $row["lap_number"]; $laps["fastest_laps"]["y"][] = (int) $row["n"]; } + /* Entries per day. */ + $raced_days = array(); + $show_raced_days = false; + $sth = $dbh->prepare("select cmdr_name, date_format(arrival, '%Y-%m-%d') as day, count(*) as n from competitor, ship, entry, laptime, lap where competitor.id=ship.competitor_id and ship.id=entry.ship_id and entry.id=lap.entry_id and laptime.lap_id=lap.id and station_order=1 and lap_number=1 and race_id=:race_id and entry.id in ($entry_list) group by cmdr_name, day order by day, cmdr_name"); + $sth->execute(array(":race_id" => $id)); + while ($row = $sth->fetch()) { + $cmdr_name = $row["cmdr_name"]; + $day = $row["day"]; + if (! array_key_exists($cmdr_name, $raced_days)) $raced_days[$cmdr_name] = array("x" => array(), "y" => array(), "name" => $cmdr_name, "text" => array(), "type" => "bar"); + $raced_days[$cmdr_name]["x"][] = $day; + $raced_days[$cmdr_name]["y"][] = (int) $row["n"]; + $raced_days[$cmdr_name]["text"][] = $cmdr_name; + if ($show_raced_days) continue; + if (count($raced_days[$cmdr_name]["x"]) > 1 || count(array_keys($raced_days)) > 1) $show_raced_days = true; + } + /* Time raced per competitor. */ uasort($time_raced, "by_raced"); foreach ($time_raced as $cmdr_name => $times) { for ($n = 0; $n < count($times); $n++) { @@ -857,6 +874,9 @@ if (count($laps["fastest_laps"]["x"]) > 1) echo "var laps = " . json_encode(array_values($laps)) . ";\n"; else echo "var laps = null;\n"; if (count($raced_times) && count($raced_times[0]["x"]) > 1) echo "var raced_times = " . json_encode(array_values($raced_times)) . ";\n"; + else echo "var raced_times = null;\n"; + if ($show_raced_days) echo "var raced_days = " . json_encode(array_values($raced_days)) . ";\n"; + else echo "var raced_days = null;\n"; echo "//-->\n"; } echo "
\n"; diff --git a/race.js b/race.js index a7e9ee2..1072e3f 100644 --- a/race.js +++ b/race.js @@ -174,6 +174,13 @@ function loaded() { title: 'Time raced', yaxis: { title: 'Time (s)' } }); + canvas = document.getElementById('plot_raced_days'); + if (canvas && raced_days) Plotly.plot(canvas, raced_days, { + barmode: 'stack', + title: 'Entries per day', + xaxis: { tickformat: '%b %e' }, + yaxis: { title: 'Entries' } + }); } document.onload = loaded(); -- 2.7.4