Развертывание
Примеры |
Полный код примера можно найти на 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-проект, предназначен класс StiViewer. При помощи данного класса можно создать объект вьювера, установить необходимые настройки, обработать запрос и вернуть результат его выполнения, получить подготовленный JavaScript и HTML код компонента. Пример отображения вьювера на HTML странице:
app.py |
from flask import Flask, render_template, url_for, request from stimulsoft_reports.viewer import StiViewer
app = Flask(__name__)
@app.route('/viewer', methods = ['GET', 'POST']) def viewer(): viewer = StiViewer() viewer.options.appearance.fullScreenMode = True
if viewer.processRequest(request): return viewer.getFrameworkResponse()
js = viewer.javascript.getHtml() html = viewer.getHtml() return render_template('viewer.html', viewerJavaScript = js, viewerHtml = html)
|
viewer.html |
<!DOCTYPE html> <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Showing a Report in the Viewer</title>
{{ viewerJavaScript|safe }} </head>
<body> {{ viewerHtml|safe }} </body>
</html>
|
В этом примере создается экземпляр объекта StiViewer и задаются необходимые настройки.
Специальная функция компонента processRequest(request) выполняет обработку текущего запроса. Если функция возвращает True, значит запрос успешно обработан, и необходимо вернуть результат его выполнения. Более подробно про это рассказано в разделе Обработчик событий.
Далее, необходимо сгенерировать подготовленный JavaScript и HTML код, необходимый для работы вьювера. Функция viewer.javascript.getHtml() генерирует HTML код для подключения необходимых скриптов и ресурсов, функция viewer.getHtml() генерирует HTML код самого компонента. Сгенерированный код передается в качестве параметров в HTML шаблон viewer.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.viewer import StiViewer
app = Flask(__name__)
@app.route('/viewer', methods = ['GET', 'POST']) def viewer(): viewer = StiViewer() viewer.options.appearance.fullScreenMode = True
if viewer.processRequest(request): return viewer.getFrameworkResponse()
# Here is the code for working with the report
return viewer.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.viewer import StiViewer
app = Flask(__name__)
@app.route('/viewer', methods = ['GET', 'POST']) def viewer(): viewer = StiViewer() viewer.options.appearance.fullScreenMode = True
query = request.args.to_dict() body = request.get_data(False) if viewer.processRequest(None, query, body): viewerResponse = viewer.getResponse() response = make_response(viewerResponse.data) response.mimetype = viewerResponse.mimetype response.headers.add('Access-Control-Allow-Origin', request.origin) return response
js = viewer.javascript.getHtml() html = viewer.getHtml() return render_template('viewer.html', viewerJavaScript = js, viewerHtml = html)
|