diff --git a/topology/Field-Switch-Topology.drawio b/topology/Field-Switch-Topology.drawio index 22bebc3..b923259 100644 --- a/topology/Field-Switch-Topology.drawio +++ b/topology/Field-Switch-Topology.drawio @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/topology/Field-Switch-Topology.png b/topology/Field-Switch-Topology.png index ad69b6d..74f3323 100644 Binary files a/topology/Field-Switch-Topology.png and b/topology/Field-Switch-Topology.png differ diff --git a/topology/generate_drawio.py b/topology/generate_drawio.py index 87d13f0..f783521 100644 --- a/topology/generate_drawio.py +++ b/topology/generate_drawio.py @@ -185,7 +185,7 @@ STYLE = { "spare": dict(fill="#F1F1F2", stroke="#9AA0AA", font="#5B6478", dashed=1, bold=0), "decom": dict(fill="#FBE6E2", stroke="#C04B34", font="#8A3423", dashed=1, bold=0), "planned": dict(fill="#FDF1CF", stroke="#B8862C", font="#7A5C00", dashed=1, bold=0), - "panel": dict(fill="#3A4457", stroke="#242C38", font="#FFFFFF", dashed=0, bold=0), + "panel": dict(fill="#F1EDE6", stroke="#A69C89", font="#6B6154", dashed=0, bold=0), } def style_for(dev): @@ -248,26 +248,28 @@ add_cell( # ---------------- node shapes ---------------- # Switches: a real network-switch icon, hostname caption below it. -# Patch panels: a small rack-style unit -- dark body, a lighter header strip, -# and a row of port ticks along the bottom -- built from cells parented to -# the panel's own body cell, so the whole unit moves together when dragged. +# Patch panels: understated -- pale body, a thin hairline where a rack unit's +# seam would be, and a row of faint port outlines. Reads as "passive +# hardware, not the point of this diagram" rather than competing with the +# switches for attention. Built from cells parented to the panel's own body +# cell, so the whole unit moves together when dragged. def panel_shape(did, x, y, w, h, name, st): body_id = f"n{did}" vertex(body_id, name, x, y, w, h, - f'rounded=1;arcSize=10;whiteSpace=wrap;html=1;fillColor={st["fill"]};strokeColor={st["stroke"]};' + f'rounded=1;arcSize=6;whiteSpace=wrap;html=1;fillColor={st["fill"]};strokeColor={st["stroke"]};' f'fontColor={st["font"]};fontSize=9;verticalAlign=bottom;spacingBottom=5;') - # header strip (lighter steel), relative to the body - vertex(f"{body_id}-strip", "", 5, 4, w - 10, 5, - 'rounded=1;arcSize=40;fillColor=#8C97A6;strokeColor=none;', parent=body_id) - # port ticks along the top-middle, evenly spaced + # hairline seam, relative to the body + vertex(f"{body_id}-strip", "", 5, 6, w - 10, 1, + f'rounded=0;fillColor={st["stroke"]};strokeColor=none;', parent=body_id) + # faint port outlines along the top-middle, evenly spaced n_ticks = 6 - tick_w, tick_h = 10, 7 + tick_w, tick_h = 9, 6 usable = w - 16 gap = usable / n_ticks for k in range(n_ticks): tx = 8 + gap * k + (gap - tick_w) / 2 - vertex(f"{body_id}-t{k}", "", tx, 15, tick_w, tick_h, - 'rounded=0;fillColor=#2A313D;strokeColor=#5B6577;strokeWidth=0.75;', parent=body_id) + vertex(f"{body_id}-t{k}", "", tx, 14, tick_w, tick_h, + f'rounded=0;fillColor=none;strokeColor={st["stroke"]};strokeWidth=0.75;', parent=body_id) for did, dev in devs.items(): if did not in pos: @@ -301,7 +303,7 @@ for idx, e in enumerate(edges): legend_items = [ ("#2F5FAD", "#173D6E", "Distribution switch"), ("#F3F5FA", "#7C8AA6", "Field switch"), - ("#3A4457", "#242C38", "Patch panel / splice module"), + ("#F1EDE6", "#A69C89", "Patch panel / splice module"), ("#F1F1F2", "#9AA0AA", "Spare / decommissioned / planned"), ] lx = MARGIN