Подключение
Переменные окружения
Жизненный цикл
Пример скрипта
Пульт.Онлайн поддерживает подключение пользовательских JS-скриптов к мнемосхемам. Пользовательский скрипт подключается в секции head
HTML-документа мнемосхемы в тегах script
, а файл скрипта может быть размещен в ресурсах мнемосхемы или в файлах проекта.
Ресурсы
мнемосхемы или в папку Файлы
проекта.Код
добавьте в код мнемосхемы тег script
с указанием пути к скрипту (%resources%
- подстановка пути к ресурсам мнемосхемы, %files%
- подстановка пути к файлам проекта).Например:
HTML-код мнемосхемы
<!DOCTYPE HTML>
<html>
<head>
...
<script src='%resources%/script.js'></script>
...
</head>
<body>
...
</body>
</html>
Содержание папки Ресурсы
resources/
│
├── ...
├── script.js
└── ...
Пользовательский скрипт выполняется в области видимости web-компонента мнемосхемы и имеет доступ к следующим переменным окружения:
pult
- объект, предоставляющий JS API сервераwidget
- web-компонент экрана, в котором отображается мнемосхемаself
- web-компонент самой мнемосхемыРабота с HTML-элементами должна выполняться через self.shadowRoot
.
oncreate
- начало работы; инициализация интервалов, листенеров, подписокondestroy
- завершение работы; освобождение интервалов, листенеров, подписокВ данном примере скрипт создает несколько контролов, а также манипулирет уже существующим контролом <control-mobile-label2>
, который существовал в мнемосхеме на момент запуска скрипта.
let interval;
function oncreate(){
console.log('created',self.shadowRoot);
let sw=document.createElement('control-common-switch1');
let lmp1=document.createElement('control-common-lamp1');
let lmp2=document.createElement('control-common-lamp1');
let lbl=document.createElement('control-common-label1');
self.shadowRoot.appendChild(sw);
self.shadowRoot.appendChild(lmp1);
self.shadowRoot.appendChild(lmp2);
self.shadowRoot.appendChild(lbl);
let lbl2=self.shadowRoot.querySelector('control-mobile-label2');
interval=setInterval(function(){
lmp2.value=!lmp2.value;
lbl.value=self.node1?.vars?.temperature?.value; // параметры мнемосхемы доступны как св-ва объекта self (self - это веб-компонет мнемосхемы)
},1000);
sw.onchange=function(e){
pult.setVar(widget,'P3_N1_var1',sw.value);
}
pult.subscribeVars(widget,['P3_N1_var1'],function(data){
for(let i=0; i<data.length; i++){
let [name,time,value,error,payload]=data[i];
lmp1.value=value;
sw.value=value;
}
});
}
function ondestroy(){
pult.unsubscribeVars(widget);
clearInterval(interval); // всегда освобождайте интервалы, подписки, листенеры и пр. иначе память потечет
console.log('destroed');
}