X6 setPosition() does not translate children, so after dagre moves
devices, cards stay at old absolute positions. Add fixDeviceChildren()
that ensures device height fits visible cards and repositions each
card at the correct offset within its parent device.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Double-click any node to toggle collapse — hides ports, edges, and
children. Toolbar buttons allow collapsing/expanding all nodes at once.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sites now stack vertically (top to bottom) instead of a horizontal
row. Reduced nodesep/margins for tighter horizontal device grouping.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Site containers now sized from real device bounding boxes instead
of dagre's reported graph dimensions. Fixes devices overflowing
their site containers after auto-layout.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rewrite dagre auto-layout to work per-site instead of globally.
Each site's devices are laid out independently with LAYER_MAPPING
enforcing vertical hierarchy via invisible edges. Sites positioned
in a row with child sites inside parents. Add X6 embedding for
child sites so layout can detect parent-child site relationships.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move dagre auto-layout to a labeled button with sitemap icon
in the right toolbar section for better visibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Install dagre for hierarchical graph layout. New toolbar button
applies dagre layout to device nodes based on their connections,
then recalculates site containers to wrap their children.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Programmatically duplicate mock data (10 new sites with unique names
and IDs). Configure Manhattan router to route edges around device nodes
by excluding site containers and source/target terminals from obstacles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reduce device node height by removing minimum port height and tightening
card gaps. Fix deployment by correcting Angular outputPath for Docker
build context and adding frontend.context to service.yaml.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Лассо (rubberband) отключено по умолчанию, включается кнопкой в тулбаре
- Порты устройств с картами позиционируются ниже карт (absolute positioning)
- Высота устройств с картами и портами: сумма вместо max
- Мок данные удвоены: +4 сайта, +26 устройств, +6 карт, ~130 портов, ~30 линий
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Свитч «Подписи» в тулбаре теперь скрывает/показывает подписи
на линиях и портах через visibility toggle
- vite outDir перенесён в ../dist для совместимости с react.Dockerfile
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Цвета статусов: приглушённые тона для печати, красный акцент для неисправных
- DeviceNode: название в цветной шапке, карты ниже без наложений
- Перенос слов вместо обрезки во всех нодах
- Лейаут: убран лишний gap после последнего слоя, SITE_MIN_WIDTH 250,
корректный расчёт startY от шапки сайта
- Белый фон графа, чёрные линии по умолчанию
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Стандартный react.Dockerfile копирует только корневой package*.json,
поэтому workspace-зависимости не устанавливались. Теперь build-скрипт
делает cd frontend && npm ci && npm run build.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Добавлены новые устройства (SDH, DWDM, RRL, VoIP, SORM, MGN, RAN BS,
видеонаблюдение), третий корневой сайт «Южный», перекрёстные линии
между сайтами, покрытие всех статусов и сред передачи.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>