diff --git a/js/kundenkarte.js b/js/kundenkarte.js index d8abef3..28a17bd 100755 --- a/js/kundenkarte.js +++ b/js/kundenkarte.js @@ -4584,6 +4584,14 @@ self.showBusbarPopup(connectionId, e.clientX, e.clientY); }); + // Hutschiene (rail) click - show edit popup + $(document).off('click.rail').on('click.rail', '.schematic-rail', function(e) { + e.preventDefault(); + e.stopPropagation(); + var carrierId = $(this).data('carrier-id'); + self.showCarrierPopup(carrierId, e.clientX, e.clientY); + }); + // Terminal right-click - show output/cable dialog $(document).off('contextmenu.terminal').on('contextmenu.terminal', '.schematic-terminal', function(e) { e.preventDefault(); @@ -4704,6 +4712,142 @@ $('.schematic-busbar-popup').remove(); }, + showCarrierPopup: function(carrierId, x, y) { + var self = this; + this.hideCarrierPopup(); + + var carrier = this.carriers.find(function(c) { return String(c.id) === String(carrierId); }); + if (!carrier) return; + + var html = '
'; + html += '
Hutschiene
'; + html += '
' + this.escapeHtml(carrier.label || 'Ohne Name') + ' (' + carrier.total_te + ' TE)
'; + html += '
'; + html += ''; + html += ''; + html += '
'; + + $('body').append(html); + + $('.carrier-edit-btn').on('click', function() { + var id = $(this).data('id'); + self.hideCarrierPopup(); + self.showEditCarrierDialog(id); + }); + + $('.carrier-delete-btn').on('click', function() { + var id = $(this).data('id'); + self.hideCarrierPopup(); + self.deleteCarrier(id); + }); + + // Close on click outside + setTimeout(function() { + $(document).one('click', function() { + self.hideCarrierPopup(); + }); + }, 100); + }, + + hideCarrierPopup: function() { + $('.schematic-carrier-popup').remove(); + }, + + showEditCarrierDialog: function(carrierId) { + var self = this; + var carrier = this.carriers.find(function(c) { return String(c.id) === String(carrierId); }); + if (!carrier) return; + + var html = '
'; + html += '
'; + html += '

Hutschiene bearbeiten

'; + + // Label + html += '
'; + html += '
'; + + // Total TE + html += '
'; + html += '
'; + + // Buttons + html += '
'; + html += ''; + html += ''; + html += '
'; + + $('body').append(html); + + $('.dialog-carrier-save').on('click', function() { + var label = $('.dialog-carrier-label').val(); + var totalTe = parseInt($('.dialog-carrier-te').val()) || 12; + self.updateCarrier(carrierId, label, totalTe); + self.closeDialog(); + }); + + $('.dialog-carrier-cancel, .schematic-dialog-overlay').on('click', function() { + self.closeDialog(); + }); + }, + + updateCarrier: function(carrierId, label, totalTe) { + var self = this; + var baseUrl = $('body').data('base-url') || ''; + + $.ajax({ + url: baseUrl + '/custom/kundenkarte/ajax/equipment_carrier.php', + method: 'POST', + data: { + action: 'update', + carrier_id: carrierId, + label: label, + total_te: totalTe, + token: KundenKarte.token + }, + dataType: 'json', + success: function(response) { + if (response.success) { + self.loadData(); + self.showMessage('Hutschiene aktualisiert', 'success'); + } else { + self.showMessage('Fehler: ' + (response.error || 'Unbekannt'), 'error'); + } + }, + error: function() { + self.showMessage('Fehler beim Speichern', 'error'); + } + }); + }, + + deleteCarrier: function(carrierId) { + var self = this; + var baseUrl = $('body').data('base-url') || ''; + + this.showConfirmDialog('Hutschiene löschen', 'Diese Hutschiene und alle Equipments darauf wirklich löschen?', function() { + $.ajax({ + url: baseUrl + '/custom/kundenkarte/ajax/equipment_carrier.php', + method: 'POST', + data: { + action: 'delete', + carrier_id: carrierId, + token: KundenKarte.token + }, + dataType: 'json', + success: function(response) { + if (response.success) { + self.loadData(); + self.showMessage('Hutschiene gelöscht', 'success'); + } else { + self.showMessage('Fehler: ' + (response.error || 'Unbekannt'), 'error'); + } + }, + error: function() { + self.showMessage('Fehler beim Löschen', 'error'); + } + }); + }); + }, + showEditBusbarDialog: function(connectionId) { var self = this; var conn = this.connections.find(function(c) { return String(c.id) === String(connectionId); }); @@ -5126,9 +5270,9 @@ html += ''; - // Rail (mit Überstand links und rechts) + // Rail (mit Überstand links und rechts) - klickbar für Bearbeitung html += ''; + html += 'fill="' + self.COLORS.rail + '" rx="1" style="cursor:pointer;"/>'; // Rail label (links vom Überstand, centered with rail) html += ''; @@ -5161,7 +5305,7 @@ html += 'fill="' + self.COLORS.railBg + '" rx="2"/>'; html += ''; + html += 'fill="' + self.COLORS.rail + '" rx="1" style="cursor:pointer;"/>'; html += ''; html += self.escapeHtml(carrier.label || 'Hutschiene ' + (idx + 1));