Экспорт графиков в PNG-файл в модуле Charts

Графики Комментариев нет

Экспорт графиков в PNG-файл в модуле Charts

Как известно, библиотека Highcharts, используемая в модуле Charts, отрисовывает графики не на серверной стороне, а в браузере клиента (пк, планшет, телефон и т.п.), передавая только конфигурацию графика и собственно сами данные в текстовом виде. А чтобы использовать изображения графиков в своих сценариях, необходимо формировать их именно на стороне сервера.

В модуле Charts есть функционал экспорта графиков в файл с изображением в формате PNG. Данный функционал основывается на использовании облачного сервиса экспорта HighchartsЕсли по каким-то причинам сторонний внешний сервер не подходит, то есть возможность развернуть локальный сервис экспорта (подробнее здесь).

Известные ограничения:

  1. Максимум 10 запросов в минуту.
  2. Максимальная ширина графика 2000 px.
  3. Для передачи данных используется незащищенный HTTP-протокол.

Чтобы получить изображение графика в своих сценариях, потребуется три строчки кода.

При успешном выполнении в переменной $chartPNG будет содержаться путь к изображению графика.

Как видно из примера, используется функция getImage(), которая в качестве обязательного параметра принимает уникальный идентификатор (ID) конкретного графика. Опционально можно указать высоту и ширину изображения (в пикселях) и путь сохранения файла (включая имя и расширение файла).

Описание функции getImage()

getImage($chart_id, $chart_height, $chart_width, $path)

Список параметров

  • int $chart_id - Уникальный идентификатор графика в модуле. Обязательный параметр.
  • int $chart_height - Высота изображения (пикселей). Опциональный параметр. Если не указано, используется значение 300.
  • int $chart_width - Ширина изображения (пикселей). Опциональный параметр. Если не указано, используется значение 800.
  • string $path - Полный путь к файлу изображения, включая имя файла и расширение. Опциональный параметр. Если не указано, используется каталог ./cms/cached/

Возвращаемые значения

  • string|bool Возращает строку, содержащую относительный (от корня каталога MajorDoMo) путь к файлу, или false при ошибках.

Проверка работы функции экспорта

Для проверки функции экспорта создадим простейший сценарий, который после ручного запуска выводит в браузер картинку с графиком и путь к файлу.

Для начала узнаем ID графика в модуле Charts (область с подсказкой на вкладке Общее).

id3_0

Узнаем идентификатор графика

Пишем и сохраняем сценарий.

id3_1

Тестовый сценарий



Затем запускаем сценарий по ссылке и получаем результат в новой вкладке браузера.

id3_2

Успешный результат выполнения сценария

Отправка графика в Telegram

Рассмотрим отправку графика в Telegram по запросу (команде) пользователя.

Сначала определяемся с идентификатором нужного графика в модуле Charts (см. выше).

Затем в модуле Telegram создаем и настраиваем команду.

 

id7_1

Настройка команды в модуле Telegram



После сохранения проверяем работу, отправив название только что созданной команды, нашему Telegram-боту. В ответ бот пришлет изображение запрошенного графика.

id7_2

Отправка изображений графиков в Telegram

 

Поделитесь в соц сетях

Теги: