# jsreport

## Описание

Сервис jsreport предназначен для работы с отчетами jsreport.

!!! note
    Опциональный элемент системы. API доступно только внутри инфраструктуры серверной части lexema8. 
## Настройки сервиса отчетов jsreport

!!! note
     Раздел applications { jsreport { }} конфигурационного файла ./config/production.js

- **protocol** - используемый веб-протокол (рекомендуемое \`http\`).
- **host** - имя хоста (рекомендуемое \`localhost\`).
- **port** - порт для запуска (рекомендуемое - 3070).
- **route** - используемый маршрут (по умолчанию \`/api/v2.0/jsreport\`).
- **timeout** - количество миллисекунд бездействия, после которого считается, что время ожидания истекло (по умолчанию 120). В режиме продакшена может потребоваться дополнильно настроить таймаут для веб-сервера (nginx).
- **script** - путь к модулю, запускающему сервис (рекомендуемое \`ecosoft-lexema8-jsreport-service\`).
- **editor** - настройки редактора отчета.
  - **port** - порт для запуска (по умолчанию 3069).
  - **protocol** - протокол (по умолчанию \`http\`).
- **core** - настройки библиотеки jsreport-core для сервиса отчетов. Редактор отчетов использует только настройки раздела extensions.
- **store** - настройки для хранения отчетов.
  - **provider** - задает один из возможных вариантов для хранения отчетов. Доступно только значение \`fs\` (хранение в файловой системе).
- **templatingEngines** - настройки компоненты, выполняющей задачи рендеринга.
  - **strategy** - стратегия для рендеринга отчетов. Доступные значения: \`dedicated-process\`, \`http-server\`, \`in-process\` (по умолчанию \`in-process\`).
- **extensions** - словарь используемых модулей для сервиса отчетов и редактора (редактор некоторые модули может подключать со своими настройками). Ключом является имя модуля, значением - объект с настройками (если необходимо использовать настройки по умолчанию, то необходимо передать пустой объект). При подключении модуля необходимо установить соответствующий пакет. Имя пакета формируется из имени модуля, с добавлением префикса \`jsreport-\` (например, при подключении модуля jsrender имя пакета будет \`jsreport-jsrender\`). Чтобы отключить модуль, укажите в его настройках свойство \`enabled\` со значением false (Пример: \`xlsx: {enabled: false}\`) и удалите соответствующий пакет в файле package.json.
- **fs-store** - хранение отчетов в файловой системе.
- **syncModifications** - сброс кэша при изменении отчета (по умолчанию false). В редакторе отчетов эта настройка всегда передается со значением false.
- **chrome-pdf** - создание pdf-отчетов с использованием headless chrome. Для этого модуля требуется установка пакета puppeteer (убедитесь, что в package.json в разделе dependencies прописан пакет puppeteer. Пропишите, если он отсутствует. В проекте прикладной библиотеки пакет puppeteer должен быть прописан в разделе devDependencies).
  - **launchOptions** - настройки запуска.
    - **args** - массив аргументов (по умолчанию \`['--no-sandbox']\`).
- **handlebars** - движок для описания макета шаблона (по умолчанию {}).
- **text** - создание текстовых отчетов (по умолчанию {}).
- **xlsx** - создание excel-отчетов (по умолчанию {}).
- **html-to-xlsx** - создание excel-отчетов из html (по умолчанию {}).
- **templates** - хранение и поиск шаблонов (по умолчанию {}).
- **child-templates** - использование вложенных шаблонов (по умолчанию {}).
- **assets** - встраивание статических ресурсов, таких как стили, шрифты или HTML (по умолчанию {}).
- **data** - возможность привязки данных к шаблону (по умолчанию {}).


Значения для параметров  _**protocol**_,  _**host**_,  _**port**_,  _**script**_  не определены по умолчанию, для работы с сервисом jsreport их необходимо установить в конфигурационном файле конечного приложения.