Вопросы по WEB в Simple-Scada 2

Автор Simple-Scada, 08 февраля 2018, 00:10:31

Simple-Scada

Компонент "Кнопка" имеет набор состояний. Каждое состояние соответствует какому-то значению переменной. Если переменная меняется, то и Кнопка принимает состояние соответствующее значению переменной. Это максимально логичное поведение, которые мы будем реализовывать. Пока есть только один вопрос: как отображать кнопку, если ни одно из её состояний не соответствует текущему значению переменной. Вероятно кнопку нужно делать неактивной.

ЦитироватьЕсли я нажал одну и она передает переменной значение "1", то остальные, которые привязаны к той же переменной и передают "2", "5" и "10" не выглядят нажатыми
Кнопка будет выглядеть нажатой, только если её "нажатое" состояние соответствует текущему значению переменной. Если переменная примет любое другое значение, то кнопка отобразит состояние соответствующее этому значению.

knskey

#121
Хорошо. Тогда такой вопрос. Если у меня 2 кнопки привязаны к одной переменной. Для первой кнопки: нажата это 1 отжата это -1. Для второй кнопки нажата это 5 а отжата это -5. как будет отображаться (потом, после реализации) если я сначала нажму первую кнопку, а потом вторую?

в ВЕБ-клиенте вроде как не работают события OnEnter и OnLeave - на мнемосхемах.

Simple-Scada

ЦитироватьДля первой кнопки: нажата это 1 отжата это -1. Для второй кнопки нажата это 5 а отжата это -5. как будет отображаться (потом, после реализации) если я сначала нажму первую кнопку, а потом вторую?
Всё будет очень просто: любая кнопка будет отображать то состояние, которое соответствует значению переменной. Никаких дополнительных условий не будет. Если же переменная будет иметь значение которое не соответствует ни одному состоянию кнопки, то как мы и писали:
ЦитироватьПока есть только один вопрос: как отображать кнопку, если ни одно из её состояний не соответствует текущему значению переменной. Вероятно кнопку нужно делать неактивной.

Цитироватьв ВЕБ-клиенте вроде как не работают события OnEnter и OnLeave - на мнемосхемах.
Эти события остались от старых версий скады и в будущем будут удалены, т.к. не подходят для системы с количеством клиентов больше 1. Пример: допустим Вы сделали выделение объекта при наведении мыши используя события OnEnter и OnLeave. Тогда, если проект просматривает несколько клиентов и один из них навёл мышь на объект, то объект выделится сразу на всех клиентах (на самом деле он выделится на сервере, а клиенты отобразят выделение). В результате события OnEnter и OnLeave подходят только для проектов с одним клиентом.

knskey

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

Simple-Scada

Сейчас можно попробовать отследить клиентов через событие авторизации, но всё придётся писать через скрипты самостоятельно. Для выхода из учетной записи можно использовать процедуру Logout.

knskey

Понял. Спасибо.

Возвращаясь к отображению списка сообщений (TM_MessageViewer - я имею в виду) в Web. Сделал три кнопки для отображения на одном и том же месте разных списков (Активные, Неподтвержденные, Все). Использую свойство Visible. В обычном клиенте все работает хорошо, в Web не работает. Пробовал с объектом Text - в Web работает.
Ну и конечно то, что писал ранее. В Web отображает все сообщения проекта вне зависимости от прав доступа пользователя.

Simple-Scada

knskey, спасибо за информацию, исправим скрытие компонента "Список сообщений" в обновлении.

knskey

Цитата: Simple-Scada от 24 апреля 2020, 16:42:37Сейчас можно попробовать отследить клиентов через событие авторизации, но всё придётся писать через скрипты самостоятельно. Для выхода из учетной записи можно использовать процедуру Logout.

в принципе сделал, но столкнулся с тем, что CloseApplicationClient(GetClientName) не работает для веб-клиента, если вызывать в скрипте "событие авторизации". Если вызывать в универсальном скрипте привязанном к кнопке например, то работает..

Simple-Scada

Не нужно вызывать GetClietnName, для получения имени клиента в событии "Авторизация пользователя". В этом событии имя клиента передаётся отдельным параметром auClient (см. руководство). Подставляйте его в вызов процедуры: CloseApplicationClient(auClient);

knskey

я так тоже пробовал изначально. но ВЕБ-клиент не закрывает ни так ни так.

Simple-Scada

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

Ivan_Ivanov

Цитата: h71 от 15 декабря 2018, 12:14:25Еще одна проблема:
На странице есть несколько кнопок, с обработчиком OnClick. Обработчик выполняет одну функцию: GoToTrendsGroupClient(GetClientName, N); (N = ID группы трендов)
То есть по нажатию конкретной кнопки нужно смотреть тренды определенных параметров.
В обычном клиенте все ОК, в веб клиенте видно только группу трендов, привязанных к странице. Вручную нужную группу трендов из веб клиента тоже не получается выбрать
То есть тренды через веб можно смотреть только привязанные к окну? А есть способ все таки выбирать нужные?

Аналогичная проблема возникла, версия Demo-time 2.3.6.7. Пока изучаю скаду, как разберусь - буду принимать решение о покупке профессиональной версии. Это как-то связано с ограничением функционала в демо-версии?

Simple_Scada

Здравствуйте.
Обновитесь до актуальной версии 2.3.6.12, в ней GoToTrendsGroupClient в web работает. Актуальные демо-версии всегда доступны на сайте. Версия Demo-Time по функционалу соответствует версии Professional.

Вячеслав

Здравствуйте!
С чем связан такой момент что элемент трубопровода в WEB клиенте может мигать только с периодом 1 секунда в то же время в PC клиенте элемент может мигать чаще например с периодом 500мс?
Так же замечал такой артефакт у трубопровода в WEB версии на конце элемента там где фланец отображается полоска как будто часть трубы просто отрезана. Что это может быть?

Simple-Scada

ЦитироватьС чем связан такой момент что элемент трубопровода в WEB клиенте может мигать только с периодом 1 секунда
Со скоростью отрисовки. Браузеры гораздо менее производительны в отрисовке, по сравнению со стандартным клиентом скады. Поэтому чем меньше миганий и анимаций, тем быстрее будет работать web-клиент. Поэтому мигание чаще 1 секунды сделать в web не получится.

ЦитироватьТак же замечал такой артефакт у трубопровода в WEB версии на конце элемента там где фланец отображается полоска как будто часть трубы просто отрезана.
Можно предположить что у Вас web-страница масштабирована (либо включена опция автоматического масштабирования). В этом случае все изображения на странице изменят размер в соответствии с масштабом и будет выполнена интерполяция изображений, т.к. на один пиксель экрана будет приходиться более одного пикселя изображения (или менее, зависит от того в какую сторону масштаб). И по краям, на стыках изображений могут появиться тонкие линии. А трубопровод как раз состоит из отдельных изображений. При масштабе в 100% отрисовка должна быть правильной. Если Ваш проект используется только web-клиентами, то мы рекомендовали бы использовать компонент Линия, вместо Трубопровода. Он гораздо производительнее в web и не имеет проблемы со стыками при масштабировании.