Страница 1 из 1

Работа с данными из любого JS объекта любой страницы панели.

СообщениеДобавлено: 14 сен 2024, 22:55
BondAlex
Здравствуйте!
Есть необходимость работать с табличными данными (около 1000 ячеек) на панели Weintek. В идеале в виде двухмерного массива (добавление/удаление данных, выборки, сортировка, чтение/сохранение на флешку).
Предполагаю делать это на JavaScript в составе панели, т.к. данные тесно связаны с графическим представлением на страницах панели.

Вопрос:
1) каким способом лучше организовать временное хранение данных в "оперативной памяти" для работы с ними (предполагается, что первоначально данные будут загружены с флэшки);
2) как обеспечить доступ к массиву данных с любой страницы панели из объекта JS?

P.S. Работу с регистрами LW из объекта JS изучил. Как вариант хранения данных в регистрах тоже рассматриваю, но не нравится, что драйвер чтения/записи работает асинхронно и медленней скрипта JS. Не уверен в правильности этого варианта, т.к. чтение/сохранение в регистры, парсинг придётся делать при каждой активности оператора.
P.P.S. Не разобрался с MemoryStorage https://dl.weintek.com/public/Document/JS_Object_SDK/Current/MemoryStorage.html. Может это то, что мне нужно? Примеры в SDK совсем убогие, подскажите как работать с памятью. В идеале в виде примера команд:
а) создать массив (для чисел) в JS объекте и записать в него данные;
б) объявить массив общедоступным для всех страниц?
в) считать данные в другом JS объекте с другой страницы панели.
Спасибо.

Re: Работа с данными из любого JS объекта любой страницы пан

СообщениеДобавлено: 15 сен 2024, 16:44
dimensy
А поглядите в сторону SQL, может достаточно будет?
https://www.rusavtomatika.com/upload_fi ... 181225.zip
https://www.rusavtomatika.com/upload_fi ... t_Demo.zip

Re: Работа с данными из любого JS объекта любой страницы пан

СообщениеДобавлено: 16 сен 2024, 01:25
BondAlex
Моя панель, похоже, не поддерживает SQL (иконки БД в EasyBuilder не активны). И отдельного компьютера в оборудовании не предусмотрено.
Осмелюсь предположить, что требуются специальные панели с поддержкой БД серии SRV 100, либо серии cMT 3090 с персональным компьютером с предустановленной БД в сети.
Спасибо за ответ.

Re: Работа с данными из любого JS объекта любой страницы пан

СообщениеДобавлено: 16 сен 2024, 02:55
BondAlex
Разобрался с MemoryStorage. Думаю, код в комментариях не нуждается.

В одном JS Object пишем:
Код: Выделить всё
let myData = [1,2,3];
window.memoryStorage.setItem("myNameKey", myData);


На другой странице в другом JS Object пишем:
Код: Выделить всё
for (let i = 0; i < window.memoryStorage.length; i++)
{
  console.log('Найден ключ номер:', i);
 
  let nameKey = window.memoryStorage.key(i);
  console.log('Имя ключа:', nameKey);
 
  let dataKey = window.memoryStorage.getItem(nameKey);
  console.log('Содержимое:', dataKey);
};


Либо, если имя ключа известно (а оно нам известно), то просто:
Код: Выделить всё
let dataKey = window.memoryStorage.getItem('myNameKey');
console.log('Содержимое:', dataKey);


Код в JS Object выполняется сразу при открытии страницы (если в коде нет иных условий).