УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

Вопросы по среде визуализации


Автор Сообщение
Сообщение создано: 21. 10. 2013 [21:01]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"adsum" wrote:

Получил некоторые "полезности", как то, возможность показывать окна большего размера чем экран с возможностью контроля положения выводимой части окна.

Я ситуации такой не знаю, поскольку при развёртывании или при простом расширении содержимое окна масштабируется к нужному размеру, когда достигает размера экрана.

"adsum" wrote:

Сделал масштабирование этого окна.

Оно и было или о чём это?

"adsum" wrote:

При этом появилась возможность запоминать открытую область и масштаб, для следующей сессии.

Да, это полезно, хотел как-то добавить, но связи тут с отрицательным положением не видно.

"adsum" wrote:

Ну и прочая полезная мелочь.

Тут и основные пока не очень понятны.

Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 10. 2013 [09:43]
adsum
Andrew S
Создатель темы
Зарегистрирован(а) с: 03.10.2013
Сообщения: 31
Я ситуации такой не знаю, поскольку при развёртывании или при простом расширении содержимое окна масштабируется к нужному размеру, когда достигает размера экрана.

Я переписал Корневую страницу так, что бы её можно было показывать на мониторах с разным разрешением без изменения размеров элементов и пропорций. Изменяется только размер области вывода информации. Внутри этой области вывожу мнемосхему. Если схема больше окна вывода, и есть необходимость сохранить пропорции и масштаб, то её можно переместить только задав отрицательные координаты. К тому же бывают ситуации, когда схему надо показать в соответствии с реальным положением "в пространстве" (положить элементы мнемосхемы на схему территории). В этом случае элементы могут оказаться либо мелкие, либо накладывающие друг на друга. Соответственно становится полезным масштабирование только этой схемы (естественно встроенными средствами, я только добавил на интерфейс кнопочки "+" и "-", а в перспективе планирую масштабировать и с помощью колёсика мыши). При увеличении масштаба, координаты заведомо уходят в отрицательные значения.
В итоге я запоминаю положение координат схемы и масштаб. При повторном открытии схемы, оператор будет видеть именно тот участок, с которым работал в прошлой сессии.
Под прочими полезными мелочами я имел ввиду, что я на схеме сделал так, что при масштабировании разные элементы масштабируются по-разному. Например, при увеличении масштаба всей схемы, видимая толщина линий, обозначающих провода, трубы и т.п. остаётся прежней, а виджиты, обозначающие оборудование, увеличиваются в соответствии с заложенной мной логикой (т.е. увеличение масштаба этих элементов не всегда пропорционально увеличению масштаба всей схемы).

[Сообщение редактировалось 1 раз(а), в последний раз 22.10.2013 в 09:44.]
Сообщение создано: 22. 10. 2013 [16:20]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"adsum" wrote:

Я ситуации такой не знаю, поскольку при развёртывании или при простом расширении содержимое окна масштабируется к нужному размеру, когда достигает размера экрана.

Я переписал Корневую страницу так, что бы её можно было показывать на мониторах с разным разрешением без изменения размеров элементов и пропорций.

Корневую страницу и так можно показывать на различных разрешениях ничего не меняя с опциональной особенностью - "Сохранять пропорцию".

"adsum" wrote:

Изменяется только размер области вывода информации. Внутри этой области вывожу мнемосхему. Если схема больше окна вывода, и есть необходимость сохранить пропорции и масштаб, то её можно переместить только задав отрицательные координаты.

При развёртывании окна интерфейса автоматически масштабируется и область кадров/мнемосхем, что в принципе исключает подобные действия, поскольку кадр всегда впишется.
Кроме того, как минимум у меня, изменение позиции кадра внутри области мнемосхем никак не влияет на скроллинг, если кадр больше области мнемосхем. Или Вы добавили обработку этих атрибутов для скрола контейнера в UI.Vision?

"adsum" wrote:

К тому же бывают ситуации, когда схему надо показать в соответствии с реальным положением "в пространстве" (положить элементы мнемосхемы на схему территории). В этом случае элементы могут оказаться либо мелкие, либо накладывающие друг на друга. Соответственно становится полезным масштабирование только этой схемы (естественно встроенными средствами, я только добавил на интерфейс кнопочки "+" и "-", а в перспективе планирую масштабировать и с помощью колёсика мыши). При увеличении масштаба, координаты заведомо уходят в отрицательные значения.

Это может быть, а польза тут только в центровке и позиционировании, но, как я писал, координаты мнемосхемы в контейнере на скрол не влияют.

"adsum" wrote:

Под прочими полезными мелочами я имел ввиду, что я на схеме сделал так, что при масштабировании разные элементы масштабируются по-разному. Например, при увеличении масштаба всей схемы, видимая толщина линий, обозначающих провода, трубы и т.п. остаётся прежней, а виджиты, обозначающие оборудование, увеличиваются в соответствии с заложенной мной логикой (т.е. увеличение масштаба этих элементов не всегда пропорционально увеличению масштаба всей схемы).

Тут без увидеть не оценишь. :)

Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 10. 2013 [17:27]
adsum
Andrew S
Создатель темы
Зарегистрирован(а) с: 03.10.2013
Сообщения: 31
различных разрешениях ничего не меняя с опциональной особенностью - "Сохранять пропорцию"

Меняются размеры элементов (виджитов), и это не всегда приемлемо.
"Мартышка к старости слаба глазами стала." (С) Крылов :)

Или Вы добавили обработку этих атрибутов для скрола контейнера?
...
координаты мнемосхемы в контейнере на скрол не влияют.

Да, обработка скрола и масштаба у меня полностью в программном коде (в JavaScript). При изменении масштаба пересчитываются координаты выводимой схемы, центр остаётся на месте (если координаты меньше 0, иначе координаты 0,0), пересчитываются атрибут cfg для виджитов FormEl "Полоса прокрутки" на "управляющей форме". Теперь. при необходимости я могу автоматически "перебрасывать" картинку в нужное место, и даже масштаб менять из JavaScript кода (например, в случае Алармов, если виджит не в зоне вывода).

Собственно у себя я это всё уже сделал (пока первая версия, без "красот" и "мышиного" управления, но думаю за пару недель доведу "до ума"), Я просто предлагаю добавить отрицательные координаты в релизе, т.к считаю это полезным.
Сообщение создано: 22. 10. 2013 [19:50]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"adsum" wrote:

Или Вы добавили обработку этих атрибутов для скрола контейнера?
...
координаты мнемосхемы в контейнере на скрол не влияют.

Да, обработка скрола и масштаба у меня полностью в программном коде (в JavaScript). При изменении масштаба пересчитываются координаты выводимой схемы, центр остаётся на месте (если координаты меньше 0, иначе координаты 0,0), пересчитываются атрибут cfg для виджитов FormEl "Полоса прокрутки" на "управляющей форме". Теперь. при необходимости я могу автоматически "перебрасывать" картинку в нужное место, и даже масштаб менять из JavaScript кода (например, в случае Алармов, если виджит не в зоне вывода).

Понял, просто виджеты могут сдвигаться за верхнюю-левую границу, а скрол это элемент формы.

"adsum" wrote:

Собственно у себя я это всё уже сделал (пока первая версия, без "красот" и "мышиного" управления, но думаю за пару недель доведу "до ума"), Я просто предлагаю добавить отрицательные координаты в релизе, т.к считаю это полезным.

Добавил, завтра выгружу в рабочей версии.
У себя такое встречал для фоновых изображений-карт, когда желательно её сдвинуть выше или левее.

Learn, learn and learn better than work, work and work.
Сообщение создано: 26. 11. 2013 [15:50]
adsum
Andrew S
Создатель темы
Зарегистрирован(а) с: 03.10.2013
Сообщения: 31
Я к сожалению на месяц отвлёкся на другие задачи, и не было времени подготовить в OpenSCADA пример того, как я использую масштабирование.
Во вложении архив с SQLite базой, в которой библиотека виджетов и проект. Надеюсь сделал аккуратно, и ссылок на другие библиотеки не осталось. Ну и там остались некоторые "артефакты" от экспериментов и кое-что можно было сделать "красивей".
Справа внизу слайдер, который меняет масштаб. масштабирование относительно центра окна вывода. (тут, кстати, опять появился интерес знать координаты мыши, что бы масштабировать колесом прокрутки мыши, относительно положения мыши)
Полезность, о которой я писал ранее: виджет Фонарь меняет свой масштаб, в зависимости от масштаба родительской страницы. Его можно и полностью подменять или добавлять детализацию, при увеличении объекта.
Работает только при возможности задавать отрицательные координаты (geomX и geomY)

и ещё возник вопрос по FormEl для ElType - Строка редактирования, view - Дата и время
tmTime возвращает время в UTC, а FormEl отображает с учётом часового пояса компьютера. Можно ли изменить правила отображения?


[Сообщение редактировалось 1 раз(а), в последний раз 26.11.2013 в 15:52.]
Вложенный файл

scale.tar.gz (Тип файла: application/x-gzip, Размер: 337.12 килобайт) — 1534 загрузок
Сообщение создано: 26. 11. 2013 [21:32]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"adsum" wrote:

Я к сожалению на месяц отвлёкся на другие задачи, и не было времени подготовить в OpenSCADA пример того, как я использую масштабирование.
Во вложении архив с SQLite базой, в которой библиотека виджетов и проект. Надеюсь сделал аккуратно, и ссылок на другие библиотеки не осталось.

Да, всё работает.
В целом можно так делать, но для узкого диапазона масштабирования и скролинга, поскольку при большом увеличении система озадачивается масштабированием большого изображения. Недаром картографические системы для этого кусочками манипулируют подставляя новые при скролинге и используя другой набор при масштабе.

"adsum" wrote:

Справа внизу слайдер, который меняет масштаб. масштабирование относительно центра окна вывода. (тут, кстати, опять появился интерес знать координаты мыши, что бы масштабировать колесом прокрутки мыши, относительно положения мыши)

С координатами мыши вообще есть неопределённость поскольку не понятно координаты в области чего там полезны. А полезны они в области обработчика, но к нему они могут попасть каскадом от источника в области его контейнера. Сложно в обработке получается, поскольку нужно учитывать всю иерархию к источнику. Та-же проблема будет если от корневого окна, тогда нужно учитывать иерархию вверх, хотя про источник можно ничего не знать.

"adsum" wrote:

Работает только при возможности задавать отрицательные координаты (geomX и geomY)

Уже делал это.

"adsum" wrote:

и ещё возник вопрос по FormEl для ElType - Строка редактирования, view - Дата и время
tmTime возвращает время в UTC, а FormEl отображает с учётом часового пояса компьютера. Можно ли изменить правила отображения?

Нельзя да и не нужно, поскольку время внутри системы (OS в первую очередь) всегда в UTC, а отображение всегда согласно выбранной зоны и флага летнего времени и это не особенность OpenSCADA, а правильный порядок.

Learn, learn and learn better than work, work and work.
Сообщение создано: 14. 11. 2015 [17:50]
dorn
Максим Алексеев
Зарегистрирован(а) с: 24.10.2015
Сообщения: 17
"roman" wrote:

С координатами мыши вообще есть неопределённость поскольку не понятно координаты в области чего там полезны. А полезны они в области обработчика, но к нему они могут попасть каскадом от источника в области его контейнера. Сложно в обработке получается, поскольку нужно учитывать всю иерархию к источнику. Та-же проблема будет если от корневого окна, тогда нужно учитывать иерархию вверх, хотя про источник можно ничего не знать.


Хотел реализовать небольшие окна, открывающиеся внутри виджета, которые можно было бы перемещать (типа панелей инструментов).
Координаты можно было бы брать от корневого окна, ведь в данном случае важны не сами координаты, а смещение.

Роман, скажите пожалуйста, это достаточно мотивированный случай, чтобы добавить их в релиз? )

Очень полезно также событие onMouseOver и onMouseOut, чтобы можно было подсвечивать активные виджеты.

[Сообщение редактировалось 1 раз(а), в последний раз 15.11.2015 в 06:56.]
Сообщение создано: 15. 11. 2015 [08:35]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"dorn" wrote:

Роман, скажите пожалуйста, это достаточно мотивированный случай, чтобы добавить их в релиз? )

Куда?

"dorn" wrote:

Очень полезно также событие onMouseOver и onMouseOut, чтобы можно было подсвечивать активные виджеты.

Может и полезны, если сценарии обработки этих событий находятся в слое их генерации, что не про OpenSCADA.
Читайте про архитектуру, цели и свойства СВУ внимательно!

Learn, learn and learn better than work, work and work.



12725