From: CMDR furrycat Date: Tue, 7 Jun 2016 13:21:26 +0000 (-0400) Subject: Correct value for vertical-align. X-Git-Url: http://git.furryclan.net/?a=commitdiff_plain;h=2605bdd8b5df4ca3103ea9a3286e474446ab5e15;p=furrycat%2Frace-o-matic.git Correct value for vertical-align. --- diff --git a/entry.js b/entry.js index 086a300..e62e49a 100644 --- a/entry.js +++ b/entry.js @@ -1,3 +1,6 @@ +var waypoints = 0; +var omitted_optional = 0; + /* Get the table element. */ function get_table() { var div = document.getElementById('laps'); @@ -72,6 +75,14 @@ function finish_line(table, i) { return has_class(table.rows[i].cells[0], 'finish_line'); } +/* Is this station optional? */ +function optional(table, i) { + if (! omitted_optional) return false; + if (i == last_row(table)) return false; + if (i < last_row(table) - omitted_optional) return false; + return true; +} + /* Get name of (station, lap) pair. */ function get_cell_name(i, j) { return 'lap' + String(j) + 'station' + String(i); @@ -631,6 +642,9 @@ function validate(table, cloned) { var input = get_cell_input(i, j); if (! input) continue; input.setCustomValidity(""); + /* Last row is mandatory. Others may be optional. */ + if (optional(table, i)) input.style.backgroundImage = 'repeating-linear-gradient(-30deg, transparent, rgba(32, 128, 160, 0.25) 8px, rgba(32, 128, 160, 0.25) 8px, transparent 16px)'; + else input.style.backgroundImage = 'inherit'; input.style.color = 'inherit'; } } @@ -648,6 +662,7 @@ function validate(table, cloned) { var all_stations_visited = true; /* Ensure station times are sequential. */ for (var i = first_row(table); valid_row(table, i); i++) { + if (optional(table, i)) continue; var input = get_cell_input(i, j); var text = input.value; if (text.match(input.pattern)) { @@ -678,6 +693,7 @@ function validate(table, cloned) { for (var i = first_row(table); valid_row(table, i); i++) { var input = get_cell_input(i, j); if (input.value.match(input.pattern)) continue; + if (optional(table, i)) continue; input.setCustomValidity('Lap ' + String(lap) + ' incomplete'); break; } @@ -700,12 +716,14 @@ function validate(table, cloned) { for (var i = last_row(table); valid_row(table, i); i--) { var input = get_cell_input(i, j); if (! input.value.match(input.pattern)) continue; + if (optional(table, i)) continue; last = i; break; } for (var i = first_row(table); i < last; i++) { var input = get_cell_input(i, j); if (input.value.match(input.pattern)) continue; + if (optional(table, i)) continue; valid = false; /* First lap (only) can be reordered. */ if (j == first_column(table) && i > first_row(table) && i < last_row(table)) { @@ -727,6 +745,7 @@ function validate(table, cloned) { if (station_orders.length) { var stations = []; for (var i = first_row(table); valid_row(table, i); i++) { + if (optional(table, i)) continue; var station_id = get_station_id(table, i); if (station_id) stations.push(station_id); } @@ -736,7 +755,7 @@ function validate(table, cloned) { } else { /* Revalidate if row is reordered. */ - for (var i = first_row(table); valid_row(table, i); i++) { + for (var i = first_row(table); valid_row(table, i, omitted_optional); i++) { if (i == cloned) continue; if (reorder_row(table, i)) return validate(table); } @@ -975,6 +994,10 @@ function loaded() { var joker = get_joker(); if (joker) joker.addEventListener('change', changed_joker, true); if (typeof distances != 'undefined') update_raikogram(table); + var total_waypoints = last_row(table) - first_row(table); + if (typeof optional_waypoints == 'number' && optional_waypoints) waypoints = optional_waypoints; + else waypoints = total_waypoints; + omitted_optional = total_waypoints - waypoints - 1; validate(table); do_plot(table, document.getElementById('plot')); var stats = document.getElementById('stats').getElementsByTagName('table')[0]; diff --git a/lib/entry.php b/lib/entry.php index baf3d2b..8db27f3 100644 --- a/lib/entry.php +++ b/lib/entry.php @@ -140,6 +140,8 @@ if ($leg->getFinishLine()) $flags |= Course::FinishFlag(); $legs[$station_name] = array($flags, $station->getId(), $system_id, $leg->getStationOrder()); } + $waypoints = $race->getWaypoints(); + if (! $waypoints) $waypoints = count($station_order); uasort($legs, 'sort_legs'); $system_ids = array_unique($system_ids); $rq = new RaikogramQuery; @@ -156,6 +158,7 @@ echo "