-
Notifications
You must be signed in to change notification settings - Fork 4
Документация разработчика
Какие есть задачи и как они решаются средствами electron, node, vue и typescript.
- Stores & Processes
- Страницы и компоненты фронта
- Интеграция с tobii. Репозиторий
- Interfaces
- Синхронизации с метриками и сохранение данных в hdd.
- Сервис с метриками
- Общение с осью (background.ts)
Линка - это десктоп-апп, который интегрируется с tobii eyetracker 5 и позволяет пользователю общаться с внешним миром посредством карточек
, каждая из которых несет в себе произвольную порцию смысла. Карточки
объединяются в наборы
.
Набор - это произвольное количество карточек. Карточка - это визуальное представление для пользователя + озвучиваемый текст, который произносится по клику на карточку. В зависимости от потребностей пользователя, в наборе могут быть собраны отдельные слова и предложения или же понятные ребёнку картинки. В настройках каждой карточки добавляется текст, который будет озвучиваться text-to-speech модулем.
-
Сконфигурированные наборы приложение сохраняет в файлах с расширением
.linka
. Один набор - один файл. -
Каждый такой файл - это zip-архив, который содержит
Config.json
с инфой о наборе, карточках, и всех необходимых ассетах (картинки для карточек). Подробнее -
Метрики и регистрация пользователей вынесены в отдельный веб-сервис. Фронтенд периодически отправляет в него обновления со статистикой.
-
Для генерации аудио приложение каждый раз обращается в tts-генератор по адресу https://tts.linka.su/tts
-
Приложение запускает отдельный процесс, который работает с бекендом на C#. В проект этот процесс подключается как отдельный модуль tobii-electron
-
Под капотом этот модуль запускает регистратор событий, работающий с tobii SDK EyeLog
Управление интерфейсом организовано через обработку двух основных событий:
- вход взгляда на элемент
- срабатывание по удержанию взгляда на элементе
Длительность нажатия и размеры элементов всячески конфигурируются на отдельном экране с настройками.
Ответственность за регистрацию событий поделена между процессами:
Все элементы с классом eye
в UI пробрасываются вместе с текущим положением глаз в отдельный процесс
через electron-ipc API.
В этом отдельном процессе крутится программа, написанная на C#, которая занимается вычислениями.
Обмен данными между процессами происходит с некоторым throttling-ом: изменения от фронта прилетают в бек и события пробрасываются назад с некоторой периодичностью.
- Code-style
- Testing