Контекстное меню, тип узла и участка, разворот

Меню правого щелчка в редакторе: для узла, участка и пустого места — свои команды. Отсюда меняют тип узла (потребитель, источник, насосная…) и тип линии (участок или оборудование), разворачивают направление участка.

Где найти
редактор сети: кнопка «Редактировать топологию сети» (значок ломаной с карандашом) в строке режимов над картой: правый щелчок по узлу, участку или карте. Разворот — кнопка «Развернуть направление линии» в карточке участка.
Права
пункты без права видны серыми с подсказкой «Нет права: …». Тип узла — право править узел и создавать карточку нового вида; тип линии — править участки, для оборудования — создавать оборудование; разворот — править участки.
Читаю как

Возможности

  • Меню узла: «Свойства», «Начать трассу отсюда», «Слить другой узел в этот…», «Тип узла, ЗН, подпитка…», «Показать» (F), «Убрать узел, соединив трубы…», «Удалить…» (Del), «Копировать координаты».
  • Меню участка: «Свойства», «Изломы» (E), «Врезать узел здесь…», «Тип линии (участок ↔ оборудование)…», «Отводы → местные сопротивления…», «Начать трассу отсюда (врезка)», «Показать», «Удалить…».
  • Меню пустого места: «Новый узел здесь», «Начать трассу здесь», «Копировать координаты».
  • Тип узла: «Узел», «Потребитель», «Обобщённый потребитель», «Источник тепла», «Насосная станция», «Узел соединения»; отдельно — флажки «Узел с заданным напором» и «Узел подпитки».
  • Тип линии: участок трубопровода или оборудование — насос, регулятор давления, регулятор расхода, задвижка, регулирующая арматура, байпас, диафрагма, регулятор перепада давления, обратный клапан.
  • Разворот направления участка из его карточки — с парной трубой и предупреждением об оборудовании, которое зависит от направления.

Как это работает

Права в меню. Пункт, на который нет права, виден серым с подсказкой «Нет права: создавать участки», «удалять узлы» и т. п. Сервер проверяет те же права ещё раз при записи.

Тип узла — в какой таблице лежит карточка узла, как в десктопе: «Потребитель» — realconsumers, «Обобщённый потребитель» — generalizedconsumers, «Источник тепла» — heatsources, «Насосная станция» — pumpstations, «Узел соединения» — connectnodes, простой узел — без карточки. Это не конструктивный вид узла (камера, павильон) — он правится в карточке. Смена типа удаляет карточку прежнего типа и создаёт новую со значениями по умолчанию; окно заранее показывает, что удалится. Узел с внутренней схемой нельзя сделать потребителем. Заданный напор (setpressnodes) и подпитка (refillnodes) — не тип, а дополнение к любому узлу.

Тип линии — так же: карточка участка в heatpipesections или оборудования в своей таблице (dampers, pumps, pressregulators…). Старая карточка удаляется, новая создаётся с умолчаниями, у пары подача/обратка тип меняется у обеих труб. После смены открывается карточка нового типа.

Разворот меняет местами начальный и конечный узлы участка и переворачивает его геометрию. Окно показывает узлы до и после, признак, число точек и длину, парную трубу (её можно развернуть вместе) и оборудование, чьё действие зависит от направления: для него нужно отметить «Понимаю, что направление действия оборудования изменится».

Все три правки — операции журнала: одна транзакция, предпросмотр без записи, проверка версий, отмена Ctrl+Z.

Что нужно для работы

  • Тип узла — право править узел и создавать объекты нового вида (потребителей, источников…); флажки ЗН и подпитки — право править режим.
  • Тип линии — право править участки; для оборудования — ещё и право создавать оборудование.
  • Разворот — право править участки; кнопка в карточке видна только в режиме редактора.
  • Флаги API MUTATIONS_ENABLED и TOPOLOGY_MUTATIONS_ENABLED.

Шаги

  1. Правый щелчок по узлу: свойства, начать трассу отсюда, слить другой узел в этот, тип узла, показать, убрать узел, соединив трубы, удалить.

    Контекстное меню, тип узла и участка, разворот: шаг 1

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

    Контекстное меню, тип узла и участка, разворот: шаг 2

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

    Контекстное меню, тип узла и участка, разворот: шаг 3

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

    Контекстное меню, тип узла и участка, разворот: шаг 4

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

    Контекстное меню, тип узла и участка, разворот: шаг 5

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

    Контекстное меню, тип узла и участка, разворот: шаг 6

Примеры

На копии базы Алматы, фрагмент 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, API tests/test_node_types.py, tests/test_line_types.py; e2e — тесты типа узла, типа линии и разворота в e2e/functions/network-editor.spec.ts.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо