diff --git a/js/kundenkarte.js b/js/kundenkarte.js index 9508096..2dc0493 100755 --- a/js/kundenkarte.js +++ b/js/kundenkarte.js @@ -9315,14 +9315,33 @@ var terminals = this.getTerminals(eq); var termPos = this.getTerminalPosition(eq, targetTermId, terminals); if (termPos) { + // Add orthogonal bend if needed before target + if (this.wireDrawPoints.length > 0) { + var lastPt = this.wireDrawPoints[this.wireDrawPoints.length - 1]; + // If not aligned, add intermediate point for 90° bend + if (lastPt.x !== termPos.x && lastPt.y !== termPos.y) { + // Go vertical first, then horizontal + this.wireDrawPoints.push({x: lastPt.x, y: termPos.y}); + } + } this.wireDrawPoints.push({x: termPos.x, y: termPos.y}); } } - // Build path string from points + // Build orthogonal path - ensure all segments are horizontal or vertical var pathData = ''; for (var i = 0; i < this.wireDrawPoints.length; i++) { - pathData += (i === 0 ? 'M' : 'L') + ' ' + this.wireDrawPoints[i].x + ' ' + this.wireDrawPoints[i].y + ' '; + var pt = this.wireDrawPoints[i]; + if (i === 0) { + pathData += 'M ' + pt.x + ' ' + pt.y + ' '; + } else { + var prevPt = this.wireDrawPoints[i - 1]; + // If diagonal, add intermediate point + if (prevPt.x !== pt.x && prevPt.y !== pt.y) { + pathData += 'L ' + prevPt.x + ' ' + pt.y + ' '; + } + pathData += 'L ' + pt.x + ' ' + pt.y + ' '; + } } // Show connection dialog to set labels and save diff --git a/sw.js b/sw.js index 3f00fdc..614769a 100755 --- a/sw.js +++ b/sw.js @@ -3,8 +3,8 @@ * Offline-First für Schaltschrank-Dokumentation */ -const CACHE_NAME = 'kundenkarte-pwa-v6.1'; -const OFFLINE_CACHE = 'kundenkarte-offline-v6.1'; +const CACHE_NAME = 'kundenkarte-pwa-v6.2'; +const OFFLINE_CACHE = 'kundenkarte-offline-v6.2'; // Statische Assets die immer gecached werden (ohne Query-String) const STATIC_ASSETS = [