Show different columns in dashes.
authorCMDR furrycat <elite@furrycat.net>
Wed, 16 Mar 2016 08:13:52 +0000 (04:13 -0400)
committerCMDR furrycat <elite@furrycat.net>
Wed, 16 Mar 2016 08:13:52 +0000 (04:13 -0400)
lib/race.php

index 9d86f1c..7dbe4a8 100644 (file)
     }
   }
 
-  function entry_footer($race, $type) {
+  function entry_footer($race, $type, $one_entry) {
     $keys = array();
     foreach ($race->getPrizeKeys() as $p) {
       $keys[$p] = ucfirst($race->PrizeDescription($p));
     }
-    $rows = array(
-      'orange' => "Competitor's best non-prizewinning entry",
-      'blue' => "Competitor's other entries"
-    );
+    $rows = array();
+    $rows['orange'] = count($keys) ? "Competitor's best non-prizewinning entry" : "Competitor's best entry";
+    if (! $one_entry) $rows['blue'] = "Competitor's other entries";
     $endorsements = Entry::EndorsementKeys();
     asort($endorsements);
 
     return (array_key_exists($condition, $formats) && $formats[$condition][0] >= $formats[$format][0]);
   }
 
-  function show_entry($sort, $format, $entry, $allotted_time, $position, $rank, $ship_rank, $row, $type, $prize_name, $blue_count = 0, $white_count = 0) {
+  function show_entry($sort, $format, $entry, $allotted_time, $has_joker, $has_prizes, $position, $rank, $ship_rank, $row, $type, $prize_name, $blue_count = 0, $white_count = 0) {
     $fields = array();
     if ($sort == "start_time") $fields[] = elite_time($entry->getStartTime());
     else {
     $hull = $ship->getHull();
     $fields[] = array($ship->getName(), $ship->getLink());
     $fields[] = array($hull->getName(), $hull->getLink());
-    $fields[] = array(format_distance($entry->getTotalDistance()), $entry->getLink($entry->getTotalDistance()));
-    $fields[] = format_time($entry->getPenaltyTime());
-    $fields[] = format_distance($entry->getLapDistance());
-    $fields[] = $entry->getCompleteLaps();
-    if ($sort == 'penalty_distance') $fields[] = format_distance($entry->getTotalDistance() + (float) $entry->getPenaltyTime() / 2);
-    $bonus_time = $entry->getBonusTime();
-    $fields[] = ($allotted_time > 0) ? format_time($allotted_time + $bonus_time) : '';
-    $fields[] = ($bonus_time > 0) ? format_time($bonus_time) : '';
+    if ($allotted_time) $fields[] = array(format_distance($entry->getTotalDistance()), $entry->getLink($entry->getTotalDistance()));
+    if ($allotted_time || $has_joker) $fields[] = format_time($entry->getPenaltyTime());
+    if ($allotted_time) {
+      $fields[] = format_distance($entry->getLapDistance());
+      $fields[] = $entry->getCompleteLaps();
+      if ($sort == 'penalty_distance') $fields[] = format_distance($entry->getTotalDistance() + (float) $entry->getPenaltyTime() / 2);
+    }
+    if ($allotted_time || $has_joker) {
+      $bonus_time = $entry->getBonusTime();
+      $fields[] = ($allotted_time > 0) ? format_time($allotted_time + $bonus_time) : '';
+      $fields[] = ($bonus_time > 0) ? format_time($bonus_time) : '';
+    }
     $fields[] = format_time($entry->getRacedTime());
-    $fields[] = ($allotted_time > 0) ? format_time($entry->getTotalTime()) : '';
-    $fields[] = format_speed($entry->getBestSpeed());
-    $fields[] = format_speed($entry->getAverageSpeed());
-    $fields[] = format_time($entry->getFastestLap());
-    $fields[] = format_time($entry->getAverageLap());
-    $fields[] = (is_null($prize_name)) ? '' : ucfirst(Race::PrizeDescription($prize_name));
+    if ($allotted_time || $has_joker) $fields[] = ($allotted_time > 0) ? format_time($entry->getTotalTime()) : '';
+    if ($allotted_time) {
+      $fields[] = format_speed($entry->getBestSpeed());
+      $fields[] = format_speed($entry->getAverageSpeed());
+      $fields[] = format_time($entry->getFastestLap());
+      $fields[] = format_time($entry->getAverageLap());
+    }
+    if ($has_prizes) $fields[] = (is_null($prize_name)) ? '' : ucfirst(Race::PrizeDescription($prize_name));
 
     $formatting = array();
     if ($entry->usedDockingComputer()) $formatting[] = 'i';
       $filtered_entries = array();
       foreach (array('html', 'bbcode') as $type) {
         echo "<div class=\"$type\">\n";
-        $blue_fields = array('E', 'CMDR name', 'Forum name', 'Ship name', 'Ship type', 'Distance', 'Penalty');
+        $blue_fields = array('E', 'CMDR name', 'Forum name', 'Ship name', 'Ship type');
+        if ($allotted_time) $blue_fields = array_merge($blue_fields, array('Distance', 'Penalty'));
         if ($sort == "start_time") array_unshift($blue_fields, 'Start time');
         else {
           if ($format == "full") array_unshift($blue_fields, 'P');
           array_unshift($blue_fields, 'R', 'S');
         }
-        $white_fields = array('Lap distance', 'Laps');
-        if ($sort == 'penalty_distance') $white_fields[] = 'Total distance';
-        $white_fields = array_merge($white_fields, array('Allotted', 'Bonus', 'Raced', 'Total'));
-        $orange_fields = array('Best speed', 'Average speed', 'Fastest lap', 'Average lap', 'Award');
+        $white_fields = array();
+        $orange_fields = array();
+        if ($allotted_time) {
+          $white_fields = array_merge($white_fields, array('Lap distance', 'Laps'));
+          if ($sort == 'penalty_distance') $white_fields[] = 'Total distance';
+          $white_fields = array_merge($white_fields, array('Allotted', 'Bonus'));
+          $orange_fields = array_merge($orange_fields, array('Best speed', 'Average speed', 'Fastest lap', 'Average lap'));
+        }
+        $white_fields[] = 'Raced';
+        if ($allotted_time) $white_fields[] = 'Total';
+        if ($race->getPrizes()) $orange_fields[] = 'Award';
         entry_header($sort, $format, $type, $blue_fields, $white_fields, $orange_fields);
         $n = $position = $rank = 1;
         $shown = 0;
             if ($prizewinners_only) continue;
             if (! is_null($limit) && ++$shown > $limit) continue;
           }
-          show_entry($sort, $format, $entry, $allotted_time, $p, $r, $s, $n++, $type, $prize_name, count($blue_fields), count($white_fields));
+          show_entry($sort, $format, $entry, $allotted_time, null, $race->getPrizes(), $p, $r, $s, $n++, $type, $prize_name, count($blue_fields), count($white_fields));
           if ($filter) $filtered_entries[] = $entry;
         }
-        entry_footer($race, $type);
+        entry_footer($race, $type, filtered("competitors", $format, $formats));
         echo "</div>\n";
       }
       echo "</div>\n";