Added Splash Screens for PWA

This commit is contained in:
2026-07-08 00:39:12 +10:00
parent 6d0ecb19c9
commit 03bd74580f
58 changed files with 865 additions and 16 deletions
@@ -26,18 +26,25 @@ const props = defineProps<{
}>()
const flightsByAirline = computed(() => {
const allianceAirlineIds = new Set(props.airlines.map(a => a.id))
const map = new Map<string, AirlineEntry>()
const idToKey = new Map<number, string>()
// Pre-populate every alliance airline so unflown ones still appear
for (const airline of props.airlines) {
map.set(rowKey(airline), { airline, flights: [] })
const key = rowKey(airline)
map.set(key, { airline, flights: [] })
idToKey.set(airline.id, key)
for (const alias of airline.merged_from ?? []) {
idToKey.set(alias.id, key)
}
}
for (const flight of props.flights) {
const airline = flight.airline
if (!airline || !allianceAirlineIds.has(airline.id)) continue
map.get(rowKey(airline))?.flights.push(flight)
if (!airline) continue
const key = idToKey.get(airline.id)
if (!key) continue
map.get(key)?.flights.push(flight)
}
return map
@@ -83,11 +83,11 @@ const generationGroups = computed(() =>
This challenge is impossible to complete if you start today, but it's a fun one to look at because despite how common as the 737 is, it's very hard to find them all!
</p>
<ul>
<li><b>737-100</b> - It was never that popular, and is no longer in commercial service anywhere. This is what renders the challenge impossible today.</li>
<li><b>737-200</b> - Retired from Western fleets. A handful still fly in Africa and parts of Latin America on gravel-strip routes.</li>
<li><b>737-300 / 737-400 / 737-500</b> - Rare but doable with some creative routing.</li>
<li><b>737-600</b> - Much like it's Airbus A318 Equivalent, it sold poorly but is still in operation in Algeria and Canada.</li>
<li><b>737 Max 7</b> - Not possible to fly yet due to lack of certification but should hopefully become common soon enough!.</li>
<li><b>-100</b> - It was never that popular, and is no longer in commercial service anywhere. This is what renders the challenge impossible today.</li>
<li><b>-200</b> - Retired from Western fleets. A handful still fly in Africa and parts of Latin America on gravel-strip routes.</li>
<li><b>-300 / 737-400 / 737-500</b> - Rare but doable with some creative routing.</li>
<li><b>-600</b> - Much like it's Airbus A318 Equivalent, it sold poorly but is still in operation in Algeria and Canada.</li>
<li><b>Max 7</b> - Not possible to fly yet due to lack of certification but should hopefully become common soon enough!</li>
</ul>
</Panel>
</template>
@@ -1,6 +1,8 @@
<script setup lang="ts">
import { Achievement, Airline, Alliance, Flight, User } from '@/Types/types'
import AllianceChallenge from '@/Components/FlightsGoneBy/AllianceChallenge.vue'
import Panel from "@/Components/FlightsGoneBy/Panels/Panel.vue";
import PanelHeader from "@/Components/FlightsGoneBy/Panels/PanelHeader.vue";
defineOptions({ inheritAttrs: false })
defineProps<{
achievement: Achievement
@@ -24,5 +26,18 @@ defineProps<{
<p>
<b>Vanilla Alliance</b> is a small, regional alliance in the Vanilla Islands. It is a paper alliance that is effectively defunct, but it's still a fun one to try for!
</p>
<template #extra>
<Panel>
<PanelHeader centered>Difficulty</PanelHeader>
<p>
Awkward to pull off, despite the very small number of airline need - there's no alliance cooperation and the Vanilla Islands are not always well-connected. There's no longer any Comoran airlines you need though, so that's something.
</p>
<p>
Historic flight on Air Madagascar count towards Madagascar Airlines, as the rebrand was not deemed major enough to warrant it being a separate airline in anything but name.
</p>
</Panel>
</template>
</AllianceChallenge>
</template>
+1
View File
@@ -234,6 +234,7 @@ export interface Airline {
logo_url: string
alliance_id: number | null,
alliance?: Alliance,
merged_from?: Airline[] ,
}
export interface Aircraft {
+41 -1
View File
@@ -12,10 +12,50 @@
<link rel="preconnect" href="https://fonts.bunny.net">
<link href="https://fonts.bunny.net/css?family=figtree:400,500,600&display=swap" rel="stylesheet" />
<!-- Apple Touch Icons -->
<link rel="apple-touch-icon" href="/img/app_icons/apple-touch-icon-180.png-">
<link rel="apple-touch-icon" href="/img/app_icons/apple-touch-icon-180.png">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="FlightsGoneBy">
<link rel="apple-touch-startup-image" media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-2048x2732.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2732x2048.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1668x2388.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2388x1668.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1536x2048.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2048x1536.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1640x2360.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2360x1640.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1668x2224.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2224x1668.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1620x2160.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2160x1620.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1488x2266.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2266x1488.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 440px) and (device-height: 956px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1320x2868.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 440px) and (device-height: 956px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2868x1320.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 402px) and (device-height: 874px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1206x2622.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 402px) and (device-height: 874px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2622x1206.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1290x2796.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2796x1290.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1179x2556.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2556x1179.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1170x2532.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2532x1170.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1284x2778.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2778x1284.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1125x2436.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2436x1125.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1242x2688.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2688x1242.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-828x1792.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-1792x828.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-1242x2208.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-2208x1242.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-750x1334.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-1334x750.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="/img/logos/apple-splash-portrait-640x1136.png">
<link rel="apple-touch-startup-image" media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="/img/logos/apple-splash-landscape-1136x640.png">
<meta name="theme-color" content="#020d29">
<link rel="manifest" href="/build/manifest.webmanifest">
@@ -1 +0,0 @@
<?php
@@ -26,6 +26,7 @@ body {
/* Button — outlined so it reads on light or dark backgrounds */
.button-blue,
.button,
.button-primary {
background-color: transparent;
border: 2px solid #38bdf8;
@@ -34,7 +35,9 @@ body {
display: inline-block;
font-weight: 600;
padding: 12px 24px;
text-align: center;
text-decoration: none;
white-space: nowrap;
}
/* Footer */