Позиционирование виджетов
Модуль служит для определения пространственного расположения существующих визуализаций относительно границ страницы и друг друга при помощи интеллектуального помощника FastBot.
Концепт
Используя чат с FastBot пользователь может за несколько секунд разместить визуализации на дашборде в нужных ему местах и выровнять их относительно друг друга. Бот определит оптимальное расстояние между объектами и группами, откорректирует их размеры.
Фронтовая часть модуля включает в себя функционал по размещению объекта в нужном месте – заданию отступов слева и сверху, а так же указания размеров визуалиации (ширины и высоты).
Важно! Задача по позиционированию виджетов должна выполняться в последнюю очередь после завершения работы других модулей нейросети (в случае, если в текстовом запросе от пользователя поставлено больше одной задачи). Исключением является явное задание порядка выполнения задач пользователем в текстовом запросе (н-р, "Сначала размести все виджеты на одинаковом расстоянии друг от друга, а потом поменяй цвет их фона на желтый")
ML-разработка
Вход модели
Модель получает на входе набор характеристик обо всех визуализациях, включающий в себя информацию о размерах и положении всех объектов проекта, а также текстовый запрос от пользователя, который центральная модель определила как запрос на позиционирование виджетов.
Работа с запросами на "эталонирование"
Данная подзадача может представлять собой запрос на выравнивание как границ визуализации, так и её расположения на дашборде относительно какого-то существующего параметра. Параметры в запросе могут быть указаны явно (в таком случае принимаем параметры от пользователя) либо без неявно (в таком случае модель должна подобрать наилучшее расположение).
Явное выравнивание границ – запрос вида: "Сделай эту визуализацию размером 800 на 600". Модель должна установить параметры X и Y для данной визуализации равными значениям из запроса.
Неявное выравнивание границ – запрос вида "Сделай размеры этой визуализации равными размерам круговой диаграммы". Модель должна определить из контекста запроса параметры X и Y для данной визуализации и установить их.
Явное расположение на дашборде – запрос вида "Размести виджет на расстоянии 50 от левого края и 100 от верхнего". Модель должна установить параметры Ш и В для данной визуализации равными значениям из запроса.
Неявное расположение на дашборде – запрос вида "Размести все виджеты на одинаковом расстоянии друг от друга". Модель должна определить из контекста запроса параметры Ш и В для данной визуализации и установить их.
Работа с относительным размещением
В рамках данной подзадачи модель должна уметь верно интерпретировать положение объекта по ключевым словам "выше/ниже/левее/правее", "сверху/снизу/слева/справа", "рядом/около/возле", "под/над/сбоку" и т.д. Параметры в запросе могут быть указаны явно (в таком случае принимаем параметры от пользователя) либо без неявно (в таком случае модель должна подобрать наилучшее расположение).
Явное изменение размера – запрос вида: "Уменьши ширину виджета на 25%". Модель должна уметь определять итоговое значение параметров для данной визуализации и устанавливать их равными этому значению.
Неявное изменение размера – запрос вида: "Сделай этот виджет немного шире". Модель должна уметь определять из контекста запроса и текущих размеров визуализации итоговое значение параметров и устанавливать их равными этому значению.
Явное расположение относительно других объектов – запрос вида: "Помести график над круговой визуализацией на расстоянии 20 пикселей". Модель должна уметь сопоставлять границы перемещаемого объекта с другими и устанавливать параметры согласно запросу пользователя.
Неявное расположение относительно других объектов – запрос вида: "Размести таблицу рядом с водопадом". Модель должна уметь сопоставлять границы перемещаемого объекта с другими, определять наиболее подходящее расстояние и устанавливать параметры визуализаций согласно собственным расчётам.
Работа с группами
Визуализации на дашборде можно группировать, в рамках группы возможно изменять выравнивание и позиционирование элементов. Если пользователь выбрал группу объектов, то модель должна уметь определять как размещение виджетов внутри группы, так и положение самой группы на дашборде.
В рамках данной подзадачи модель должна уметь работать с параметрами X, Y, Ш и В всей группы как обычного объекта дашборда (см. предыдущие подзадачи). Кроме того, модель должна уметь сопоставлять размеры виджетов внутри группы с размерами самой группы, работать с выравниванием и позиционированием элементов.
Явное управление размерами объектов внутри группы – запрос вида: "Сделай ширину всех объектов внутри группы равной 300 пикселей". Модель должна уметь перебирать все объекты внутри выбранной группы и устанавливать их параметры согласно запросу пользователя.
Неявное управление размерами объектов внутри группы – запрос вида: "Выровняй все объекты внутри группы по размеру". Модель должна уметь сопоставлять размеры объектов внутри группы, вычислять оптимальные параметры и устанавливать их выбранным виджетам.
Выравнивание и позиционирование объектов в группе – запрос вида: "Распредели объекты равномерно в группе" (justify-content: space-between). Модель должна уметь работать со свойствами Flexbox CSS, используемыми в выравнивании и позиционировании, устанавливать эти параметры группы согласно запросу пользователя
Выход модели:
- Кодовое слово Change
- Идентификаторы затронутых визуализаций и групп
- Преобразованные размеры и положение визуализаций на странице проекта (параметры X, Y, Ш и В)
No Comments