Make starter SVG diagrams round-trippable in draw.io

Each <name>.drawio.svg now has the corresponding <name>.drawio XML
embedded as content="..." on the root <svg> element. Opening the
SVG in draw.io (File → Open, or drag-drop) loads the full editable
model — no need to keep the .drawio file around for editing.

Updated diagrams/README.md to reflect that both file formats are
now round-trippable from the start.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
znetsixe
2026-04-22 13:00:16 +02:00
parent 0ff55f5e9c
commit 61e0688f73
4 changed files with 272 additions and 4 deletions

View File

@@ -1,5 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 850 660" font-family="Arial, sans-serif" font-size="13">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 850 660" font-family="Arial, sans-serif" font-size="13" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2026-04-22T12:00:00.000Z&quot; agent=&quot;Claude Code placeholder&quot; etag=&quot;initial&quot; version=&quot;22.0.0&quot; type=&quot;device&quot;&gt;
&lt;diagram name=&quot;basin-model&quot; id=&quot;basinModel&quot;&gt;
&lt;mxGraphModel dx=&quot;1200&quot; dy=&quot;900&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;850&quot; pageHeight=&quot;900&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;
&lt;root&gt;
&lt;mxCell id=&quot;0&quot; /&gt;
&lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;
&lt;mxCell id=&quot;title&quot; value=&quot;Basin model — physical layout + control thresholds&quot; style=&quot;text;html=1;fontSize=16;fontStyle=1;align=center;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;200&quot; y=&quot;20&quot; width=&quot;500&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;tank&quot; value=&quot;&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#E6F2FF;strokeColor=#000000;strokeWidth=2;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;300&quot; y=&quot;80&quot; width=&quot;260&quot; height=&quot;520&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;deadvol&quot; value=&quot;&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#9FC5E8;strokeColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;302&quot; y=&quot;550&quot; width=&quot;256&quot; height=&quot;48&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;freeboard_label&quot; value=&quot;freeboard&quot; style=&quot;text;html=1;fontSize=11;fontStyle=2;align=center;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;310&quot; y=&quot;90&quot; width=&quot;240&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;overflow_line&quot; value=&quot;&quot; style=&quot;endArrow=none;html=1;strokeColor=#B22222;dashed=1;strokeWidth=2;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;
&lt;mxPoint x=&quot;250&quot; y=&quot;145&quot; as=&quot;sourcePoint&quot; /&gt;
&lt;mxPoint x=&quot;620&quot; y=&quot;145&quot; as=&quot;targetPoint&quot; /&gt;
&lt;/mxGeometry&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;overflow_label_l&quot; value=&quot;heightOverflow&quot; style=&quot;text;html=1;fontSize=12;align=right;fontColor=#B22222;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;140&quot; y=&quot;130&quot; width=&quot;100&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;overflow_label_r&quot; value=&quot;spill → measure&quot; style=&quot;text;html=1;fontSize=12;align=left;fontColor=#B22222;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;630&quot; y=&quot;130&quot; width=&quot;140&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;maxflow_line&quot; value=&quot;&quot; style=&quot;endArrow=none;html=1;strokeColor=#D68910;dashed=1;strokeWidth=2;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;
&lt;mxPoint x=&quot;250&quot; y=&quot;200&quot; as=&quot;sourcePoint&quot; /&gt;
&lt;mxPoint x=&quot;620&quot; y=&quot;200&quot; as=&quot;targetPoint&quot; /&gt;
&lt;/mxGeometry&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;maxflow_label_l&quot; value=&quot;maxFlowLevel&quot; style=&quot;text;html=1;fontSize=12;align=right;fontColor=#D68910;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;140&quot; y=&quot;185&quot; width=&quot;100&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;scaling_label&quot; value=&quot;SCALING RANGE&amp;#10;(levelbased: demand ramps 0→100%)&quot; style=&quot;text;html=1;fontSize=11;fontStyle=2;align=center;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;310&quot; y=&quot;255&quot; width=&quot;240&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;startlevel_line&quot; value=&quot;&quot; style=&quot;endArrow=none;html=1;strokeColor=#1E8449;dashed=1;strokeWidth=2;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;
&lt;mxPoint x=&quot;250&quot; y=&quot;345&quot; as=&quot;sourcePoint&quot; /&gt;
&lt;mxPoint x=&quot;620&quot; y=&quot;345&quot; as=&quot;targetPoint&quot; /&gt;
&lt;/mxGeometry&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;startlevel_label_l&quot; value=&quot;startLevel&quot; style=&quot;text;html=1;fontSize=12;align=right;fontColor=#1E8449;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;140&quot; y=&quot;330&quot; width=&quot;100&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;deadzone_label&quot; value=&quot;DEAD ZONE&amp;#10;(hysteresis — keep last cmd)&quot; style=&quot;text;html=1;fontSize=11;fontStyle=2;align=center;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;310&quot; y=&quot;360&quot; width=&quot;240&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;inflow_arrow&quot; value=&quot;&quot; style=&quot;endArrow=classic;html=1;strokeColor=#1F4E79;strokeWidth=3;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;
&lt;mxPoint x=&quot;150&quot; y=&quot;410&quot; as=&quot;sourcePoint&quot; /&gt;
&lt;mxPoint x=&quot;300&quot; y=&quot;410&quot; as=&quot;targetPoint&quot; /&gt;
&lt;/mxGeometry&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;inflow_label&quot; value=&quot;INFLOW&quot; style=&quot;text;html=1;fontSize=13;fontStyle=1;align=left;fontColor=#1F4E79;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;90&quot; y=&quot;395&quot; width=&quot;70&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;inlet_label&quot; value=&quot;heightInlet&quot; style=&quot;text;html=1;fontSize=12;align=left;fontColor=#1F4E79;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;570&quot; y=&quot;400&quot; width=&quot;90&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;stoplevel_line&quot; value=&quot;&quot; style=&quot;endArrow=none;html=1;strokeColor=#6C3483;dashed=1;strokeWidth=2;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;
&lt;mxPoint x=&quot;250&quot; y=&quot;465&quot; as=&quot;sourcePoint&quot; /&gt;
&lt;mxPoint x=&quot;620&quot; y=&quot;465&quot; as=&quot;targetPoint&quot; /&gt;
&lt;/mxGeometry&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;stoplevel_label_l&quot; value=&quot;stopLevel&quot; style=&quot;text;html=1;fontSize=12;align=right;fontColor=#6C3483;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;140&quot; y=&quot;450&quot; width=&quot;100&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;stoplevel_label_r&quot; value=&quot;unconditional STOP&quot; style=&quot;text;html=1;fontSize=12;align=left;fontColor=#6C3483;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;630&quot; y=&quot;450&quot; width=&quot;160&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;buffer_label&quot; value=&quot;BUFFER&quot; style=&quot;text;html=1;fontSize=11;fontStyle=2;align=center;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;310&quot; y=&quot;490&quot; width=&quot;240&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;outflow_arrow&quot; value=&quot;&quot; style=&quot;endArrow=classic;html=1;strokeColor=#1F4E79;strokeWidth=3;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;
&lt;mxPoint x=&quot;560&quot; y=&quot;540&quot; as=&quot;sourcePoint&quot; /&gt;
&lt;mxPoint x=&quot;720&quot; y=&quot;540&quot; as=&quot;targetPoint&quot; /&gt;
&lt;/mxGeometry&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;outflow_label&quot; value=&quot;OUTFLOW&quot; style=&quot;text;html=1;fontSize=13;fontStyle=1;align=left;fontColor=#1F4E79;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;730&quot; y=&quot;525&quot; width=&quot;80&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;outlet_label_l&quot; value=&quot;heightOutlet&quot; style=&quot;text;html=1;fontSize=12;align=right;fontColor=#B22222;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;140&quot; y=&quot;525&quot; width=&quot;100&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;outlet_label_r&quot; value=&quot;dry-run trip&quot; style=&quot;text;html=1;fontSize=12;align=left;fontColor=#B22222;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;730&quot; y=&quot;550&quot; width=&quot;120&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;deadvol_label&quot; value=&quot;dead volume&quot; style=&quot;text;html=1;fontSize=11;fontStyle=2;align=center;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;310&quot; y=&quot;560&quot; width=&quot;240&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;floor_label&quot; value=&quot;floor (0)&quot; style=&quot;text;html=1;fontSize=11;align=right;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;190&quot; y=&quot;590&quot; width=&quot;50&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;mxCell id=&quot;basin_label&quot; value=&quot;heightBasin&quot; style=&quot;text;html=1;fontSize=11;align=right;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;
&lt;mxGeometry x=&quot;180&quot; y=&quot;70&quot; width=&quot;60&quot; height=&quot;20&quot; as=&quot;geometry&quot; /&gt;
&lt;/mxCell&gt;
&lt;/root&gt;
&lt;/mxGraphModel&gt;
&lt;/diagram&gt;
&lt;/mxfile&gt;">
<title>Basin model — physical layout + control thresholds</title>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 15 KiB