Добрый день!
Прошу разъяснения по Пользовательскому элементу (Script).
Все сделал как написано в pdf.
Сначала пытался на версии 1.3.7 запустить все это дело.
В логах c:\ProgramData\MPSSoft\MasterSCADA4DRT1_3\Server\ error.log
записи вот такого типа:
Код:
2025/05/14 10:26:23 [error] 6264#5256: *2 CreateFile() "C:\ProgramData\MPSSoft\MasterSCADA4DRT1_3\Server/htdocs/controls/basic.js" failed (3: The system cannot find the path specified), client: 127.0.0.1, server: _, request: "GET /controls/basic.js HTTP/1.1", host: "127.0.0.1:8043", referrer: "http://127.0.0.1:8043/resources/custom1.js"
Контрол не работает, на экране пишет что -то типа "Не удалось установить параметр flag".
Я так понимаю , что в с версии 1.3.7 не генерируются в папке htdocs папки controls, actions и тому подобное (а именно там находятся javascript файлы - в том числе и basic.js, от которого наследуются свои пользовательские контролы).
В более ранних версиях они были...
Обновился до новой версии (Версия: 1.3.8.24492(1.3.8_20250513.1)) - поменялось расположение самого рантайма (теперь в c:\ProgramData\MPSSoft\MasterSCADA4D_RT\rt\ и проект загружается в подпапку server). Папка logs есть , но там в файлах логов нет инфы касаемо визуализации.
И также нет controls (basic.js и прочего).
Вопрос: пользовательских элементов теперь не будет? наследоваться от HTMLElement? а параметры в контролах для привязок со стороны MS4D как делать в таком случае?
Я пытался делать простой элемент-наследник HTMLElement без импорта {Basic} из basic.js. Заводил поле flag в js, в MS4D также парметр добавлял flag - не работает.
Код:
export class msscript extends HTMLElement {
constructor() {
super();
this._flag = false;
}
/**
* flag
* @type {bool}
*/
get flag() {
console.log("Current flag state is:" + this._flag);
return this._flag;
}
set flag(value) {
this._flag = this._toBool(value);
console.log("Current flag state is:" + this._flag);
}
_toBool(value) {
if (value) {
if (typeof value == "boolean") {
return value;
} else {
switch (value.toString().toLowerCase().trim()) {
case "true":
case "yes":
case "1":
return true;
case "false":
case "no":
case "0":
case null:
return false;
default:
return Boolean(value);
}
}
} else {
return false;
}
}
}