Public
Edited
Oct 25, 2024
Insert cell
Insert cell
Insert cell
Insert cell
viewof drivers = {
var out = [];
// out.drivers = 0;
for (var i = 0; i < lasVegasLaps.laps.length; i++) {
// out.drivers++;
var driver = lasVegasLaps.laps[i];
var total_time = 0;
var lap = 0;
while (total_time < race_time && lap < driver.Laps.length) {
if (driver.Laps[lap].LapTime != null) {
total_time += driver.Laps[lap].LapTime;
}
lap++;
}
var data = {};
if (lap > 0) {
lap--;
}
data.laps = driver.Laps[lap].Lap;
data.driver = driver;
data.time = total_time;
out.push(data);
}
out = out.sort((a, b) => b.laps - a.laps || a.time - b.time);
// lap_view.value = out[0].laps;
if (mutable lap != out[0].laps) {
mutable lap = out[0].laps;
}
var drivers = `<table>`;
for (var i = 0; i < out.length; i++) {
var driver = out[i].driver;
var driver_laps = out[i].laps - out[0].laps;
var driver_time = out[i].time - out[0].time;
var driver_back = `${driver_laps}L`;
if (driver_laps == 0) {
var driver_back = `-${driver_time.toFixed(3)}`;
}
drivers += `<tr><td width="20" align="right">${driver.Number}</td><td>${format_name(driver.FullName)}</td><td>${driver_back}</td></tr>`;
}
drivers += `</table>`
return html`${drivers}`;
}
Insert cell
function format_name(name) {
if (name.indexOf(" (P)") != -1) {
return `<span style="background: #ff0; padding: 2px 3px; margin: -2px -3px; border-radius: 3px;">${name.replace(" (P)", "")}</span>`;
} else if (name.indexOf(" #") != -1) {
return `${name.replace(" #", "")} <span style="font-size: 65%; background: #c00; color: white; padding: 2px 3px; border-radius: 3px;">ROOKIE</span>`;
} else {
return name;
}
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more