Add views, import/duplicate, DRC, jumps toggle, multi-wire select, auto-route, delete view tabs
- Roadmap #22: File→Import JSON to restore a diagram (drag-drop or file picker) - Roadmap #23: Duplicate diagram from diagram list - Roadmap #24: DRC panel with collapsible categories (unconnected pins, dup refs, no length, no P/N) - Multi-view tabs: named views per diagram with independent device/wire layouts; snapshot-on-entry prevents bleed - Keyboard arrow nudge for selected device(s) - Undo for move, duplicate, label/property changes - Wire jump arcs toggle (⌒ Jumps button in toolbar) - Shift+click multi-wire selection; right-click bulk clear waypoints or auto-route - Auto-route: obstacle-avoiding ortho routing for single or bulk selected wires - Delete view tab with × button; right-click context menu for rename/delete Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
<button id="btn-route-curved" class="route-btn" title="Curved (smooth bezier) routing">∿ Curved</button>
|
||||
<div class="sep"></div>
|
||||
<!-- Actions -->
|
||||
<button id="btn-jumps" title="Toggle wire jump arcs at crossings" class="jumps-btn active">⌒ Jumps</button>
|
||||
<button id="btn-snap" title="Toggle grid snap (G)" class="snap-btn">⊹ Snap</button>
|
||||
<button id="btn-harness" title="Toggle harness view (H)">⌇ Harness</button>
|
||||
<button id="btn-fit" title="Fit canvas to devices (F)">⊞ Fit</button>
|
||||
@@ -37,10 +38,12 @@
|
||||
</div>
|
||||
|
||||
<div class="toolbar-right">
|
||||
<button id="btn-drc" title="Run design-rule check">⚠ DRC</button>
|
||||
<div id="saved-indicator">✓ Saved</div>
|
||||
<div class="export-wrap">
|
||||
<button id="export-toggle">Export ▾</button>
|
||||
<div id="export-menu">
|
||||
<button id="btn-import">📂 Import JSON</button>
|
||||
<button id="btn-bom">📋 BOM (CSV)</button>
|
||||
<button id="btn-assembly">📄 Assembly (TXT)</button>
|
||||
<button id="btn-json">{ } JSON</button>
|
||||
@@ -49,6 +52,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input id="import-file-input" type="file" accept=".json" style="display:none">
|
||||
</header>
|
||||
|
||||
<!-- ── Mode bar ─────────────────────────────────────────────────────────── -->
|
||||
@@ -96,6 +100,11 @@
|
||||
|
||||
<!-- Canvas -->
|
||||
<main id="canvas-area">
|
||||
<!-- View tab bar -->
|
||||
<div id="view-tab-bar" style="display:none">
|
||||
<button class="view-tab active" data-view-id="main">Main</button>
|
||||
<button id="btn-add-view" title="Add view">+</button>
|
||||
</div>
|
||||
<div id="canvas-container"></div>
|
||||
<div id="canvas-placeholder">
|
||||
<div class="placeholder-content">
|
||||
@@ -395,6 +404,21 @@
|
||||
<!-- populated dynamically by app.js -->
|
||||
</div>
|
||||
|
||||
<!-- ── DRC Modal ──────────────────────────────────────────────────────────────── -->
|
||||
<div id="drc-modal" style="display:none">
|
||||
<div class="modal-box" style="min-width:480px;max-width:640px">
|
||||
<div class="modal-header">
|
||||
<h3>Design Rule Check</h3>
|
||||
</div>
|
||||
<div class="modal-body" id="drc-results" style="max-height:400px;overflow-y:auto;font-size:12px;padding:10px;gap:6px">
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div style="flex:1"></div>
|
||||
<button id="drc-close" class="btn-primary">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://unpkg.com/konva@9/konva.min.js"></script>
|
||||
<script src="/js/api.js"></script>
|
||||
<script src="/js/deviceTypes.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user