"Живые" картинки со Snap.SVG
В статье рассмотрен пример использования http-сервисов для визуализации данных
- Описание
- Подробнее
Описание
Введение
Прочитав публикации Самый примитивный HTTP-сервис в мире и Создание асинхронных виджетов, решил внести свои пять копеек и немного дополнить коллекцию примеров по данной тематике.
Поскольку одним из наиболее распространенных подходов к визуализации данных в web является их отображение в виде изображений в формате svg, было принято решение создать простейший инструмент, позволяющий отображать изображение в формате svg в поле html документа, а также динамически изменять его.
О том, что из этого получилось – читайте ниже.
Системные требования
Платформа 1С:Предприятие, версии не ниже 8.3.5
Описание механизма
Механизм не отличается большой оригинальностью и суть его заключается в том, что содержимое виджета представляет собой html-страницу, которая возвращается при обращении к http-сервису 1С:Предприятие. В процессе отображения страницы клиент обращается к http-сервису 1С:Предприятие для загрузки изображения, которое хранится в виде макета в теле конфигурации. Через определенные промежутки времени, клиент, средствами javascript генерирует http-запросы, возвращающие обновленное состояние виджета. Затем, производится изменение изображения в соответствии с полученным состоянием.
Для манипуляций с изображением воспользуемся популярной библиотекой — Snap.SVG. При достаточно сложной логике изменения изображения в зависимости от состояния, возможно появление большого количества кода javascript, размещенного в теле страницы или отдельных макетах, что в совокупности с отсутствием встроенных в платформу средств разработки и отладки javascript кода, может сделать процесс создания виджета сложным и неудобным. Во избежание озвученной проблемы, мы будем генерировать javascript код для изменения изображения автоматически, при поступлении запроса с клиента, а затем передавать его для выполнения клиенту вместе с состоянием. Также, для уменьшения количества этого кода, клиент будет хранить свое состояние и передавать его вместе с запросом. Таким образом, если состояние с момента последнего запроса не изменилось, необходимость в генерации и выполнении кода отсутствует.
Реализация
Формирование HTML страницы
Создадим обработку ВиджетSVG, которая будет отвечать за формирования html-страницы содержимого виджета.
Для использования в качестве основы нашей страницы создадим макет нижеследующего содержания:

