Стартовая страница › Форумы › Разработка и интеграция › ScadaAdminWebJP
- В этой теме 22 ответа, 3 участника, последнее обновление 1 день, 9 часов назад сделано
Mikhail.
-
АвторСообщения
-
03.06.2026 в 01:22 #43718
JurasskParkУчастникМихаил, мы тут с manjey73 спорим.
Он говорит, чтобы я писал версию веб Администратора и делал ее, и что Михаил, что-то посмотрим и возьмет оттуда и сделает по своему, я говорю, никакие наработки Михаил из ней брать к себе не будет.
Кто прав?Что по вашему не хватает в редакторе мнеомосхем?
Видео ниже.
https://jurasskpark.ru/files/forum/scadaadminwebjp_001.mp403.06.2026 в 06:28 #43719
manjey73УчастникЗлыдень подстаучий 🤣
03.06.2026 в 09:39 #43720
manjey73Участникне буду сильно кидаться тапками 🙂
1. Сворачивание меню панели свойств 5+, кстати IDE сохраняет свое состояние при закрытии и повторном открытии?
2. Спрячь Views при создании папок, файлов. и так понятно, что оно туда должно попасть.
3. Настройку толщины рамки элемента можно сделать? ну толстая сильно рамка эта зеленая, как по мне.
4. Растягивания круглых объектов, например кнопки. в Inkscape есть функция построения круга, элипса, так вот, при зажатии кнопки Ctrl будет строиться круг (circle), без будет ellipse — полезная штука.
5. победил редактирование вершин линий после вставки? з.ы. сделай настройку на примитивы, чтобы можно было отключить(спрятать) «лишние», я вот не уверен, что я хоть раз буду рисовать на мнемосхемах звездочки 🙂
6. Выделение рамкой 5+… ну я тебе коротко написал, как в CAD программах рамка работает. Непосредственно в AutoCAD например несколько режимов. Если строишь рамку СЛЕВА-НАПРАВО, то выделятся только элементы, полностью попавшие внутрь рамки. Если СПРАВА-НАЛЕВО — выделится все элементы, которые пересекла граница рамки.
Ну и уже не говорю про выделение петлей так же слева-направо или справа-налево.
Да просто за рамку уже тебе генеральские погоны 🙂еще чего-то хотел написать, вспомню, добавлю.
03.06.2026 в 09:44 #43721
manjey73Участники что Михаил, что-то посмотрим и возьмет оттуда и сделает по своему
речь была о том, что Михаил добавляет тот или иной функционал по мере запросов и когда руки дойдут.
ну, из того что помню сам:
1. добавлен механизм остановки по массивам байт и показано примером как это делать.
2. добавлены строковые теги и связь Коммуникатора по ним, раньше со строгой индексацией при передаче тегов были мучения.И вот если все нужные полезности, которые ты сотворил в Редакторе добавятся, то не придется тебе этот Редактор со своими правками постоянно обновлять, а это плюс, так как просто будешь его подключать к своей Админки после обновления релизов.
Вот тут главный нюанс сидит.-
Ответ изменён 3 дня, 16 часов назад пользователем
manjey73.
03.06.2026 в 09:48 #43723
manjey73УчастникВ Редакторе не хватает масштабирования мнемосхемы, без затрагивания окна браузера и соответственно панели свойств.
Сейчас все окно браузера масштабируется.
а, и добавлю.
7. «Выравнивание по объекту» — есть такая штука, когда выбрав такой режим, надо тыкнуть на объект, по которому выровнять выбранные, ну там по умолчанию наверное левый край указанного объекта используется.
По умолчанию если просто выровнять по левому краю, выравнивание происходит либо по последнему, либо по первому, либо по самому левому. Такое во многих прогах происходит.03.06.2026 в 09:51 #43724
manjey73Участник8. Группирование компонентов в дереве. (пусть виртуальное, пофигу).
Скрытие с глаз группы или компонента (скрыть/показать) при работе с мнемосхемой.Сейчас это можно сделать, используя Панель и ручками писать в css — hidden
з.ы. можно посмотреть в Inkscape как это происходит.
-
Ответ изменён 3 дня, 15 часов назад пользователем
manjey73.
03.06.2026 в 10:00 #43726
manjey73Участникдобавление к п.8 — Блокировка Группы. То есть мы можем ее видеть, но выбрать элементы нельзя, они не копируются и т.д.
03.06.2026 в 10:17 #43727
manjey73Участник9. еще есть «волшебный ввод» :). В общем в CAD мы строим линию, указываем мышкой первую точку, а потом просто вводим на цифровой клавиатуре ее длину и мы уже в конечной точке линии, продолжаем рисовать дальше.
К этому еще есть функция делать это строго горизонтально или вертикально (Орто, сидит на функционально кнопке F8 в AutoCAD) — если режим включен, а мы мышкой повели вправо не идеально горизонтально и указали длину или даже просто мышкой ставим вторую точку, она будет строго по оси Х, если повели мышку вверх или вниз, то точка будет срого по оси Y. Действует еще для угла 45 градусов. То есть режим фиксирует 8 направлений.
Без Орто, в любую точку ставится вторая.
Если нужно задать длину и при этом угол, то есть кнопочка Tab для «волшебного ввода» например поставили первую точку, вбили длину, нажали Tab -> переход на ввод угла, вбили угол — Enter.
03.06.2026 в 10:20 #43728
manjey73УчастникВот пример, длина уже вбита и зафиксирована, после нажатия Tab введен угол.
Ну соответственно для разных фигур разные значения, например для круга это по умолчанию Радиус, для прямоугольника по умолчанию не помню, кажется площадь, можно переключиться на длину сторон тапнув Tab. То есть вбили одну длину, надали Tab, первая длина это одна сторона, потом вводим длину второй стороны и Enter.
з.ы. в общем как-то так при построении примитивов, это просто ускоряет процесс рисования.
-
Ответ изменён 3 дня, 15 часов назад пользователем
manjey73.
03.06.2026 в 16:16 #43731
MikhailМодераторВидео очень интересное. Это уже почти готовый Веб-администратор?
Каким образом реализовали создание линий на мнемосхемах?Михаил, что-то посмотрим и возьмет оттуда и сделает по своему, я говорю, никакие наработки Михаил из ней брать к себе не будет
С удовольствием изучу вариант реализации, подход, идеи. Взять исходный код вряд ли возможно — скорее всего будут свои идеи, как лучше сделать, к тому же могут быть разные фреймворки при разработке.
Если Веб-администратор будет существовать и поддерживаться параллельно десктопному, то пользователи от этого только выиграют. В этом случае нужна совместимость, чтобы один и тот же проект корректно открывался в обоих.
Может быть, кто-то разработает мобильное приложение для оператора — мне кажется, был бы интерес к нему.
На текущий момент моя позиция заключается в том, что полностью уходить от десктопа в веб нужно в следующем поколении Rapid SCADA, но это не скоро.
03.06.2026 в 16:18 #43732
MikhailМодераторНужно стремиться к тому, чтобы функциональность расширялась с помощью модулей. Например, добавить панель с координатами в редактор схем не путём создания ветки от редактора, а путём установки небольшого модуля.
Это не касается полностью другого приложения, такого как Веб-администратор.
-
Ответ изменён 3 дня, 9 часов назад пользователем
Mikhail.
03.06.2026 в 16:22 #43734
manjey73Участникимхо, я вообще противник web администратора. но то, что показывал мне @JurasskPark очень даже 🙂
текущий Администратор имеет ряд неудобств, в основном из-за отсутствия хорошей каскадной фильтрации и возможности одним Ctrl+V вставить одинаковые значения в выбранные ячейки столбца.
А это приводит к тупому жмаканью «Вставить» на куче ячеек. Потому что не всегда можно взять и заменить через Ctrl+F, когда уже многие вещи прописаны.Ну, остальные идеи больше из разряда неудобств из-за модальных окон. Например нельзя посмотреть номер регистра канала из таблицы каналов. Постоянно ползаешь туда-сюда. Ну или как вариант открывать второй экземпляр Админки, но на одном экране это не очень удобно.
03.06.2026 в 20:56 #43745
JurasskParkУчастникКаким образом реализовали создание линий на мнемосхемах?
$("#divComponents").on("click", ".component-item", function () { let typeName = $(this).data("type-name"); if (typeName === "ShapeLine" || typeName === "ShapePolyline") { startLongAction(createDrawLineAction(typeName)); } else { startLongAction(LongAction.add(typeName)); } }); function handleLineDrawingMouseDown(event, parentID, relativeElem) { if (event.button !== 0) { return; } continueLineDrawing(parentID, getMimicPoint(event, relativeElem, true), event.shiftKey); event.preventDefault(); } function continueLineDrawing(parentID, point, constrain) { if (longAction?.actionType !== DRAW_LINE_ACTION) { return; } longAction.parentID ??= parentID; longAction.points.push(constrain ? constrainLinePoint(point, longAction.points) : { x: point.x, y: point.y }); updateLineDrawingPreview(point, false); if (longAction.componentTypeName === "ShapeLine" && longAction.points.length >= 2) { finishLineDrawing(); } } $("#divMimicWrapper").on("contextmenu", function (event) { if (longAction?.actionType === DRAW_LINE_ACTION) { event.preventDefault(); finishOrCancelLineDrawing(); } }); function finishOrCancelLineDrawing() { if (longAction.points.length >= 2) { finishLineDrawing(); } else { pointer(); } } function ensureLineDrawingPreview() { lineDrawingPreviewElem = $( "<div class='line-drawing-preview'>" + "<svg class='line-drawing-preview-svg'></svg>" + "<div class='line-drawing-preview-points'></div>" + "</div>"); mimicElem.append(lineDrawingPreviewElem); } function updateLineDrawingPreview(currentPoint, constrain) { let points = longAction.points.map(point => ({ x: point.x, y: point.y })); if (currentPoint) { points.push({ x: currentPoint.x, y: currentPoint.y }); } let pointAttr = points.map(point => <code>${point.x},${point.y}</code>).join(" "); let svgElem = lineDrawingPreviewElem.children("svg"); svgElem.empty(); $("<polyline class='line-drawing-preview-path'></polyline>") .attr("points", pointAttr) .appendTo(svgElem); } function addDrawnLineComponent(typeName, parentID, points) { let factory = mimic.getComponentFactory(typeName); let component = factory.createComponent(); let bounds = getPointBounds(points); component.id = getNextComponentID(); component.setLocation(bounds.left, bounds.top); component.properties.size.width = bounds.width; component.properties.size.height = bounds.height; if (typeName === "ShapeLine") { let p1 = pointToPercent(points[0], bounds); let p2 = pointToPercent(points[1], bounds); component.properties.orientation = rs.mimic.ShapeLineOrientation.CUSTOM; component.properties.x1 = p1.x; component.properties.y1 = p1.y; component.properties.x2 = p2.x; component.properties.y2 = p2.y; } else { component.properties.pointCount = points.length; component.properties.points = formatPercentPoints(points, bounds); } mimic.addComponent(component, parent, null, bounds.left, bounds.top); unitedRenderer.createComponentDom(component); structTree.addComponent(component); selectComponent(component); pushChanges(Change.addComponent(component)); } function pointToPercent(point, bounds) { return { x: Math.round((point.x - bounds.left) / bounds.width * 10000) / 100, y: Math.round((point.y - bounds.top) / bounds.height * 10000) / 100 }; }03.06.2026 в 21:35 #43746
JurasskParkУчастник1. Сворачивание панели свойств + сохранение состояния: — Да
2. Спрятать Views при создании папок/файлов: — Да
3. Настройка толщины зеленой рамки/точек: — Да
4. Ctrl для круга/квадрата при растягивании: — Нет. Круг и квадрат и так пропорции сохраняют, в прямоугольнике и овале нет сохранения пропорций.
5. Редактирование вершин линий после вставки: — Позже
Скрытие лишних примитивов: — Нет
6. CAD-рамка слева-направо / справа-налево: — Нет
Выделение петлей: — Нет
7. Выравнивание по указанному объекту: — Да
8. Виртуальные группы в дереве: — Скорее всего это будет отдельный плагин Group
Скрыть/показать компонент в редакторе: — Нет
Сохранять это состояние вне .mim: — Нет
9. Орто/F8 на 0/45/90 градусов: — Нет
Ввод длины с клавиатуры: — Нет
Длина + Tab + угол: — Нет03.06.2026 в 22:17 #43747
manjey73УчастникСказал, как отрезал 🤣
А 5, скрытие ненужных примитивов, почему нет? Через какой-то маааленький конфиг файлик. Или этот компонент типа сам все это лепит? -
Ответ изменён 3 дня, 16 часов назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.