Примеры

 

Полный код примера можно найти на 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)