From a6033e2038e8536b0588015fb6508006defcfbd6 Mon Sep 17 00:00:00 2001 From: sjat Date: Wed, 24 Jun 2026 19:07:10 +0200 Subject: [PATCH] fix(rack): centre 0U rail labels across the bar (dominant-baseline) --- docs/infrastructure/racks/rack01-elevation.svg | 4 ++-- docs/infrastructure/racks/rack01.md | 4 ++-- scripts/gen_rack.py | 3 ++- tests/test_gen_rack.py | 8 ++++++++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/docs/infrastructure/racks/rack01-elevation.svg b/docs/infrastructure/racks/rack01-elevation.svg index 74a8a94..29b44b1 100644 --- a/docs/infrastructure/racks/rack01-elevation.svg +++ b/docs/infrastructure/racks/rack01-elevation.svg @@ -220,12 +220,12 @@ pdu01 · pdu · in-use · cluster: — · 0U left -pdu01 +pdu01 pdu02 · pdu · in-use · cluster: — · 0U right -pdu02 +pdu02 srv01 · server · staging · cluster: tappaas · shf01/front/slot 1 diff --git a/docs/infrastructure/racks/rack01.md b/docs/infrastructure/racks/rack01.md index 93a5b09..7885848 100644 --- a/docs/infrastructure/racks/rack01.md +++ b/docs/infrastructure/racks/rack01.md @@ -227,12 +227,12 @@ _Auto-generated from `docs/hardware/*.md` (items with `rack: rack01`) — do not pdu01 · pdu · in-use · cluster: — · 0U left -pdu01 +pdu01 pdu02 · pdu · in-use · cluster: — · 0U right -pdu02 +pdu02 srv01 · server · staging · cluster: tappaas · shf01/front/slot 1 diff --git a/scripts/gen_rack.py b/scripts/gen_rack.py index 71d26b5..1efaa44 100644 --- a/scripts/gen_rack.py +++ b/scripts/gen_rack.py @@ -462,7 +462,8 @@ def render_svg(rack: str, items: list[dict]) -> str: f"fill=\"{color}\" {_stroke_attrs(fm.get('status'))}/>" ) p.append( - f'{_esc(name)}' ) p.append("") diff --git a/tests/test_gen_rack.py b/tests/test_gen_rack.py index 4842980..106fe9e 100644 --- a/tests/test_gen_rack.py +++ b/tests/test_gen_rack.py @@ -156,6 +156,14 @@ def test_render_svg_draws_zero_u_rail(): assert "rotate(-90" in svg +def test_render_svg_rail_label_is_centered_across_bar(): + # The rotated 0U rail label must be centered across the narrow bar width, + # not sitting on the alphabetic baseline (which reads off-centre). + items = [item(hostname="pdu01", kind="pdu", rack_face="left")] + svg = gen_rack.render_svg("rack01", items) + assert 'dominant-baseline="central"' in svg + + def test_render_svg_both_face_draws_in_both_columns(): items = [item(hostname="dev", rack_u=10, u_height=1, rack_face="both")] svg = gen_rack.render_svg("rack01", items)