Compare commits
6 Commits
4f79b4dd3c
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 09323fbd91 | |||
| 6f59e7fdbc | |||
| 7e7fcbc458 | |||
| a3aa683190 | |||
| 9d7d7a8b6d | |||
| 8fc5c1fa29 |
Binary file not shown.
|
After Width: | Height: | Size: 133 KiB |
@@ -62,8 +62,8 @@ const frzGeoJsonEndpoint = `${pprApiBase}/drone-requests/frz`;
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="drone-field">
|
<div class="drone-field">
|
||||||
<label for="max-elevation">Maximum Elevation, feet AMSL <span aria-hidden="true">*</span></label>
|
<label for="max-elevation">Max height above ground in feet <span aria-hidden="true">*</span></label>
|
||||||
<input type="number" id="max-elevation" name="maximum_elevation_ft_amsl" min="0" step="1" inputmode="numeric" required />
|
<input type="number" id="max-elevation" name="maximum_elevation_ft_agl" min="0" step="1" inputmode="numeric" required />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="drone-field drone-full">
|
<div class="drone-field drone-full">
|
||||||
@@ -407,7 +407,7 @@ const frzGeoJsonEndpoint = `${pprApiBase}/drone-requests/frz`;
|
|||||||
if (!fieldValue) return;
|
if (!fieldValue) return;
|
||||||
const normalizedValue = key === 'operator_id' || key === 'flyer_id' ? fieldValue.toUpperCase() : fieldValue;
|
const normalizedValue = key === 'operator_id' || key === 'flyer_id' ? fieldValue.toUpperCase() : fieldValue;
|
||||||
|
|
||||||
if (key === 'maximum_elevation_ft_amsl') {
|
if (key === 'maximum_elevation_ft_agl') {
|
||||||
data[key] = Number.parseInt(normalizedValue, 10);
|
data[key] = Number.parseInt(normalizedValue, 10);
|
||||||
} else if (key === 'location_latitude' || key === 'location_longitude') {
|
} else if (key === 'location_latitude' || key === 'location_longitude') {
|
||||||
data[key] = Number.parseFloat(normalizedValue);
|
data[key] = Number.parseFloat(normalizedValue);
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ const webcamImage = `${webcamBase}/webcam/apron.jpg`;
|
|||||||
<p class="eyebrow">Live apron webcam</p>
|
<p class="eyebrow">Live apron webcam</p>
|
||||||
<h1 id="webcam-heading" class="section-title">Swansea Airport apron</h1>
|
<h1 id="webcam-heading" class="section-title">Swansea Airport apron</h1>
|
||||||
<p class="section-copy">
|
<p class="section-copy">
|
||||||
A live view across the apron. The image refreshes automatically every 30 seconds.
|
View from the tower facing south west.<br>The peak in the middle of the view is Cefn Bryn, 5500 metres distant.</p>
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="webcam-status" aria-live="polite">
|
<div class="webcam-status" aria-live="polite">
|
||||||
<span class="status-dot waiting" id="webcam-dot"></span>
|
<span class="status-dot waiting" id="webcam-dot"></span>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import {
|
|||||||
fallbackDocuments,
|
fallbackDocuments,
|
||||||
fallbackEvents,
|
fallbackEvents,
|
||||||
fallbackFuelPrices,
|
fallbackFuelPrices,
|
||||||
|
fallbackGiftShopImages,
|
||||||
fallbackHomepageBannerImages,
|
fallbackHomepageBannerImages,
|
||||||
fallbackHomepageVolunteerImages,
|
fallbackHomepageVolunteerImages,
|
||||||
fallbackNews,
|
fallbackNews,
|
||||||
@@ -48,6 +49,7 @@ const directusDebug = ['1', 'true', 'yes', 'on'].includes((process.env.DIRECTUS_
|
|||||||
const homepageBannerFolder = process.env.DIRECTUS_HOMEPAGE_BANNER_FOLDER ?? 'homepage-banners';
|
const homepageBannerFolder = process.env.DIRECTUS_HOMEPAGE_BANNER_FOLDER ?? 'homepage-banners';
|
||||||
const homepageVolunteersFolder = process.env.DIRECTUS_HOMEPAGE_VOLUNTEERS_FOLDER ?? 'homepage-volunteers';
|
const homepageVolunteersFolder = process.env.DIRECTUS_HOMEPAGE_VOLUNTEERS_FOLDER ?? 'homepage-volunteers';
|
||||||
const cafePageFolder = process.env.DIRECTUS_CAFE_PAGE_FOLDER ?? 'cafe-page';
|
const cafePageFolder = process.env.DIRECTUS_CAFE_PAGE_FOLDER ?? 'cafe-page';
|
||||||
|
const giftShopFolder = process.env.DIRECTUS_GIFT_SHOP_FOLDER ?? 'gift-shop';
|
||||||
|
|
||||||
type DirectusFolder = {
|
type DirectusFolder = {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -300,6 +302,7 @@ export const getHomepageVolunteerImages = () =>
|
|||||||
shuffleRest: true,
|
shuffleRest: true,
|
||||||
});
|
});
|
||||||
export const getCafePageImages = () => getImagesFromFolder(cafePageFolder, fallbackCafePageImages);
|
export const getCafePageImages = () => getImagesFromFolder(cafePageFolder, fallbackCafePageImages);
|
||||||
|
export const getGiftShopImages = () => getImagesFromFolder(giftShopFolder, fallbackGiftShopImages);
|
||||||
|
|
||||||
function stripHtml(value = ''): string {
|
function stripHtml(value = ''): string {
|
||||||
return value
|
return value
|
||||||
|
|||||||
@@ -100,6 +100,13 @@ export const fallbackCafePageImages: HomepageBannerImage[] = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const fallbackGiftShopImages: HomepageBannerImage[] = [
|
||||||
|
{
|
||||||
|
src: '/images/camain.jpg',
|
||||||
|
alt: 'Chocks Away Gift Shop at Swansea Airport',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
export const fallbackHomepageVolunteerImages: HomepageBannerImage[] = [
|
export const fallbackHomepageVolunteerImages: HomepageBannerImage[] = [
|
||||||
{
|
{
|
||||||
src: '/images/cessna.jpg',
|
src: '/images/cessna.jpg',
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ export const site = {
|
|||||||
href: '/about/',
|
href: '/about/',
|
||||||
children: [
|
children: [
|
||||||
{ label: 'Cafe', href: '/about/cafe/' },
|
{ label: 'Cafe', href: '/about/cafe/' },
|
||||||
|
{ label: 'Gift Shop', href: '/about/gift-shop/' },
|
||||||
{ label: 'History', href: '/about/history/' },
|
{ label: 'History', href: '/about/history/' },
|
||||||
{ label: 'Fees and Charges', href: '/about/fees-and-charges/' },
|
{ label: 'Fees and Charges', href: '/about/fees-and-charges/' },
|
||||||
{ label: 'Noise', href: '/about/noise/' },
|
{ label: 'Noise', href: '/about/noise/' },
|
||||||
|
|||||||
@@ -21,11 +21,21 @@ const cafeImages = await getCafePageImages();
|
|||||||
Fairwood Common and the Gower, the cafe offers a comfortable place to pause and enjoy the
|
Fairwood Common and the Gower, the cafe offers a comfortable place to pause and enjoy the
|
||||||
airport atmosphere.
|
airport atmosphere.
|
||||||
</p>
|
</p>
|
||||||
|
<div class="opening-times">
|
||||||
|
<p>Open 7 days a week.</p>
|
||||||
|
<div class="opening-list">
|
||||||
|
<p><strong>Monday & Tuesday</strong><span>Snacks and drinks served 10am - 2pm</span></p>
|
||||||
|
<p><strong>Wednesday - Sunday</strong><span>Open 9am - 3pm, full menu served 9.30am - 2.30pm</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<p>
|
<p>
|
||||||
On Thursday to Sunday evenings, the cafe transforms into Thai Bach Express, serving Thai
|
On Thursday to Sunday evenings, the cafe transforms into Thai Bach Express, serving Thai
|
||||||
food for delivery and dining in.
|
food for delivery and dining in.
|
||||||
<a href="https://thaibach.co.uk/" target="_blank" rel="noopener noreferrer">Visit Thai Bach</a>.
|
<a href="https://thaibach.co.uk/" target="_blank" rel="noopener noreferrer">Visit Thai Bach</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="social-follow">
|
<div class="social-follow">
|
||||||
<div class="cta-row">
|
<div class="cta-row">
|
||||||
<a class="button primary social-button" href="https://www.facebook.com/SwanseaAirportCafe" target="_blank" rel="noopener noreferrer">
|
<a class="button primary social-button" href="https://www.facebook.com/SwanseaAirportCafe" target="_blank" rel="noopener noreferrer">
|
||||||
@@ -62,6 +72,40 @@ const cafeImages = await getCafePageImages();
|
|||||||
min-height: clamp(16rem, 42vw, 30rem);
|
min-height: clamp(16rem, 42vw, 30rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.opening-times {
|
||||||
|
display: grid;
|
||||||
|
gap: 0.65rem;
|
||||||
|
margin: 0.2rem 0;
|
||||||
|
padding: 1rem;
|
||||||
|
border: 1px solid var(--line);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
background: rgba(255, 255, 255, 0.86);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.opening-times h2 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.opening-times p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.opening-list {
|
||||||
|
display: grid;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.opening-list p {
|
||||||
|
display: grid;
|
||||||
|
gap: 0.15rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.opening-list span {
|
||||||
|
color: var(--muted);
|
||||||
|
}
|
||||||
|
|
||||||
.social-follow {
|
.social-follow {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 0.7rem;
|
gap: 0.7rem;
|
||||||
@@ -93,4 +137,5 @@ const cafeImages = await getCafePageImages();
|
|||||||
line-height: 1;
|
line-height: 1;
|
||||||
transform: translateY(-0.02em);
|
transform: translateY(-0.02em);
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -0,0 +1,139 @@
|
|||||||
|
---
|
||||||
|
import BannerRotator from '../../components/BannerRotator.astro';
|
||||||
|
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||||
|
import { getGiftShopImages } from '../../lib/directus';
|
||||||
|
|
||||||
|
const giftShopImages = await getGiftShopImages();
|
||||||
|
---
|
||||||
|
|
||||||
|
<BaseLayout
|
||||||
|
title="Gift Shop"
|
||||||
|
description="Discover Chocks Away Gift Shop at Swansea Airport, with aviation memorabilia, RAF-themed gifts, Welsh souvenirs, toys, clothing, and accessories."
|
||||||
|
>
|
||||||
|
<section class="container prose gift-shop-page">
|
||||||
|
<figure class="gift-shop-hero">
|
||||||
|
<img src="/images/camain.jpg" alt="Chocks Away Gift Shop at Swansea Airport" />
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<div class="gift-shop-copy">
|
||||||
|
<h1 class="section-title">Gift Shop</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Discover Chocks Away Gift Shop at Swansea Airport, a small shop packed with unique gifts
|
||||||
|
and aviation charm. Inspired by the airport's rich WWII heritage, you will find aviation
|
||||||
|
memorabilia, RAF-themed gifts, Welsh souvenirs, children's toys, clothing, accessories,
|
||||||
|
and much more.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
From Spitfires to dragons, cufflinks to caps, whether you are flying in, visiting the
|
||||||
|
airport, or simply looking for the best gift or souvenir, there is something for every
|
||||||
|
aviation lover.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="social-follow">
|
||||||
|
<div class="cta-row">
|
||||||
|
<a class="button primary social-button" href="https://www.facebook.com/profile.php?id=61590636748267" target="_blank" rel="noopener noreferrer">
|
||||||
|
<span class="facebook-mark" aria-hidden="true">f</span>
|
||||||
|
Chocks Away Gift Shop on Facebook
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="gift-shop-gallery" aria-label="Gift shop photo gallery">
|
||||||
|
<BannerRotator images={giftShopImages} />
|
||||||
|
</div>
|
||||||
|
<p class="gift-shop-disclaimer">
|
||||||
|
Chocks Away Gift Shop is an independent business based at Swansea Airport and is not
|
||||||
|
affiliated with airport management.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</BaseLayout>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.gift-shop-page {
|
||||||
|
display: grid;
|
||||||
|
gap: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gift-shop-hero {
|
||||||
|
margin: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
aspect-ratio: 21 / 9;
|
||||||
|
background: var(--line);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gift-shop-hero img {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
object-position: center top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gift-shop-copy {
|
||||||
|
display: grid;
|
||||||
|
gap: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gift-shop-copy p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gift-shop-gallery {
|
||||||
|
overflow: hidden;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
background: var(--line);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gift-shop-gallery :global(.banner-rotator) {
|
||||||
|
min-height: clamp(16rem, 42vw, 30rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gift-shop-disclaimer {
|
||||||
|
margin-top: 0.35rem !important;
|
||||||
|
padding-top: 0.85rem;
|
||||||
|
border-top: 1px solid var(--line);
|
||||||
|
color: var(--muted);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-follow {
|
||||||
|
display: grid;
|
||||||
|
gap: 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-button {
|
||||||
|
gap: 0.55rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.facebook-mark {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 1.45rem;
|
||||||
|
height: 1.45rem;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #1877f2;
|
||||||
|
color: white;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 800;
|
||||||
|
line-height: 1;
|
||||||
|
transform: translateY(-0.02em);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 760px) {
|
||||||
|
.gift-shop-hero {
|
||||||
|
aspect-ratio: 16 / 9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -10,6 +10,10 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
|
|||||||
<h3><a href="/about/cafe/">Cafe</a></h3>
|
<h3><a href="/about/cafe/">Cafe</a></h3>
|
||||||
<p>A friendly, dog-friendly cafe for visitors, walkers, pilots, and local families.</p>
|
<p>A friendly, dog-friendly cafe for visitors, walkers, pilots, and local families.</p>
|
||||||
</article>
|
</article>
|
||||||
|
<article class="card">
|
||||||
|
<h3><a href="/about/gift-shop/">Gift Shop</a></h3>
|
||||||
|
<p>Aviation gifts, RAF-themed keepsakes, Welsh souvenirs, toys, clothing, and accessories.</p>
|
||||||
|
</article>
|
||||||
<article class="card">
|
<article class="card">
|
||||||
<h3><a href="/about/history/">History</a></h3>
|
<h3><a href="/about/history/">History</a></h3>
|
||||||
<p>The story of Swansea Airport, formerly RAF Fairwood Common.</p>
|
<p>The story of Swansea Airport, formerly RAF Fairwood Common.</p>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import BaseLayout from '../layouts/BaseLayout.astro';
|
|||||||
import WebcamPanel from '../components/WebcamPanel.astro';
|
import WebcamPanel from '../components/WebcamPanel.astro';
|
||||||
---
|
---
|
||||||
|
|
||||||
<BaseLayout title="Webcam" description="Live Swansea Airport apron webcam.">
|
<BaseLayout title="Webcam" description="View from the tower facing south west. The peak in the middle of the view is Cefn Bryn, 5500 metres distant.">
|
||||||
<section class="container">
|
<section class="container">
|
||||||
<WebcamPanel />
|
<WebcamPanel />
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
Reference in New Issue
Block a user