Skip to main content

Позиционирование виджетов

Модуль служит для определения пространственного расположения существующих визуализаций относительно границ страницы и друг друга при помощи интеллектуального помощника FastBot.

Концепт

Используя чат с FastBot пользователь может за несколько секунд разместить визуализации на дашборде в нужных ему местах и выровнять их относительно друг друга. Бот определит оптимальное расстояние между объектами и группами, откорректирует их размеры.

Фронтовая часть модуля включает в себя функционал по размещению объекта в нужном месте – заданию отступов слева и сверху, а так же указания размеров визуалиации (ширины и высоты).

Важно! Задача по позиционированию виджетов должна выполняться в последнюю очередь после завершения работы других модулей нейросети (в случае, если в текстовом запросе от пользователя поставлено больше одной задачи). Исключением является явное задание порядка выполнения задач пользователем в текстовом запросе (н-р, "Сначала размести все виджеты на одинаковом расстоянии друг от друга, а потом поменяй цвет их фона на желтый")

ML-разработка

Вход модели

Модель получает на входе набор характеристик обо всех визуализациях, включающий в себя информацию о размерах и положении всех объектов проекта, а также текстовый запрос от пользователя, который центральная модель определила как запрос на позиционирование виджетов.

Работа с запросами на "эталонирование"

Данная подзадача может представлять собой запрос на выравнивание как границ визуализации, так и её расположения на дашборде относительно какого-то существующего параметра. Параметры в запросе могут быть указаны явно (в таком случае принимаем параметры от пользователя) либо без неявно (в таком случае модель должна подобрать наилучшее расположение).

Явное выравнивание границ – запрос вида: "Сделай эту визуализацию размером 800 на 600". Модель должна установить параметры X и Y для данной визуализации равными значениям из запроса.

Неявное выравнивание границ – запрос вида "Сделай размеры этой визуализации равными размерам круговой диаграммы". Модель должна определить из контекста запроса параметры X и Y для данной визуализации и установить их.

Явное расположение на дашборде – запрос вида "Размести виджет на расстоянии 50 от левого края и 100 от верхнего". Модель должна установить параметры Ш и В для данной визуализации равными значениям из запроса.

Неявное расположение на дашборде – запрос вида "Размести все виджеты на одинаковом расстоянии друг от друга". Модель должна определить из контекста запроса параметры Ш и В для данной визуализации и установить их.

Работа с относительным размещением

В рамках данной подзадачи модель должна уметь верно интерпретировать положение объекта по ключевым словам "выше/ниже/левее/правее", "сверху/снизу/слева/справа", "рядом/около/возле", "под/над/сбоку" и т.д. Параметры в запросе могут быть указаны явно (в таком случае принимаем параметры от пользователя) либо без неявно (в таком случае модель должна подобрать наилучшее расположение).

Явное изменение размера – запрос вида: "Уменьши ширину виджета на 25%". Модель должна уметь определять итоговое значение параметров для данной визуализации и устанавливать их равными этому значению.

Неявное изменение размера – запрос вида: "Сделай этот виджет немного шире". Модель должна уметь определять из контекста запроса и текущих размеров визуализации итоговое значение параметров и устанавливать их равными этому значению.

Явное расположение относительно других объектов – запрос вида: "Помести график над круговой визуализацией на расстоянии 20 пикселей". Модель должна уметь сопоставлять границы перемещаемого объекта с другими и устанавливать параметры согласно запросу пользователя.

Неявное расположение относительно других объектов – запрос вида: "Размести таблицу рядом с водопадом". Модель должна уметь сопоставлять границы перемещаемого объекта с другими, определять наиболее подходящее расстояние и устанавливать параметры визуализаций согласно собственным расчётам.

Работа с группами

Визуализации на дашборде можно группировать, в рамках группы возможно изменять выравнивание и позиционирование элементов. Если пользователь выбрал группу объектов, то модель должна уметь определять как размещение виджетов внутри группы, так и положение самой группы на дашборде.

В рамках данной подзадачи модель должна уметь работать с параметрами X, Y, Ш и В всей группы как обычного объекта дашборда (см. предыдущие подзадачи). Кроме того, модель должна уметь сопоставлять размеры виджетов внутри группы с размерами самой группы, работать с выравниванием и позиционированием элементов.

Явное управление размерами объектов внутри группы – запрос вида: "Сделай ширину всех объектов внутри группы равной 300 пикселей". Модель должна уметь перебирать все объекты внутри выбранной группы и устанавливать их параметры согласно запросу пользователя.

Неявное управление размерами объектов внутри группы – запрос вида: "Выровняй все объекты внутри группы по размеру". Модель должна уметь сопоставлять размеры объектов внутри группы, вычислять оптимальные параметры и устанавливать их выбранным виджетам.

Выравнивание и позиционирование объектов в группе –  запрос вида: "Распредели объекты равномерно в группе" (justify-content: space-between). Модель должна уметь работать со свойствами Flexbox CSS, используемыми в выравнивании и позиционировании, устанавливать эти параметры группы согласно запросу пользователя

image.png

Выход модели:
  • Кодовое слово Change
  • Идентификаторы затронутых визуализаций и групп
  • Преобразованные размеры и положение визуализаций на странице проекта (параметры X, Y, Ш и В)