+<script src="plotly-latest.min.js"></script>
<h2>Races</h2>
<?php
return $ret;
}
+ function pull($values) {
+ $ret = array();
+ $max = 0;
+ foreach ($values as $value) {
+ $ret[] = 0;
+ if ($value < $max) continue;
+ $max = $value;
+ }
+ for ($i = 0; $values[$i]; $i++) {
+ if ($values[$i] == $max) $ret[$i] = 0.2;
+ }
+ return $ret;
+ }
+
function module_race($action) {
if ($_POST['add_race']) {
if (add_race($_POST["name"], $_POST["allotted_time"])) unset($_POST);
echo "<p>" . $race->getLink() . "</p>\n";
continue;
}
- if (! count($entries)) {
+ if (count($entries)) {
+ $prizewinners = find_prizewinners($entries, $allotted_time);
+ $plots = array(
+ "cmdr" => array(
+ "values" => array(),
+ "labels" => array(),
+ "text" => "By pilot",
+ "textinfo" => "label+percent",
+ "name" => "CMDR",
+ "scalegroup" => "entries",
+ "type" => "pie",
+ "domain" => array(
+ "x" => array(0, .23),
+ "y" => array(0, .48)
+ )
+ ),
+ "hull" => array(
+ "values" => array(),
+ "labels" => array(),
+ "name" => "Ship",
+ "text" => "By ship",
+ "textinfo" => "label+percent",
+ "scalegroup" => "entries",
+ "type" => "pie",
+ "domain" => array(
+ "x" => array(.61, .73),
+ "y" => array(0, .48)
+ )
+ ),
+ "lap_distance" => array(
+ "values" => array(),
+ "labels" => array(),
+ "name" => "Lap distance",
+ "text" => "By lap distance",
+ "textinfo" => "label+percent",
+ "scalegroup" => "entries",
+ "type" => "pie",
+ "domain" => array(
+ "x" => array(.35, .48),
+ "y" => array(.51, 1)
+ )
+ ),
+ "lap_count" => array(
+ "values" => array(),
+ "labels" => array(),
+ "name" => "Complete laps",
+ "text" => "By lap count",
+ "textinfo" => "label+percent",
+ "scalegroup" => "entries",
+ "type" => "pie",
+ "domain" => array(
+ "x" => array(.75, 1),
+ "y" => array(.51, 1)
+ )
+ )
+ );
+ $cmdrs = array();
+ $hulls = array();
+ $lap_counts = array();
+ $lap_distances = array();
+ foreach ($entries as $entry) {
+ $ship = $entry->getShip();
+ $cmdr_name = $ship->getCompetitor()->getCmdrName();
+ $hull_name = $ship->getHull()->getName();
+ $lap_count = $entry->getCompleteLaps();
+ $lap_count = sprintf("%d lap%s", $lap_count, ($lap_count == 1) ? "" : "s");
+ $lap_distance = format_distance($entry->getLapDistance()) . "Ly";
+ if (! in_array($cmdr_name, array_keys($cmdrs))) $cmdrs[$cmdr_name] = 0;
+ $cmdrs[$cmdr_name]++;
+ if (! in_array($hull_name, array_keys($hulls))) $hulls[$hull_name] = 0;
+ $hulls[$hull_name]++;
+ if (! in_array($lap_count, array_keys($lap_counts))) $lap_counts[$lap_count] = 0;
+ $lap_counts[$lap_count]++;
+ if (! in_array($lap_distance, array_keys($lap_distances))) $lap_distances[$lap_distance] = 0;
+ $lap_distances[$lap_distance]++;
+ }
+ foreach ($cmdrs as $cmdr_name => $count) {
+ $plots["cmdr"]["values"][] = $count;
+ $plots["cmdr"]["labels"][] = $cmdr_name;
+ }
+ $plots["cmdr"]["pull"] = pull($plots["cmdr"]["values"]);
+ foreach ($hulls as $hull_name => $count) {
+ $plots["hull"]["values"][] = $count;
+ $plots["hull"]["labels"][] = $hull_name;
+ }
+ $plots["hull"]["pull"] = pull($plots["hull"]["values"]);
+ foreach ($lap_counts as $lap_count => $count) {
+ $plots["lap_count"]["values"][] = $count;
+ $plots["lap_count"]["labels"][] = $lap_count;
+ }
+ $plots["lap_count"]["pull"] = pull($plots["lap_count"]["values"]);
+ foreach ($lap_distances as $lap_distance => $count) {
+ $plots["lap_distance"]["values"][] = $count;
+ $plots["lap_distance"]["labels"][] = $lap_distance;
+ }
+ $plots["lap_distance"]["pull"] = pull($plots["lap_distance"]["values"]);
+ echo "<script type=\"text/javascript\"><!--\n";
+ echo "var pies = " . json_encode(array_values($plots)) . ";\n";
+ echo "//--></script>\n";
+ }
+ else {
echo "<p>No entries.</p>\n";
continue;
}
- $prizewinners = find_prizewinners($entries, $allotted_time);
echo "<h3>$name</h3>\n";
+ echo "<div id=\"plot\"></div>\n";
echo "<div class=\"classification\">\n";
foreach (array('html', 'bbcode') as $type) {
echo "<div class=\"$type\">\n";