Skip to content

Commit 5246ac8

Browse files
committed
Merge branch 'master' of github.com:Pitabread8/artemis
2 parents 65c5177 + 0367d17 commit 5246ac8

3 files changed

Lines changed: 26 additions & 17 deletions

File tree

src/components/InlineFalconDiagram.astro

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
---
2-
import path from 'node:path';
3-
import { falconParts, renderRocketSvg } from '../lib/rocket';
4-
5-
const falconRocket = {
6-
slug: 'falcon',
7-
label: 'Falcon 9',
8-
title: 'Falcon 9 vertical integration diagram',
9-
desc: 'Interactive Falcon 9 diagram colored to show SpaceX vertical integration.',
10-
svgPath: path.join(process.cwd(), 'public', 'rockets', 'falcon', 'falcon-9-diagram-01.svg'),
11-
hiddenPartIds: new Set<string>(),
12-
hiddenPartGroups: new Set<string>(),
13-
parts: falconParts,
14-
};
2+
import { rockets, renderRocketSvg } from '../lib/rocket';
153
4+
const falconRocket = rockets.find((r) => r.slug === 'falcon')!;
165
const slide = { label: falconRocket.label, svg: renderRocketSvg(falconRocket) };
6+
const basePath = import.meta.env.BASE_URL.replace(/\/$/, '');
7+
const spacexLogoSrc = `${basePath}/rockets/falcon/spacex-logo-black.svg`;
178
---
189

1910
<style is:global>
@@ -64,8 +55,10 @@ const slide = { label: falconRocket.label, svg: renderRocketSvg(falconRocket) };
6455
<span class="key-copy">
6556
<img
6657
class="spacex-logo"
67-
src={`${import.meta.env.BASE_URL}rockets/falcon/spacex-logo-black.svg`}
58+
src={spacexLogoSrc}
6859
alt="SpaceX"
60+
loading="eager"
61+
decoding="async"
6962
/>
7063
</span>
7164
</div>

src/components/RocketPlayground.astro

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
---
2-
import { rockets, renderRocketSvg, contractorKey, getRocketPriceTotal, formatPriceTotal, minPriceLabel, maxPriceLabel } from '../lib/rocket';
2+
import { rockets, renderRocketSvg, contractorKey, getRocketPriceTotal, hasRocketPrices, formatPriceTotal, minPriceLabel, maxPriceLabel } from '../lib/rocket';
33
44
const rocketSlides = rockets.map((rocket) => ({
55
...rocket,
66
svg: renderRocketSvg(rocket),
7+
hasPrices: hasRocketPrices(rocket.parts),
78
total: formatPriceTotal(getRocketPriceTotal(rocket.parts)),
89
}));
10+
const pricedRocketSlides = rocketSlides.filter((rocket) => rocket.hasPrices);
911
---
1012

1113
<section class="page diagram-panel full-bleed" data-diagram-panel data-initial-mode="contractors" data-slide-count={rocketSlides.length}>
@@ -58,7 +60,7 @@ const rocketSlides = rockets.map((rocket) => ({
5860
</div>
5961
<div class="price-total-list" aria-label="Total shown by rocket">
6062
{
61-
rocketSlides.map((rocket) => (
63+
pricedRocketSlides.map((rocket) => (
6264
<p class="price-total">
6365
{rocket.label}
6466
<strong>{rocket.total}</strong>

src/lib/rocket.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const contractorStyles: Record<string, { color: string; mergedInto?: stri
1818
const contractorKeyOrder = [
1919
'Northrop Grumman', 'Boeing', 'North American Aviation', 'Douglas Aircraft',
2020
'Lockheed Martin', 'Lockheed Propulsion Co.', 'Aerojet Rocketdyne', 'Rocketdyne',
21-
'Teledyne Brown Engineering', 'IBM',
21+
'Teledyne Brown Engineering', 'IBM', 'SpaceX',
2222
];
2323

2424
export const contractorKey: {
@@ -248,6 +248,10 @@ export function getRocketPriceTotal(parts: Record<string, { priceGroup?: string
248248
return Array.from(uniquePriceGroups).reduce((total, group) => total + priceGroups[group].amount, 0);
249249
}
250250

251+
export function hasRocketPrices(parts: Record<string, { priceGroup?: string }>): boolean {
252+
return Object.values(parts).some((part) => Boolean(part.priceGroup) && Boolean(priceGroups[part.priceGroup]));
253+
}
254+
251255
export function escapeAttr(value: unknown): string {
252256
return String(value).replace(/&/g, '&amp;').replace(/"/g, '&quot;');
253257
}
@@ -363,4 +367,14 @@ export const rockets = [
363367
hiddenPartGroups: apolloHiddenPartGroups,
364368
parts: apolloParts,
365369
},
370+
{
371+
slug: 'falcon',
372+
label: 'Falcon 9',
373+
title: 'Falcon 9 vertical integration diagram',
374+
desc: 'Interactive Falcon 9 diagram colored to show SpaceX vertical integration.',
375+
svgPath: path.join(process.cwd(), 'public', 'rockets', 'falcon', 'falcon-9-diagram-01.svg'),
376+
hiddenPartIds: new Set<string>(),
377+
hiddenPartGroups: new Set<string>(),
378+
parts: falconParts,
379+
},
366380
];

0 commit comments

Comments
 (0)