function showBody($eventId) { #---------------------------------------------------------------------- #--- Get the data $rows = dbQuery("\n SELECT personId, personName, min(value1+value2+value3) minSum, count(*) means, 0 minSum2, 0 means2\n FROM Results\n WHERE eventId = '{$eventId}' and (value1>0)+(value2>0)+(value3>0) = 3\n GROUP BY personId\n ORDER BY minSum, personName\n "); $also2 = $eventId == '444bf' || $eventId == '555bf'; if ($also2) { $rows = array_merge($rows, dbQuery("\n SELECT personId, personName, 0 minSum, 0 means, min(greatest(0,value1)+greatest(0,value2)+greatest(0,value3)) minSum2, count(*) means2\n FROM Results\n WHERE eventId = '{$eventId}' and (value1>0)+(value2>0)+(value3>0) = 2\n GROUP BY personId\n ORDER BY minSum2, personName\n ")); } #--- Output the table header TableBegin('results', 7); TableHeader(array('Pos', 'Name', 'Best Mean', 'Means', $also2 ? 'Best 2-Mean' : '', $also2 ? '2-Means' : '', ''), array('class="r"', 'class="p"', 'class="r"', 'class="r"', 'class="r"', 'class="r"', 'class="f"')); #--- Output the table contents $listed = array(); $pos = 0; foreach ($rows as $row) { list($personId, $personName, $minSum, $means, $minSum2, $means2) = $row; if (!isset($listed[$personId])) { $mean = formatValue(round($minSum / 3)); $mean2 = formatValue(round($minSum2 / 2)); TableRow(array(++$pos, personLink($personId, $personName), $mean, $means, $mean2, $means2, '')); } $listed[$personId] = true; } #--- Output the table end TableEnd(); }
function addList($list, $legacyId) { #---------------------------------------------------------------------- $competitions = readDatabaseTableWithId('Competitions'); list($id, $title, $subtitle, $columnDefs, $rows) = $list; $info = isset($list[5]) ? $list[5] : ''; #--- From column definitions like "[P] Person [N] Appearances [T] | [P] Person [N] Appearances" #--- extract classes and names like: #--- ('P', 'N', 'T', 'P', 'N', 'f') #--- ('Person', 'Appearances, ' | ', 'Person', 'Appearances', ' ') $columnDefs = "{$columnDefs} [f] "; $columnDefs = preg_replace('/\\|/', ' | ', $columnDefs); preg_match_all('/\\[(\\w+)\\]\\s*([^[]*[^[ ])/', $columnDefs, $matches); $columnClasses = $matches[1]; $columnNames = $matches[2]; $ctr = 0; foreach ($columnClasses as $class) { if ($class == 'P') { } elseif ($class == 'E') { } elseif ($class == 'C') { } elseif ($class == 't') { } elseif ($class == 'T') { $attributes[$ctr] = 'class="L"'; } elseif ($class == 'N') { $attributes[$ctr] = 'class="R2"'; } elseif ($class == 'n') { $attributes[$ctr] = 'class="r"'; } elseif ($class == 'R') { $attributes[$ctr] = 'class="R2"'; } elseif ($class == 'r') { $attributes[$ctr] = 'class="r"'; } elseif ($class == 'f') { $attributes[$ctr] = 'class="f"'; } else { showErrorMessage("Unknown column type <b>'</b>{$class}<b>'</b>"); } $ctr++; } if ($subtitle) { $subtitle = "<span style='color:#999'>({$subtitle})</span>"; } if ($info) { $info = htmlEntities($info, ENT_QUOTES); $info = "(<a title='{$info}' style='color:#FC0' onclick='alert(\"{$info}\")'>info</a>)"; } $columnCount = count($columnNames); echo "<div id='{$id}'>\n"; TableBegin('results', $columnCount); TableCaptionNew(false, $legacyId, "{$title} {$subtitle} {$info}"); TableHeader($columnNames, $attributes); #--- Display the table. $rowCtr = 0; foreach ($rows as $row) { $values = array(); $numbers = ''; # array_unshift( $row, 0 ); # foreach( $row as $key => $value ){ foreach (range(0, $columnCount - 2) as $i) { $value = $row[$i]; $Class = ucfirst($columnClasses[$i]); if ($Class == 'P' && $value) { $value = personLink($value, extractRomanName(currentPersonName($value))); } if ($Class == 'E') { $value = eventLink($value, eventCellName($value)); } if ($Class == 'C') { $value = competitionLink($value, $competitions[$value]['cellName']); } if ($Class == 'R') { $value = formatValue($value, isset($row['eventId']) ? valueFormat($row['eventId']) : 'time'); } $values[] = $value; if ($Class == 'N') { $numbers .= "{$value}|"; } } #--- Add the rank. $rowCtr++; $rank = isset($prevNumbers) && $numbers == $prevNumbers ? '' : $rowCtr; ### $rank = $rowCtr; $prevNumbers = $numbers; # $values[0] = $rank; #--- Add the filler column cell. $values[] = ''; #--- Show the row. TableRow($values); } TableEnd(); echo "</div>\n"; }