изображение_2023-01-01_030813044.png
Пользователь сам нарисует нужный ему путь.
А в скрипте этот ресурс состыкуешь с файлами. Например:
@UserTrue said in Как в вебинтерфейсе выводить постоянно результат потока?:
@Fox или я тебя не понял или мы все таки о разном )
Возможно. Я говорю о том, что можно выводить в лог необходимые данные хоть в json и парсить получаемую строку в интерфейсе. А как создавать пользовательские события? Я ни разу не создавал :D
Через методы из действия "Выполнить яваскрипт в веб интерфейсе" ?
@Fox said in Как в вебинтерфейсе выводить постоянно результат потока?:
Через методы из действия "Выполнить яваскрипт в веб интерфейсе" ?
Примерно так

Только мне приходилось еще в интерфейсе небольшой костыль ставить, потомучто событие почему-то приходило часто по несколько раз одно и тоже. Вообщем событиям ставил ID из в интерфейсе запоминал id последнего события, если приходило событие с таким id то пропускать
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
Правда непонятно про костыль, это надо что-то уже интерфейс переписывать, иначе будет повторные данные слать?
Ну покрайней мере так было, я уже давненько не работал с интерфейсом тк недолюбливаю верстку )))
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
Получается в идеале можно написать новую функция как LOG в BAS, которая бы передавала данные в интерфейс, а там ее ловить? Может кто написал бы такой модуль для баса платно?
Зачем что-то платно писать. Просто создайте функцию в бас, а в ней код примерно как на скрне
@UserTrue Если верно понял, то type: 'unique_name', мы меняем на любое имя и ловим уже в интерфейсе через
if (EventType == "[unique_name") { }
Само значение передаем через msg: [[any_data]], которое уже ловим через:
EventData["text"]
Верно ли я понял? Не понимаю что значит level: [[LEVEL]] (это уровень задается переменной, обязательно? Какой формат для заполнения?), обязателен ли он, а так же "customgLog" надо как-то менять или статично это? Цвет так же задавать обязательно?
@UserTrue Выполняю в BAS
document.dispatchEvent(new CustomEvent("customLog", {
detail: {
type:'EventResult',
level: 1,
msg: [[RESULT]],
Color: #000
}
}));
Пытаюсь ловить, не выходит, в чем может быть ошибка?
Api.SetEventHandler(function(EventType, EventData) {
if (EventType == "EventResult") {
console.log(EventData['text'])
self.ParseResult = EventData["text"]
};
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
@Fox Он получается передает все данные, а как получать только последнее значение, строку?
Чегось? Вы сейчас про пользовательские события, про кастомную функцию Log или вообще про vue js?
@Fox Я про проект, который Вы прислали, а именно этот код:
created() {
var self = this
/////Обработчик событий api
Api.SetEventHandler(function (EventType, EventData) {
if (EventType == "result") {
var TabNumber = EventData["number"]
Api.DownloadResult(TabNumber).then((res) => {
self.ParseResult = res
})
}
})
Api.AcceptResources(true)
}
Кастомный лог не работает, не ловит его веб интерфейс.
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
@Fox Я про проект, который Вы прислали, а именно этот код:
created() { var self = this /////Обработчик событий api Api.SetEventHandler(function (EventType, EventData) { if (EventType == "result") { var TabNumber = EventData["number"] Api.DownloadResult(TabNumber).then((res) => { self.ParseResult = res }) } }) Api.AcceptResources(true) }Кастомный лог не работает, не ловит его веб интерфейс.
Парсите данные в массив по переносу строки \n и получайте последний элемент массива
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
@UserTrue Можете подсказать где пор это API или код?
Я имел ввиду через addEventListener , с телефона было лень писать )
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
@Fox Решение рабочее, но за сутки создает очень большой файл, это в итоге же приведет к замедлению, верно?
Скорее всего да, можно конечно вылечить побайтовым чтением файла, но смысл? Передавать данные через парсинг текста лога или через пользовательские события, как предложил @UserTrue в разы проще ведь
@Jhon said in Как в вебинтерфейсе выводить постоянно результат потока?:
@Fox Не работает решение UserTrue, писал выше, как только не пробовал, не ловит!
Если нет опыта работы с пользовательскими событиями, используйте способ, который я рекомендовал ранее. Из скрипта передавайте данные через обычное действие "лог" с какой нибудь приставкой

а уже в коде проверяйте наличие этой приставки в тексте сообщения
if(EventType == "log"){
if(EventData["text"].indexOf("сообщение для интерфейса: ") > -1) {
var message = EventData["text"].split("сообщение для интерфейса: ")[1]
}
}