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
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:
@@ -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"/>
|
||||
|
||||
@@ -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; }
|
||||
|
||||
Reference in New Issue
Block a user