From 9979ae9dc8affb343ff6ad9cc3fc4871a3b92288 Mon Sep 17 00:00:00 2001 From: findthelorax Date: Wed, 22 Apr 2026 00:18:26 -0400 Subject: [PATCH] path max width set to 80px --- .../src/components/panels/DetailPanel.tsx | 125 +++++++++--------- 1 file changed, 64 insertions(+), 61 deletions(-) diff --git a/frontend/src/components/panels/DetailPanel.tsx b/frontend/src/components/panels/DetailPanel.tsx index b35da39..1b99028 100644 --- a/frontend/src/components/panels/DetailPanel.tsx +++ b/frontend/src/components/panels/DetailPanel.tsx @@ -63,66 +63,69 @@ export function DetailPanel({ onEdit }: DetailPanelProps) { node={node} nodes={nodes} onUngroup={() => { ungroup(node.id) }} - onToggleBorder={() => { - snapshotHistory() - updateNode(node.id, { - custom_colors: { - ...node.data.custom_colors, - show_border: !(node.data.custom_colors?.show_border !== false), - }, - }) - }} - onClose={() => setSelectedNode(null)} - onSelectChild={(id) => setSelectedNode(id)} - /> - ) - } - - // Normal single-node panel - const addingService = addingForNode === node.id - const editingIndex = editingFor?.nodeId === node.id ? editingFor.index : null - const { data } = node - const services = data.services ?? [] - const statusColor = STATUS_COLORS[data.status] - const host = data.ip ?? data.hostname - - const handleDelete = () => { - if (confirm(`Delete "${data.label}"?`)) { - snapshotHistory() - deleteNode(node.id) - } - } - - const handleAddService = () => { - const trimmedPort = newSvc.port.trim() - const port = trimmedPort === '' ? undefined : parseInt(trimmedPort, 10) - if (!newSvc.service_name.trim()) return - if (trimmedPort !== '' && (port == null || Number.isNaN(port) || port < 1 || port > 65535)) return - snapshotHistory() - const path = newSvc.path.trim() - const svc: ServiceInfo = { - ...(port != null ? { port } : {}), - protocol: newSvc.protocol, - service_name: newSvc.service_name.trim(), - ...(path ? { path } : {}), - } - updateNode(node.id, { services: [...services, svc] }) - setNewSvc(EMPTY_FORM) - setAddingForNode(null) - } - - const handleRemoveService = (index: number) => { - snapshotHistory() - const updated = services.filter((_, i) => i !== index) - updateNode(node.id, { services: updated }) - if (editingIndex === index) setEditingFor(null) - } - - const handleStartEdit = (index: number) => { - const svc = services[index] - if (!svc) return - setEditSvc({ port: svc.port != null ? String(svc.port) : '', protocol: svc.protocol, service_name: svc.service_name, path: svc.path ?? '' }) - setEditingFor({ nodeId: node.id, index }) + // Layout: service name always takes precedence, path truncates first or hides if needed, port/protocol always shown + return ( +
+ +
+ + {svc.service_name} + + {/* Path: only show if name is not too long, truncate path first */} + {pathLabel && ( + + {pathLabel} + + )} +
+ {/* Port/protocol always shown, never truncated, always right-aligned */} + {hasPort && ( + {portLabel}/{svc.protocol} + )} +