Контекстное меню, тип узла и участка, разворот
Меню правого щелчка в редакторе: для узла, участка и пустого места — свои команды. Отсюда меняют тип узла (потребитель, источник, насосная…) и тип линии (участок или оборудование), разворачивают направление участка.
Возможности
- Меню узла: «Свойства», «Начать трассу отсюда», «Слить другой узел в этот…», «Тип узла, ЗН, подпитка…», «Показать» (F), «Убрать узел, соединив трубы…», «Удалить…» (Del), «Копировать координаты».
- Меню участка: «Свойства», «Изломы» (E), «Врезать узел здесь…», «Тип линии (участок ↔ оборудование)…», «Отводы → местные сопротивления…», «Начать трассу отсюда (врезка)», «Показать», «Удалить…».
- Меню пустого места: «Новый узел здесь», «Начать трассу здесь», «Копировать координаты».
- Тип узла: «Узел», «Потребитель», «Обобщённый потребитель», «Источник тепла», «Насосная станция», «Узел соединения»; отдельно — флажки «Узел с заданным напором» и «Узел подпитки».
- Тип линии: участок трубопровода или оборудование — насос, регулятор давления, регулятор расхода, задвижка, регулирующая арматура, байпас, диафрагма, регулятор перепада давления, обратный клапан.
- Разворот направления участка из его карточки — с парной трубой и предупреждением об оборудовании, которое зависит от направления.
Как это работает
Права в меню. Пункт, на который нет права, виден серым с подсказкой «Нет права: создавать участки», «удалять узлы» и т. п. Сервер проверяет те же права ещё раз при записи.
Тип узла — в какой таблице лежит карточка узла, как в десктопе: «Потребитель» — realconsumers, «Обобщённый потребитель» — generalizedconsumers, «Источник тепла» — heatsources, «Насосная станция» — pumpstations, «Узел соединения» — connectnodes, простой узел — без карточки. Это не конструктивный вид узла (камера, павильон) — он правится в карточке. Смена типа удаляет карточку прежнего типа и создаёт новую со значениями по умолчанию; окно заранее показывает, что удалится. Узел с внутренней схемой нельзя сделать потребителем. Заданный напор (setpressnodes) и подпитка (refillnodes) — не тип, а дополнение к любому узлу.
Тип линии — так же: карточка участка в heatpipesections или оборудования в своей таблице (dampers, pumps, pressregulators…). Старая карточка удаляется, новая создаётся с умолчаниями, у пары подача/обратка тип меняется у обеих труб. После смены открывается карточка нового типа.
Разворот меняет местами начальный и конечный узлы участка и переворачивает его геометрию. Окно показывает узлы до и после, признак, число точек и длину, парную трубу (её можно развернуть вместе) и оборудование, чьё действие зависит от направления: для него нужно отметить «Понимаю, что направление действия оборудования изменится».
Все три правки — операции журнала: одна транзакция, предпросмотр без записи, проверка версий, отмена Ctrl+Z.
Что нужно для работы
- Тип узла — право править узел и создавать объекты нового вида (потребителей, источников…); флажки ЗН и подпитки — право править режим.
- Тип линии — право править участки; для оборудования — ещё и право создавать оборудование.
- Разворот — право править участки; кнопка в карточке видна только в режиме редактора.
- Флаги API
MUTATIONS_ENABLEDиTOPOLOGY_MUTATIONS_ENABLED.
Шаги
Правый щелчок по узлу: свойства, начать трассу отсюда, слить другой узел в этот, тип узла, показать, убрать узел, соединив трубы, удалить.

«Тип узла, ЗН, подпитка…»: выберите новый тип — окно покажет, какая карточка удалится и какая создастся. «Сменить тип» записывает.

Правый щелчок по участку: свойства, изломы, врезать узел, тип линии, отводы в местные сопротивления, начать трассу с врезкой, показать, удалить.

«Тип линии (участок ↔ оборудование)…»: участок можно превратить в задвижку, насос, регулятор и другое оборудование (на кадре окно только открыто — участок остался участком).

Разворот направления — в карточке участка: «Свойства» в меню участка (или щелчок по участку), затем «Карточка» и кнопка «Развернуть направление линии» (видна только в режиме редактора).

Окно разворота показывает, какие узлы поменяются местами и что развернётся вместе с участком. «Развернуть» записывает.

Примеры
На копии базы Алматы, фрагмент 74:
- Конечный узел новой трассы сделан «Потребителем»: в
realconsumersпоявилась карточка, тип узла в API — PR. Отмена вернула простой узел. - Тот же новый участок переведён в «Задвижку»: тип линии в API —
damper, карточка вdampers. - Разворот участка 244,44 м из трёх точек: начальный и конечный узлы поменялись местами, длина та же.
Если не получается
- Меню не открывается — правый щелчок пришёлся мимо объекта (меню «Точка карты»): приблизьте карту.
- Пункт серый — нет права на этот вид объектов (подсказка «Нет права: …»).
- Нет кнопки разворота в карточке — карточка открыта не в режиме редактора.
- Нет пункта «Тип узла…» или он серый — нет права править узлы или режим.
- Окно типа узла предупреждает об удалении карточки — данные прежней карточки (нагрузки потребителя, параметры источника) пропадут; если это ошибка, отмените Ctrl+Z.
- «Развернуть» неактивна — на участке есть оборудование с направлением: отметьте подтверждение под списком.
Для разработчика
GET|POST /api/v1/topology/node/{id}/type {node_type: US|PR|PO|IS|HS|US2, dry_run, expected_version};POST /api/v1/topology/node/{id}/flag {flag: setpress|refill, on}.GET|POST /api/v1/topology/line/{id}/type {line_type, dry_run, include_pair};GET /api/v1/topology/line/{id}/bends— отводы участка.POST /api/v1/topology/reverse-line {line_id, dry_run, include_pair, accept_direction_change}.- Сервер:
database/node_types.py,database/line_types.py,reverse_lineвdatabase/topology.py. - Веб:
components/EditorContextMenu.vue(пункты и права),components/NodeTypeDialog.vue,components/LineTypeDialog.vue,components/ReversePreviewDialog.vue, кнопка разворота —components/AttributePanel.vue; списки типов —utils/nodeTypes.ts,utils/lineTypes.ts. - Тесты:
tests/components/EditorContextMenu.spec.ts,tests/utils/nodeTypes.spec.ts,tests/utils/lineTypes.spec.ts, APItests/test_node_types.py,tests/test_line_types.py; e2e — тесты типа узла, типа линии и разворота вe2e/functions/network-editor.spec.ts.
