Rack: rack handles on the Sliger ears
Lint / JS (eslint) (push) Successful in 13s
Lint / Python (flake8) (push) Successful in 1m50s
Lint / Notify on failure (push) Skipped
Lint / Deploy (push) Skipped
Security / Python Security (bandit) (push) Successful in 1m17s
Test / Python Tests (pytest) (push) Successful in 1m39s
Lint / Python (flake8) (pull_request) Successful in 1m28s
Lint / JS (eslint) (pull_request) Successful in 17s
Lint / Notify on failure (pull_request) Skipped
Lint / Deploy (pull_request) Skipped
Security / Python Security (bandit) (pull_request) Successful in 1m26s
Test / Python Tests (pytest) (pull_request) Successful in 1m6s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-11 01:55:12 -05:00
co-authored by Claude Opus 5.5
parent 7408b1feca
commit 6e6150f9b9
2 changed files with 13 additions and 0 deletions
+10
View File
@@ -153,6 +153,15 @@ const RACK_FRONTS = {
'server-4u': genericServer(4, 24),
};
// A rack handle on a Sliger ear: a vertical bar standing off the ear on two mounts
function sligerHandle(x) {
const top = 70, bottom = 350;
return `<rect class="rf-sl-mount" x="${x - 2}" y="${top - 14}" width="30" height="22" rx="4"/>
<rect class="rf-sl-mount" x="${x - 2}" y="${bottom - 8}" width="30" height="22" rx="4"/>
<rect class="rf-sl-handle" x="${x}" y="${top - 6}" width="26" height="${bottom - top + 12}" rx="13"/>
<rect class="rf-sl-handle-shine" x="${x + 5}" y="${top + 6}" width="5" height="${bottom - top - 12}" rx="2.5"/>`;
}
function sligerFront(colour, hole) {
const W = 1100, H = 420;
// Hex perforations: a pattern of hexagons cut out of the panel through a mask
@@ -176,6 +185,7 @@ function sligerFront(colour, hole) {
<rect class="rf-sl-inside" x="70" y="30" width="870" height="${H - 60}"/>${bays}
<rect class="rf-sl-ear" x="0" y="0" width="70" height="${H}" rx="4"/>
<rect class="rf-sl-ear" x="${W - 70}" y="0" width="70" height="${H}" rx="4"/>
${sligerHandle(14)}${sligerHandle(W - 40)}
<rect x="52" y="10" width="${W - 104}" height="${H - 20}" rx="8" style="fill:${colour}" mask="url(#${id})"/>
<rect class="rf-sl-edge" x="52" y="10" width="${W - 104}" height="${H - 20}" rx="8"/>
<circle class="rf-sl-button" cx="988" cy="88" r="17"/>
+3
View File
@@ -1636,6 +1636,9 @@ body.fp-marks-off .fp-svg .fp-mark { display: none; }
.rf-sl-button { fill: #c9ccd0; stroke: #8a8e93; stroke-width: 2; }
.rf-sl-bay { opacity: .45; }
.rf-sl-io { fill: #0e0f11; }
.rf-sl-mount { fill: #0c0d0f; }
.rf-sl-handle { fill: #3a3e44; stroke: #0a0b0c; stroke-width: 2; }
.rf-sl-handle-shine { fill: #6b717a; }
.ua-ear-plate { fill: #d3d5d8; stroke: #b2b4b8; stroke-width: 1; }
.ua-ear-seam { fill: #9fa1a6; }
.ua-ear-slot { fill: #2a2c30; }