-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6d6ff75
commit ba94074
Showing
3 changed files
with
277 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
import {Tabulator, FormatModule, InteractionModule, ResizeColumnsModule, ResizeTableModule, SortModule, FilterModule} from 'tabulator-tables'; | ||
Tabulator.registerModule([ FormatModule, InteractionModule, ResizeColumnsModule, ResizeTableModule, SortModule, FilterModule]); | ||
import {formatDuration} from "./common.js"; | ||
|
||
|
||
|
||
export class RelayResultsTable extends HTMLElement { | ||
constructor(data) { | ||
super(); | ||
this._data = data | ||
this.table = null | ||
} | ||
|
||
initialize(data, exchanges){ | ||
this._data = data | ||
|
||
let exchangeColumns = [] | ||
// Iterate key value pairs of exchanges to create columns | ||
for (const [exchangeCode, name] of Object.entries(exchanges)) { | ||
exchangeColumns.push({title: name, field: `exchangeTimes.${exchangeCode}`, resizable: false, formatter: cell => formatDuration(cell.getValue(), true)}) | ||
} | ||
|
||
let view | ||
return new Promise((resolve, reject) => { | ||
this.innerHTML = ` | ||
<div class="results-table"></div> | ||
`; | ||
view = new Tabulator(this.querySelector(".results-table"), { | ||
reactiveData: true, | ||
data: this._data, | ||
layout: "fitData", | ||
responsiveLayout: false, | ||
columns: [ | ||
{title: "Name", field: "name", resizable: false}, | ||
...exchangeColumns | ||
] | ||
}) | ||
|
||
this.table = view | ||
}) | ||
|
||
} | ||
|
||
|
||
} | ||
window.customElements.define('relay-results-table', RelayResultsTable); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,6 +6,7 @@ | |
- /lrr24/ | ||
team_registration_link: https://forms.gle/9DLctNws7jWC3WyU6 | ||
registration_link: https://forms.gle/qW7xTJui9zkUAsDKA | ||
email_list_link: https://forms.gle/fb9ybhSnQV8dgDsr9 | ||
--- | ||
<!DOCTYPE html> | ||
<html lang="en" data-bs-theme="dark"> | ||
|
@@ -26,22 +27,21 @@ | |
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/15.7.1/nouislider.min.css" integrity="sha512-qveKnGrvOChbSzAdtSs8p69eoLegyh+1hwOMbmpCViIwj7rn4oJjdmMvWOuyQlTOZgTlZA0N2PXA7iA8/2TUYA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> | ||
|
||
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tabulator-tables/5.5.2/css/tabulator.min.css" integrity="sha512-HdUIebGeOK7s+At/fOnnbX8vsz6Cl1KTeiRlBiQABTMSqw7kZRCxGiUnuF9lr+1xz5y8pL7jkCR+NNtVVkEqKg==" crossorigin="anonymous" referrerpolicy="no-referrer" /> | ||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tabulator-tables/5.5.2/css/tabulator_bootstrap5.min.css" integrity="sha512-904y6HHQyQS2fAyIQ869rH3AAkxZeFuxo9vheji5zw+IPEyioMWN4Bt/VFhzO5edPZ9m1lwkpYgXcYcm1vzaFw==" crossorigin="anonymous" referrerpolicy="no-referrer" /> | ||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/tabulator.min.css" integrity="sha256-pG2AUZRMdFyuinl2tPudk9iU0gh2pFIcxPbwNc/vUuo=" crossorigin="anonymous"> | ||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/tabulator_bootstrap5.min.css" integrity="sha256-H1gQqBIR3L9enXuoNfFASj+QdGSEQIAloT7c4FXjNzc=" crossorigin="anonymous"> | ||
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.2/photoswipe.min.css" integrity="sha512-LFWtdAXHQuwUGH9cImO9blA3a3GfQNkpF2uRlhaOpSbDevNyK1rmAjs13mtpjvWyi+flP7zYWboqY+8Mkd42xA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> | ||
<link rel="stylesheet" href="https://unpkg.com/[email protected].0/dist/maplibre-gl.css"> | ||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected].1/dist/maplibre-gl.css" integrity="sha256-V2sIX92Uh6ZaGSFTKMHghsB85b9toJtmazgG09AI2uk=" crossorigin="anonymous"> | ||
<script type="importmap"> | ||
{ | ||
"imports": { | ||
"d3": "https://cdn.jsdelivr.net/npm/[email protected]/+esm", | ||
"maplibre-gl": "https://unpkg.com/[email protected].0/dist/maplibre-gl.js", | ||
"maplibre-gl": "https://cdn.jsdelivr.net/npm/[email protected].1/dist/maplibre-gl.js", | ||
"masonry-layout": "https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js", | ||
"noUiSlider": "https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/15.7.1/nouislider.min.mjs", | ||
"photoswipe": "https://cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.2/photoswipe.esm.min.js", | ||
"photoswipe-lightbox": "https://cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.2/photoswipe-lightbox.esm.min.js", | ||
"tabulator-tables": "https://cdnjs.cloudflare.com/ajax/libs/tabulator-tables/6.1.0/js/tabulator_esm.min.js", | ||
"tabulator-tables": "https://cdn.jsdelivr.net/npm/tabulator-tables@6.3.0/dist/js/tabulator_esm.js", | ||
"@turf": "https://cdn.jsdelivr.net/npm/@turf/[email protected]/+esm", | ||
"@popperjs/core": "https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.11.8/esm/popper.min.js", | ||
"bootstrap": "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.esm.min.js" | ||
|
@@ -581,11 +581,12 @@ | |
<p>Ultra relay along Seattle's Link Light Rail by <a href="{{ site.baseurl }}/" class="fst-italic text-decoration-none">Race Condition Running</a>. <br/>08:30 September 28th</p> | ||
<div class="gap-2 d-flex flex-wrap"> | ||
|
||
<a href="{{ page.registration_link }}" class="btn btn-outline btn-outline-primary btn-lg" data-bs-toggle="tooltip" data-bs-title="by 9-26" data-bs-placement="bottom">Join Team | ||
</a> | ||
<a href="{{ page.team_registration_link }}" class="btn btn-outline btn-outline-primary btn-lg" data-bs-toggle="tooltip" data-bs-title="by 9-24" data-bs-placement="bottom">Add Team</a> | ||
<a href="{{ page.team_registration_link }}" class="btn btn-outline btn-outline-primary btn-lg" data-bs-toggle="tooltip" data-bs-title="by 9-24" data-bs-placement="bottom">Enter Solo</a> | ||
|
||
<!--a href="{{ page.registration_link }}" class="btn btn-outline btn-outline-primary btn-lg" data-bs-toggle="tooltip" data-bs-title="by 9-26" data-bs-placement="bottom">Join Team | ||
</a--> | ||
<!--a href="{{ page.team_registration_link }}" class="btn btn-outline btn-outline-primary btn-lg" data-bs-toggle="tooltip" data-bs-title="by 9-24" data-bs-placement="bottom">Add Team</a--> | ||
<!--a href="{{ page.team_registration_link }}" class="btn btn-outline btn-outline-primary btn-lg" data-bs-toggle="tooltip" data-bs-title="by 9-24" data-bs-placement="bottom">Enter Solo</a--> | ||
|
||
<a href="#results" class="btn btn-outline btn-outline-primary btn-lg">Results</a> | ||
<!--a href="#epilogue" class="btn btn-outline btn-outline-primary btn-lg">Read Epilogue</a--> | ||
|
||
|
||
|
@@ -609,6 +610,9 @@ | |
|
||
<section> | ||
<div class="container pb-4 mb-4"> | ||
<div class="alert alert-secondary" role="alert"> | ||
Interested in running the next LRR? <a href="{{ page.email_list_link }}">Register for an email</a>. | ||
</div> | ||
<div class="d-flex flex-column flex-sm-row justify-content-between align-items-baseline"> | ||
<h2 id="route">Route <a href="#route" class="anchor-link" aria-label="Link to this section. Route"></a></h2> | ||
<a href="#" class="btn btn-outline-primary mb-3 m-sm-0 " id="download-route-gpx-btn" hidden>Download Route GPX</a> | ||
|
@@ -844,6 +848,23 @@ <h4 id="faq-rcr">RCR Team <a href="#faq-rcr" class="anchor-link" aria-label="Lin | |
<h2 id="relay-day">Relay Day</h2> | ||
<p>Team captains are your main point of contact. Here are the emails they've been sent:</p> | ||
<accordion-group class="accordion accordion-flush" id="briefs"> | ||
<accordion-item> | ||
<accordion-header>Debrief - 9/28/24</accordion-header> | ||
<accordion-body> | ||
<body> | ||
<p>LRR24 Captains,<br/> | ||
I got to chat with many of you and team and heard lots of positive feedback. If you have or hear other ideas or less-positive feedback, please share. The event will continue to evolve, especially as the Link system grows.</p> | ||
|
||
<p>Please do <a href="https://forms.gle/GBAd4JjGyNRvTWaBA">send station photos</a> (as many as you have) when you can. I will post a results table when I have enough. We don’t publish the photos, but I hope <em>you</em> share them someplace to celebrate your team’s accomplishment. If it’s easier, a list of links to public Strava activities covering the line should also work.</p> | ||
|
||
<p>If you want to be notified before the next LRR, you can opt in by leaving your email address at <a href="https://forms.gle/fb9ybhSnQV8dgDsr9">this form</a>. Registration email addresses are only used for communicating about registration (and not marketing).</p> | ||
|
||
<p>I will get you copies of any team portraits I got at the finish, but I’m generally slow to churn through photos. Sorry about that.</p> | ||
|
||
<p>Thanks for running!<br>—Nick</p> | ||
</body> | ||
</accordion-body> | ||
</accordion-item> | ||
<accordion-item> | ||
<accordion-header>Brief #2 - 9/26/24</accordion-header> | ||
<accordion-body> | ||
|
@@ -867,18 +888,17 @@ <h2 id="relay-day">Relay Day</h2> | |
|
||
<b>Travel</b> | ||
<ul> | ||
<li>Those taking the 1 Line to the start, I recommend catching this scheduled trip (#2018): | ||
<a href="https://pugetsound.onebusaway.org/where/trip?id=40_LLR_2024-09-14_Jun27_Fall2024_Saturday_100479_2018&serviceDate=1727506800000&stopId=40_N23-T2">Link to trip</a> | ||
<li>Those taking the 1 Line to the start, I recommend catching <a href="https://pugetsound.onebusaway.org/where/trip?id=40_LLR_2024-09-14_Jun27_Fall2024_Saturday_100479_2018&serviceDate=1727506800000&stopId=40_N23-T2">this scheduled trip (#2018)</a>: | ||
|
||
</li> | ||
<li>There are several major road disruptions this weekend which may impact travel from outside Seattle proper. | ||
<a href="https://wsdot.wa.gov/about/news/2024/monster-weekend-closures-sr-520-northbound-i-405-southbound-sr-167-and-i-5-sept-27-30">Link to WSDOT advisory</a> | ||
<li>There are several <a href="https://wsdot.wa.gov/about/news/2024/monster-weekend-closures-sr-520-northbound-i-405-southbound-sr-167-and-i-5-sept-27-30">major road disruptions this weekend</a> which may impact travel from outside Seattle proper.</a> | ||
</li> | ||
</ul> | ||
|
||
<b>Misc</b> | ||
<ul> | ||
<li>Rob of team Velociraptors put together a quick turn-by-turn PDF which he has kindly shared in case it’s useful for other teams: | ||
<a href="https://drive.google.com/file/d/1QI75k9HQY7_FcDjc6YNt6nwzlsLZrbm-/view">Turn-by-turn PDF</a> | ||
<li>Rob of team Velociraptors put together a quick <a href="https://drive.google.com/file/d/1QI75k9HQY7_FcDjc6YNt6nwzlsLZrbm-/view">turn-by-turn PDF</a> which he has kindly shared in case it’s useful for other teams. | ||
|
||
<ul> | ||
<li>Be like Rob; make sure your team has a navigation solution that works for them. If you’re running with your phone, you can always use the route map on the site. Location information shared with the map is only used to draw your dot on the map and does not leave your device.</li> | ||
</ul> | ||
|
@@ -961,22 +981,26 @@ <h3>After</h3> | |
</ul> | ||
|
||
<p>See you in a week,<br>Nick</p> | ||
</accordion-body> | ||
</accordion-item> | ||
|
||
</accordion-body> | ||
</accordion-group> | ||
</div> | ||
</section> | ||
|
||
<section> | ||
<div class="container"> | ||
<div class="container-xxl"> | ||
<div class="d-flex flex-column flex-sm-row justify-content-between align-items-baseline"> | ||
<h2 id="results">Results <a href="#results" class="anchor-link" aria-label="Link to this section. Results"></a></h2> | ||
<a href="https://forms.gle/GBAd4JjGyNRvTWaBA" class="btn btn-outline-primary mb-3 m-sm-0">Upload Photos</a> | ||
</div> | ||
|
||
<p>Results will be posted the day after the event. <i>Send station photos to your team captain to avoid delays!</i></p> | ||
<div id="results-table"></div> | ||
<p class="text-body-tertiary">Updated 9/30/24</p> | ||
<div class="container"> | ||
|
||
<p><b>Blanks in your results?</b> These images were missing time information, maybe because they were sent through an application that metadata by default. You can read more about EXIF image metadata and test whether the "DateTimeOriginal" field is present on your image files on <a href="https://hturan.com/writing/exploring-exif">this page</a>. You're welcome to resubmit just the missing images.</p> | ||
</div> | ||
</div> | ||
</section> | ||
|
||
|
@@ -1026,6 +1050,7 @@ <h2 id="results">Results <a href="#results" class="anchor-link" aria-label="Link | |
import {AccordionGroup, AccordionItem, AccordionHeader, AccordionBody} from '{{ site.baseurl }}/js/accordion.js'; | ||
import {RelayMap} from '{{ site.baseurl }}/js/RelayMap.js'; | ||
import {LegCalculator} from '{{ site.baseurl }}/js/LegCalculator.js'; | ||
import {RelayResultsTable} from "../js/RelayResultsTable.js"; | ||
import {TransitVehicleTracker} from '{{ site.baseurl }}/js/TransitVehicleTracker.js'; | ||
|
||
const apiBaseUrl = "https://api.pugetsound.onebusaway.org/api" | ||
|
@@ -1110,6 +1135,17 @@ <h2 id="results">Results <a href="#results" class="anchor-link" aria-label="Link | |
|
||
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new Tooltip(tooltipTriggerEl)) | ||
|
||
Promise.all([fetch('{{ site.baseurl }}/results/lrr24.json').then(res => res.json()), processedRouteData]).then(([results, [legs, exchanges, exchangeNames]]) => { | ||
results.results.forEach((result, index) => { | ||
result.index = index | ||
|
||
}) | ||
const relayResultsTable = new RelayResultsTable(results.results) | ||
|
||
relayResultsTable.initialize(results.results, exchangeNames) | ||
document.getElementById("results-table").appendChild(relayResultsTable) | ||
}) | ||
|
||
document.addEventListener('DOMContentLoaded', e => { | ||
prepareImagesForPhotoswipe(document.querySelectorAll("#teaser-gallery a")).then(() => { | ||
const lightbox = new PhotoSwipeLightbox({ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,175 @@ | ||
{ | ||
"starts": { | ||
"main": { | ||
"time": "08:30:00;00" | ||
} | ||
}, | ||
"results": [ | ||
{ | ||
"name": "Not Fast, Just Furious", | ||
"category": "Open", | ||
"exchangeTimes": { | ||
"140": 23837, | ||
"141": 22156, | ||
"142": 20679, | ||
"143": 19397, | ||
"145": 17583, | ||
"146": 16097, | ||
"147": 15276, | ||
"148": 14538, | ||
"149": 12358, | ||
"150": 11595, | ||
"151": 10846, | ||
"152": 10026, | ||
"153": 9843, | ||
"154": 9376, | ||
"155": 9037, | ||
"156": 8172, | ||
"157": 7540, | ||
"158": 6850, | ||
"160": 5980, | ||
"161": 5369, | ||
"163": 1639, | ||
"164": 829, | ||
"165": 0 | ||
} | ||
}, | ||
|
||
{ | ||
"name": "Seattle Green Line Running Group", | ||
"category": "Open", | ||
"exchangeTimes": { | ||
"140": 19393, | ||
"141": 18041, | ||
"142": 16997, | ||
"143": 16004, | ||
"145": 14610, | ||
"146": 13516, | ||
"147": 12913, | ||
"148": 12324, | ||
"149": 10869, | ||
"150": 10283, | ||
"151": 9429, | ||
"152": 9167, | ||
"153": 8676, | ||
"154": 8290, | ||
"155": 7876, | ||
"158": 5738, | ||
"160": 4912, | ||
"161": 4241, | ||
"163": 1705, | ||
"164": 1011, | ||
"165": 0 | ||
} | ||
}, | ||
{ | ||
"name": "The 3 Line", | ||
"category": "Open", | ||
"exchangeTimes": { | ||
"140": 24535, | ||
"141": 22661, | ||
"142": 21407, | ||
"143": 20092, | ||
"146": 17096, | ||
"147": 16212, | ||
"158": 7840, | ||
"161": 6305, | ||
"163": 2137 | ||
} | ||
}, | ||
{ | ||
"name": "Nick Walker", | ||
"category": "Solo", | ||
"exchangeTimes": { | ||
"140": 19282, | ||
"141": 17599, | ||
"142": 16475, | ||
"143": 15327, | ||
"144": 14851, | ||
"145": 13873, | ||
"146": 12695, | ||
"147": 11875, | ||
"148": 11309, | ||
"149": 9809, | ||
"150": 9185, | ||
"151": 8928, | ||
"152": 8625, | ||
"153": 8383, | ||
"154": 8047, | ||
"155": 7641, | ||
"156": 6959, | ||
"157": 6477, | ||
"158": 5729, | ||
"159": 5244, | ||
"160": 4910, | ||
"161": 4236, | ||
"162": 3198, | ||
"163": 1705, | ||
"164": 1010, | ||
"165": 0 | ||
} | ||
}, | ||
{ | ||
"name": "Jack Rosenfeld", | ||
"category": "Solo", | ||
"exchangeTimes": { | ||
"140": 26971, | ||
"141": 24814, | ||
"142": 23180, | ||
"143": 21739, | ||
"145": 19716, | ||
"146": 17993, | ||
"147": 17092, | ||
"148": 16116, | ||
"149": 13416, | ||
"150": 12047, | ||
"151": 11270, | ||
"152": 10945, | ||
"153": 10667, | ||
"154": 10227, | ||
"155": 9847, | ||
"156": 9004, | ||
"157": 8346, | ||
"158": 7545, | ||
"160": 6684, | ||
"161": 5838, | ||
"163": 1961, | ||
"164": 1076, | ||
"165": 0 | ||
} | ||
}, | ||
{ | ||
"name": "Husky Swim Club", | ||
"category": "Open", | ||
"exchangeTimes": { | ||
"140": 25323, | ||
"141": 23835, | ||
"142": 22665, | ||
"143": 21523, | ||
"145": 19886, | ||
"146": 18735, | ||
"158": 9420 | ||
} | ||
}, | ||
{ | ||
"name": "Velociraptors", | ||
"exchangeTimes": { | ||
"140": 24402, | ||
"141": 22102, | ||
"142": 20949, | ||
"143": 19700, | ||
"145": 18032, | ||
"146": 14929, | ||
"147": 14134, | ||
"148": 13339, | ||
"153": 9990, | ||
"154": 9549, | ||
"155": 9079, | ||
"157": 7967, | ||
"158": 7295, | ||
"161": 5652, | ||
"165": 0 | ||
} | ||
} | ||
] | ||
} |