Развертывание
Примеры |
Полный код примера можно найти на GitHub по данной ссылке.
|
Для использования дизайнера достаточно установить пакет stimulsoft-reports либо stimulsoft-dashboards при помощи установщика пакетов, выполнив следующую команду:
console |
python -m pip install stimulsoft-reports
|
console |
python -m pip install stimulsoft-dashboards
|
По умолчанию устанавливается минимальный набор драйверов данных. Необходимые драйверы можно дополнительно установить вручную, либо воспользоваться командой для установки всех доступных драйверов:
console |
python -m pip install stimulsoft-reports[ext]
|
console |
python -m pip install stimulsoft-dashboards[ext]
|
Будет установлена последняя доступная версия продукта в текущее рабочее пространство, после этого можно использовать классы и функции по работе с отчетами и дашбордами.
Информация |
Для примеров кода в документации использован Flask фреймворк, как один из самых популярных и простых для понимания кода. Можно использовать любой Web-фреймворк, все классы и функции для работы с компонентами являются универсальными.
|
Для добавления дизайнера в Web-проект, предназначен класс StiDesigner. При помощи данного класса можно создать объект дизайнера, установить необходимые настройки, обработать запрос и вернуть результат его выполнения, получить подготовленный JavaScript и HTML код компонента. Пример отображения дизайнера на HTML странице:
app.py |
from flask import Flask, render_template, url_for, request from stimulsoft_reports.designer import StiDesigner
app = Flask(__name__)
@app.route('/designer', methods = ['GET', 'POST']) def designer(): designer = StiDesigner() designer.options.appearance.fullScreenMode = True
if designer.processRequest(request): return designer.getFrameworkResponse()
js = designer.javascript.getHtml() html = designer.getHtml() return render_template('designer.html', designerJavaScript = js, designerHtml = html)
|
designer.html |
<!DOCTYPE html> <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Editing a Report Template in the Designer</title>
{{ designerJavaScript|safe }} </head>
<body> {{ designerHtml|safe }} </body>
</html>
|
В этом примере создается экземпляр объекта StiDesigner и задаются необходимые настройки.
Специальная функция компонента processRequest(request) выполняет обработку текущего запроса. Если функция возвращает True, значит запрос успешно обработан, и необходимо вернуть результат его выполнения. Более подробно про это рассказано в разделе Обработчик событий.
Далее, необходимо сгенерировать подготовленный JavaScript и HTML код, необходимый для работы дизайнера. Функция designer.javascript.getHtml() генерирует HTML код для подключения необходимых скриптов и ресурсов, функция designer.getHtml() генерирует HTML код самого компонента. Сгенерированный код передается в качестве параметров в HTML шаблон designer.html, и выводится в заданных местах.
Информация |
Наши продукты Stimulsoft Reports.PYTHON и Stimulsoft Dashboards.PYTHON не имеют нативного ядра генератора отчетов на Python, построение и экспорт отчета выполняется на стороне клиента при помощи JavaScript кода. При использовании Python кода для работы с компонентами, необходимо вызвать функцию getHtml(), которая вернет весь необходимый JavaScript и HTML код для работы генератора отчетов и компонентов.
|
Предусмотрено упрощенное развертывание дизайнера без использования HTML шаблона страницы. Например, этот же пример можно реализовать, использовав только Python код:
app.py |
from flask import Flask, url_for, request from stimulsoft_reports.designer import StiDesigner
app = Flask(__name__)
@app.route('/designer', methods = ['GET', 'POST']) def designer(): designer = StiDesigner() designer.options.appearance.fullScreenMode = True
if designer.processRequest(request): return designer.getFrameworkResponse()
# Here is the code for working with the report
return designer.getFrameworkResponse()
|
В данном случае, после вызова обработчика событий и действий с отчетом, сразу возвращается финальный результат запроса. Т.е. дизайнер вернет полностью готовую HTML страницу со всеми необходимыми скриптами и кодом.
Информация |
В большинстве случаев для работы с продуктом достаточно использовать только Python код, который обеспечивает взаимодействие со всеми основными возможностями компонентов. Для детальной настройки продукта и использования всех возможностей JS генератора, необходимо использовать JavaScript код. Вариант развертывания продукта при помощи только JavaScript кода описан в разделе Reports and Dashboards for JS, в этом случае использование Python кода требуется только для подключения адаптеров данных.
|
Для формирования ответа используется функция getFrameworkResponse(), которая возвращает готовый объект, подходящий для используемого в данный момент Web-фреймворка. Текущий фреймворк определяется в момент обработки запроса. Наши компоненты поддерживают работу с такими популярными фреймворками, как Django, Flask, Tornado. Для обработки запроса и формирования ответа в Web-проектах, не использующих указанные фреймворки, необходимо передать текущие GET и POST данные в функцию обработки запроса, а для формирования ответа воспользоваться функцией getResponse(), которая вернет все необходимые данные. Например, обработку событий дизайнера можно реализовать указанным ниже способом:
app.py |
from flask import Flask, make_response, render_template, url_for, request from stimulsoft_reports.designer import StiDesigner
app = Flask(__name__)
@app.route('/designer', methods = ['GET', 'POST']) def designer(): designer = StiDesigner() designer.options.appearance.fullScreenMode = True
query = request.args.to_dict() body = request.get_data(False) if designer.processRequest(None, query, body): designerResponse = designer.getResponse() response = make_response(designerResponse.data) response.mimetype = designerResponse.mimetype response.headers.add('Access-Control-Allow-Origin', request.origin) return response
js = designer.javascript.getHtml() html = designer.getHtml() return render_template('designer.html', designerJavaScript = js, designerHtml = html)
|