Back
Version 69
8/11/2024
/** @jsxImportSource https://esm.sh/preact */
import { reactResponse } from "https://esm.town/v/moe/responses"
import { getLaunches } from "https://esm.town/v/moe/spacexapi"
export default async (req: Request) => {
const url = new URL(req.url)
const isPast = url.searchParams.has("past")
const data = await getLaunches()
const launches = isPast ? data.pastLaunches.reverse() : data.launches
let vehicles = ["F9 v1.0", "F9 v1.1", "F9 FT", "F9 B4", "F9 B5", "Falcon Heavy"]
let colors = [
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)",
"rgba(255, 206, 86, 1)",
"rgba(75, 192, 192, 1)",
"rgba(153, 102, 255, 1)",
"rgba(255, 159, 64, 1)",
]
let getChartData = (yearLabels, launches) => {
let getYearFromDateText = (launchDateText) => {
for (let y of yearLabels) { if (launchDateText.includes(y)) { return y } }
}
let data = {
labels: yearLabels,
datasets: vehicles.map((v, i) => {
let years = launches.filter(launch => launch.type.includes(v)).map(launch =>
getYearFromDateText(launch.dateText)
)
let counts = years.reduce((map, val) => {
map[val] = (map[val] || 0) + 1
return map
}, {})
return {
label: v,
moe-spacex.web.val.run
Updated: January 7, 2025