Ответы в темах
-
АвторСообщения
-
Boriss
УчастникПростейший пример Фейсплейт: https://disk.yandex.ru/d/ea0vo560GrjvTQ
Boriss
УчастникНадеюсь нас не станет больше.
Разработчикам респект за привязку свойств компонента в последней версии. Теперь не надо все это выискивать в js скриптах и в консоли.Boriss
Участниксвойство inCnlNum (Входной канал) невозможно экспортировать, канал привязывается к фейсплейту. Мда… Для моих задач фейсплейт совершенно бесполезен.
Boriss
УчастникЭэээ… с этим все понятно и эти свойства будут доступны на мнемосхеме. С этим проблем нет. Но у меня скрипт на фейсплейте, который меняет свойства компонента, на него вставленного. Можно повесить скрипт на мнемосхему и использовать экспортируемые свойства, но тогда зачем вообще нужен фейсплейт и экспорт свойств, если и без него все работает и объем рутинной работы по созданию мнемосхемы он не сокращает никак? С фейсплейтом пока проблем больше, чем пользы.
Boriss
УчастникИ возникло множество вопросов. Некоторые я пока даже внятно озвучить не смогу, очень сложно разобраться, как что работает.
Свойство blinking(мигание) компонента текст я не смог изменить из скрипта. Не работает. Скрипт меняет свойство blinking для фейсплейта. Т.е. мигает не конкретный компонент на фейсплейте, а весь фейсплейт. И как быть, если на фейсплейте больше одного компонента? Похоже, что никак.
Как сделать рабочий фейсплейт из нескольких компонентов? Например из двух компонентов «Текст» с привязкой к разным каналам? А если надо сделать около пятидесяти однотипных элементов мнемосхемы, каждый из которых состоит из 5-10 компонентов с привязкой к разным каналам. Фейсплейты тут не помогут. Или помогут? Я не совсем понимаю логику и назначение фейсплейтов.Boriss
УчастникФейсплейт: https://disk.yandex.ru/d/ea0vo560GrjvTQ
Boriss
Участник3. Запускаю Администратор, ищу согласно инструкции модуль в дереве Экземпляры-Default-Сервер-Модули, там пусто.
Поищите в дереве Экземпляры-Default-Вебстанция-Плагины
Boriss
УчастникОстановился на таком варианте. Цель: привлечь внимание оператора, если какой то параметр «поплыл». Скрипт для компонента мнемосхемы «Текст». В свойствах указывается номер канала, который надо контролировать. Скрипт отображает стрелку ↓ или ↑, когда значение канала меняется на определенную величину за заданный временной интервал.
class extends ComponentScript { domCreated(args) { args.component.customData ??= {}; const customData = args.component.customData; customData.interval = 120; //временной интервал в сек. customData.arr_int = new Array(); //создаем пустой массив //console.log("DOM created for component " + args.component.id); } dataUpdated(args) { const customData = args.component.customData; const props = args.component.properties; const cnlData = args.dataProvider.getCurData(props.inCnlNum); customData.arr_int.unshift(cnlData.d.val); //добавляем значение канала в начало массива if (customData.arr_int.length > customData.interval) { customData.arr_int.pop(); //удаляем последний слот при заполнении массива } customData.res = customData.arr_int[0] - customData.arr_int[customData.arr_int.length - 1]; //результат: слот 0 минус последний слот. customData.res_slice = customData.res.toFixed(6).slice(0,-4); //обрезаем до двух знаков после запятой. const blinking = customData.res < -10 || customData.res > 10; if (customData.res < -2.5) { props.text = "↓"; //если разница за временной интервал меньше -2.5, рисуем "стрелку вниз" } else if (customData.res > 2.5) { props.text = "↑"; //если разница за временной интервал больше 2.5, рисуем "стрелку вверх" } else { props.text = " "; } if (props.blinking !== blinking) { props.blinking = blinking; //если разница за временной интервал меньше -10 или больше 10, включаем мигание стрелки. } args.propertyChanged = true //разрешаем обновление свойства компонента //console.log(customData.arr_int); //выводим массив в консоль //console.log("Разница за " + customData.interval + " сек. : " + customData.res_slice); //выводим результат в консоль } }Boriss
УчастникКонечно я использую отладчик и консоль и всё, что под руку попадется.
По теме. Все оказалось гораздо проще. Не надо там никаких скриптов, достаточно html разметки. Вот так работает:<div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown"> Markup Demo </button> <ul class="dropdown-menu"> <li><a class="dropdown-item markup-item1" href="#" onclick="window.top.location ='/View/50'">Главная</a></li> <li><a class="dropdown-item markup-item2" href="#" onclick="window.top.location ='/View/45'">Link-2(45)</a></li> </ul> </div>Boriss
УчастникТак я и думал… Надо разбираться. Пример есть, это хорошо. Документации нет, плохо…
Boriss
УчастникОбновился, проверил, откатился и еще раз обновился. В так в разных комбинациях. В итоге версия 6.4.4 + патч для фейсплейтов. Результат:
Создаю фейсплейт. Прописываю класс. Добавляю компонент текст. Прописываю входной канал. Сохраняю и закрываю фейсплейи.
Открываю мнемосхему. Добавляю зависимость. Класс и путь к фейсплейту. Он появляется в меню слева. Добавляю фейсплейт на мнемосхему. Сохраняю мнемосхему, закрываю. Перезапускаю вебстанцию. Открываю в браузере представление с мнемосхемой. Фейсплейт есть, но мертвый. Совсем.
Может так и должно быть? Другие компоненты в нем не работают? Это другое? Нужно создавать экспортируемые свойства?Boriss
УчастникПатч для фейсплейта я установил. ПК для разработки нет, «дергаю» основную вебстанцию )))
У меня версия скады 6.4.3. Надо ставить последнюю версию… Или не сегодня… Пятница 13-е…Boriss
УчастникНе только скрипты не работают. Вообще ничего не работает. Ни один компонент. Последнее обновление я не ставил. Может в этом причина?
Boriss
УчастникДобрый день! Спасибо за ответ. Помогло. Вот только в фейсплейте не работает. В фейсплейтах вообще не работают скрипты для компонентов. Почему? Не понятно… В моем случае меню в виде фейсплейта и присутствует на всех мнемосхемах …и не работает. Придется меню вставлять на каждую мнемосхему.
Boriss
УчастникИли в настройках мимикланчера https://disk.yandex.ru/i/Fx-_erpIsH3S4A поменять localhost на 127.0.0.1
-
АвторСообщения