# Методы
# Методы плеера
Плеер Cubic Vision вызывает методы встроенного веб контента для взаимодействия с ним
# Событие готовности
Необходимо дождаться события onWebContentReady, прежде чем можно будет вызывать методы у window.WebContent
# Начать проигрывание
При появлении элемента в контейнере начать воспроизведение
startPlay(): void
window.WebContent.startPlay();
# Приостановить проигрывание
При скрытии элемента в контейнере закончить воспроизведение
stopPlay(): void
window.WebContent.stopPlay();
# Установить состояние
Используется для уведомления веб контента о смене состояния виджета 'Кассовый чек'
setState(channelName: string, state: string | object): void
- channelName - канал данных: 'MagnetCashbox' | 'ApiRequest' и тд
- state - JSON строка или объект js с текущим состоянием
# Уведомить об изменении файлов виджета Folder play
Используется для уведомления веб контента о изменении файлов виджета 'Folder play'
notifyFolderPlayUpdate(dirPath: string): void
- dirPath - путь к папке с файлами виджета 'Folder play'
# Уведомить об изменении переменных плеера
Используется для уведомления веб контента о изменении переменных
notifyVarsChanged(vars: string): void
- vars - JSON строка следующего формата "[{ "name": "var1", "value": "124:2" }]"
window.WebContent.notifyVarsChanged('[{ "name": "var1", "value": "124:2" }]');
# Создание событий для веб контента
emit(jsonData: string): void
- jsonData это
{ type: string, payload: any }
window.WebContent.emit('{ "type": "example", "payload": null }');
# Список событий:
- Сканирование:
'{ "type": "scan", "payload": { "barcode": "8005286025879" } }'
\ - Уведомление о статусе загрузке:
'{ "type": "download-info", "payload": { "processedCount": 3, "allCount": 10 } }'
# Методы веб контента
Встраиваемый в Cubic Vision веб контент может использовать данные методы для более удобной разработки связи с плеером. Методы библиотеки являются надстройкой над реализуемыми плеером интерфейсами. Главная цель - повторное переиспользование кода в веб проектах.
Установка библиотеки:
npm i vision-embedded-web
# Работа с хранилищем плеера
import { playerStoradge } from 'vision-embedded-web';
playerStoradge.get
Получить распарсенные данные от плеера
const parsed = await playerStoradge.get('web-project1');
console.log(parsed); // null если нет в сторе
playerStoradge.getJSON
Получить JSON данные от плеера
const json = await playerStoradge.getJSON('web-project1');
console.log(json); // 'null' если нет в сторе
playerStoradge.set
Сохранить данные, работающие с JSON.stringify
на плеере
const key = 'web-project1';
await playerStoradge.set(key, {
name: 'Ann',
age: 30,
});
const parsed = await playerStoradge.get(key);
console.log(parsed); // { name: 'Ann', age: 30 }
playerStoradge.setJSON
Сохранить JSON данные на плеере
const key = 'web-project1';
await playerStoradge.setJSON(
key,
JSON.stringify({
name: 'Ann',
age: 30,
}),
);
const parsed = await playerStoradge.get(key);
console.log(parsed); // { name: 'Ann', age: 30 }
playerStoradge.getVar
Получить значение переменной плеера
const var1Value = await playerStoradge.getVar('var1');
console.log('var1 value', var1Value);
# Переход между сценами
import { playerScenes } from 'vision-embedded-web';
playerScenes.goToById
Изменить сцену на плерее на указанную (по id)
playerScenes.goToById(1); // Плеер перейдёт на сцену с id 1
playerScenes.goToPrevious
Перейти на предыдущую сцену. Без зацикливания, только на одну сцену назад.
playerScenes.goToById(1); // Плеер перейдёт на сцену с id 1
playerScenes.goToById(2); // Плеер перейдёт на сцену с id 2
playerScenes.goToPrevious(); // Плеер вернётся на сцену с id 1
playerScenes.goToPrevious(); // Плеер останется на сцене с id 1.
# Логирование
Выводит логи на консоль и записывает в файл логов плеера за текущий день.
import { playerLogger, setCleanConsole } from 'vision-embedded-web';
// Если происходит слежение за логами из консоли и вызываются методы playerLogger
// То нужно установить для vision-embedded-web console, которая не будет вызывать его
// Необходимо чтобы предотвратить бесконечный цикл
// setCleanConsole(console)
playerLogger.debug('Tick 1');
playerLogger.info('Get data from player', {
name: 'Ann',
age: 30,
});
playerLogger.error('Error', new Error('Test Error'));
playerLogger.warning('Deprecated method call');
# Хуки плеера
import { playerHooks, webContentEvent } from 'vision-embedded-web';
// Создание интерфейса window.WebContent для плеера
playerHooks.createInterface();
playerHooks.registerStartPlay(() => {
console.log('Start play');
});
playerHooks.registerStopPlay(() => {
console.log('Stop play');
});
type State = {
name: string;
age: number;
};
playerHooks.registerSetState((channelName: string, state: State) => {
console.log('Set state', channelName, state);
});
playerHooks.registerSetState((channelName: string, state: State) => {
console.log('Set state', channelName, state);
// Очистить предыдущее состояние, чтобы registerSetState мог сработать на тех же данных
playerHooks.clearPrevState();
});
playerHooks.registerFolderPlayUpdate((dirPath: string) => {
console.log('Folder play updated', dirPath);
});
playerHooks.registerVarsChanged((vars) => {
console.log('Vars changed', vars);
});
playerHooks.registerVarChanged((varName, varValue) => {
console.log(`Var changed name: ${varName}, value: ${varValue}`);
});
webContentEvent.on((event) => {
console.log(`On web content event`, event);
if (event.type === 'scan') console.log('Scan event', event.payload.barcode);
});
// Вызвать в конце, для уведомления плеера о готовности к работе
playerHooks.notifyAboutRegisterEnd();
# Приложение
import { playerApp } from 'vision-embedded-web';
# Файловая система
import { playerFilesystem } from 'vision-embedded-web';
# Контейнеры
import { playerContainers } from 'vision-embedded-web';
# Загрузка файлов
import { playerDownload } from 'vision-embedded-web';
# Клавиатура
import { playerKeyboard } from 'vision-embedded-web';