From c82ecf8184fe088b20fddf3f568b3987fc0db589 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 25 Jun 2026 08:04:22 +0000 Subject: [PATCH 1/3] feat(thruster): support bottom propeller for single direction thrusters When `singleDirection` was enabled the bottom propeller was positioned at the bottom of a (non-existent) downward bar and ended up outside the viewBox, so it could not be used. Attach the bottom propeller to the zero line (the base of the single-direction bar) like the half-size variant does, and widen the viewBox downwards when a bottom propeller is present so it stays in view together with the doubled-height bar and top propeller. Add a `SingleDirectionWithPropellers` story showing a single direction thruster with both a top and a bottom propeller. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Ej77SRHRBTnWQtbPBYPhzd --- .../thruster/thruster.stories.ts | 12 ++++++++++++ .../navigation-instruments/thruster/thruster.ts | 17 ++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.stories.ts b/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.stories.ts index d7b19435c..eb8d62845 100644 --- a/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.stories.ts +++ b/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.stories.ts @@ -102,6 +102,18 @@ export const SingleDirection: Story = { }, }; +export const SingleDirectionWithPropellers: Story = { + args: { + singleDirection: true, + thrust: 50, + setpoint: 30, + state: InstrumentState.active, + priority: Priority.enhanced, + topPropeller: PropellerType.single, + bottomPropeller: PropellerType.cap, + }, +}; + export const SingleDirectionSingleSidedWithAdvice: Story = { args: { singleDirection: true, diff --git a/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts b/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts index 0c43ab9fb..06848d31d 100644 --- a/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts +++ b/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts @@ -756,12 +756,23 @@ export function thruster( let viewBox = '-80 -160 160 320'; let y = -160; if (options.singleDirection) { - viewBox = '-80 -300 160 320'; - y = -320; + if (options.bottomPropeller !== PropellerType.none) { + // Make room below the zero line for the bottom propeller while keeping + // the doubled-height bar and the top propeller in view. + viewBox = '-80 -268 160 320'; + y = -288; + } else { + viewBox = '-80 -300 160 320'; + y = -320; + } } const top = topPropeller(height, tc.arrowColor, options.topPropeller); + // For single direction thrusters the bar only extends upwards and its base + // sits on the zero line, so the bottom propeller must be attached there + // (like the half size variant) instead of at the bottom of a (missing) + // downward bar. const bottom = bottomPropeller( - options.singleDirectionHalfSize ? 0.5 : height, + options.singleDirectionHalfSize || options.singleDirection ? 0.5 : height, options.bottomPropeller ); return svg` From c3250e8eed01f5daa55487f4dced30595917bd17 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 25 Jun 2026 08:54:46 +0000 Subject: [PATCH 2/3] test(thruster): add visual baseline for single direction propellers Add the linux visual-regression baseline for the new `SingleDirectionWithPropellers` story (generated in the same Playwright Docker image CI uses) so the storybook visual test passes. Also drop the inline explanatory comments added in the previous commit to follow the repository guideline of not using inline comments. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Ej77SRHRBTnWQtbPBYPhzd --- .../single-direction-with-propellers-auto.png | Bin 0 -> 8226 bytes .../navigation-instruments/thruster/thruster.ts | 6 ------ 2 files changed, 6 deletions(-) create mode 100644 packages/openbridge-webcomponents/__vis__/linux/__baselines__/navigation-instruments/thruster/thruster.stories.ts/single-direction-with-propellers-auto.png diff --git a/packages/openbridge-webcomponents/__vis__/linux/__baselines__/navigation-instruments/thruster/thruster.stories.ts/single-direction-with-propellers-auto.png b/packages/openbridge-webcomponents/__vis__/linux/__baselines__/navigation-instruments/thruster/thruster.stories.ts/single-direction-with-propellers-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd96fba4d2834be7b5fd15246e4a35ef598e9cd GIT binary patch literal 8226 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 literal 0 HcmV?d00001 diff --git a/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts b/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts index 06848d31d..b4439eb6c 100644 --- a/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts +++ b/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts @@ -757,8 +757,6 @@ export function thruster( let y = -160; if (options.singleDirection) { if (options.bottomPropeller !== PropellerType.none) { - // Make room below the zero line for the bottom propeller while keeping - // the doubled-height bar and the top propeller in view. viewBox = '-80 -268 160 320'; y = -288; } else { @@ -767,10 +765,6 @@ export function thruster( } } const top = topPropeller(height, tc.arrowColor, options.topPropeller); - // For single direction thrusters the bar only extends upwards and its base - // sits on the zero line, so the bottom propeller must be attached there - // (like the half size variant) instead of at the bottom of a (missing) - // downward bar. const bottom = bottomPropeller( options.singleDirectionHalfSize || options.singleDirection ? 0.5 : height, options.bottomPropeller From 3fa3aa4abbe73ab979ba89a2f8736472ff0a08a6 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 25 Jun 2026 10:43:00 +0000 Subject: [PATCH 3/3] fix(thruster): avoid clipping single direction bottom propeller The single direction viewBox was raised to make room for the bottom propeller, but that clipped the taller bar/arrow used when there is no top propeller (e.g. topPropeller=none with bottomPropeller=single). Keep the top edge at -300 (which fits the tallest bar) and instead extend the viewBox downwards so the bottom propeller fits in every top/bottom propeller combination. Regenerate the SingleDirectionWithPropellers visual baseline accordingly. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Ej77SRHRBTnWQtbPBYPhzd --- .../single-direction-with-propellers-auto.png | Bin 8226 -> 25546 bytes .../thruster/thruster.ts | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/openbridge-webcomponents/__vis__/linux/__baselines__/navigation-instruments/thruster/thruster.stories.ts/single-direction-with-propellers-auto.png b/packages/openbridge-webcomponents/__vis__/linux/__baselines__/navigation-instruments/thruster/thruster.stories.ts/single-direction-with-propellers-auto.png index 9dd96fba4d2834be7b5fd15246e4a35ef598e9cd..179b2a9ccfacb4ecf10645acdc18f8ea805bf5c8 100644 GIT binary patch literal 25546 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 diff --git a/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts b/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts index b4439eb6c..c642ee0ce 100644 --- a/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts +++ b/packages/openbridge-webcomponents/src/navigation-instruments/thruster/thruster.ts @@ -757,8 +757,8 @@ export function thruster( let y = -160; if (options.singleDirection) { if (options.bottomPropeller !== PropellerType.none) { - viewBox = '-80 -268 160 320'; - y = -288; + viewBox = '-80 -300 160 356'; + y = -320; } else { viewBox = '-80 -300 160 320'; y = -320;