Генератор отчетов поддерживает события, которые предоставляют возможность выполнить необходимые операции перед определенными действиями - как на стороне JavaScript клиента, так и на стороне Python сервера. Для вызова события на стороне клиента, необходимо добавить к событию название JavaScript функции в виде строки. Для вызова события на стороне сервера, необходимо добавить к событию саму Python функцию. Для одного события можно добавлять любое количество функций, как клиентских, так и серверных.

 

Пример добавления нескольких функций разного типа к событию:

 

app.py

 

def prepareVariables(args: StiVariablesEventArgs):

   variables = args.variables

 

report = StiReport()

report.onPrepareVariables += prepareVariables

report.onPrepareVariables += 'prepareVariables'

report.onAfterRender += 'afterRender'

report.loadFile(url_for('static', filename='reports/SimpleList.mrt'))

report.render()

 

 

report.html

 

<script>

  function prepareVariables(args) {

      let variables = args.variables;

   }

 

  function afterRender(args) {

       alert("The report rendering is completed.");

   }

</script>

 

 

 

В зависимости от события, обработчик может работать на стороне JavaScript клиента и на стороне Python сервера одновременно, либо только на стороне JavaScript клиента. Это связано с тем, что для построения и экспортирования отчета используется JavaScript ядро генератора, которое работает на стороне клиента, а для работы с данными используется серверный Python код, к которому JavaScript сторона не имеет прямого доступа. В описании каждого события будет указано, какой именно обработчик может быть использован.

 

Некоторые аргументы событий принимают значения из перечислений, которые находятся в определенных пространствах имен. Все используемые в событиях генератора отчетов перечисления указаны в блоке кода ниже:

 

app.py

 

from stimulsoft_reports.enums import StiDataCommand, StiDatabaseType, StiEventType

 

 

 

Генератор отчетов поддерживает следующие события:

 

onBeforeRender
onAfterRender
onPrepareVariables
onBeginProcessData
onEndProcessData

 

 

onBeforeRender

[v] JavaScript  [x] Python

 

Событие вызывается перед построением отчета. Список свойств, передаваемых в аргументах события на стороне JavaScript клиента:

 

Наименование

Описание

event

Идентификатор текущего события, имеет значение "BeforeRender".

sender

Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:

"Report"
"Viewer"
"Designer"

report

Текущий объект отчета.

 

 

onAfterRender

[v] JavaScript  [x] Python

 

Событие вызывается после построения отчета. Список свойств, передаваемых в аргументах события на стороне JavaScript клиента:

 

Наименование

Описание

event

Идентификатор текущего события, имеет значение "AfterRender".

sender

Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:

"Report"
"Viewer"
"Designer"

report

Текущий объект отчета.

 

 

onPrepareVariables

[v] JavaScript  [v] Python

 

Событие вызывается перед построением отчета после подготовки переменных отчета. В таблице ниже представлен список аргументов обработчика событий на стороне JavaScript клиента:

 

Наименование

Описание

event

Идентификатор текущего события, имеет значение "PrepareVariables".

sender

Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:

"Report"
"Viewer"
"Designer"

report

Текущий объект отчета.

variables

Коллекция переменных отчета и их значений.

preventDefault

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

 

 

Список свойств, передаваемых в аргументах события на стороне Python сервера. Аргументы имеют тип StiVariablesEventArgs:

 

Наименование

Описание

event

Идентификатор текущего события, для данного события имеет значение StiEventType.PREPARE_VARIABLES

sender

Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:

StiHandler
StiReport
StiViewer
StiDesigner

variables

Коллекция переменных отчета и их значений.

 

 

onBeginProcessData

[v] JavaScript  [v] Python

 

Событие вызывается перед запросом данных, необходимых для построения отчета. Для файловых источников данных предусмотрена работа только JavaScript обработчика события. Список свойств, передаваемых в аргументах события на стороне JavaScript клиента:

 

Наименование

Описание

event

Идентификатор текущего события, имеет значение "BeginProcessData".

sender

Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:

"Report"
"Viewer"
"Designer"

report

Текущий объект отчета.

command

Идентификатор текущей команды, может принимать следующие значения:

"TestConnection" - выполняется проверка соединения;
"ExecuteQuery" - выполняется запрос данных из указанного SQL источника.
"GetSchema" - выполняется чтение XSD схемы из файлового источника.
"GetData" - выполняется чтение данных из файлового источника.

connection

Имя текущего подключения к источнику данных, заданное в шаблоне отчета.

database

Наименование текущей базы данных. Может принимать следующие значения:

"XML"
"JSON"
"Excel"
"CSV"
"MySQL"
"MS SQL"
"PostgreSQL"
"Firebird"
"Oracle"
"MongoDB"
"ODBC"

dataSource

Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных.

connectionString

Строка подключения к SQL источнику данных.

queryString

SQL запрос на получение данных. Используется только с командой ExecuteQuery.

pathData

Путь к файлу источника данных, заданный в шаблоне отчета. Устанавливается только для XML и JSON источников данных.

pathSchema

Путь к файлу схемы данных, заданный в шаблоне отчета. Устанавливается только для XML источника данных.

parameters

Коллекция параметров и их значений, заданная в SQL источнике данных.

preventDefault

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

 

 

Список свойств, передаваемых в аргументах события на стороне Python сервера. Аргументы имеют тип StiDataEventArgs:

 

Наименование

Описание

event

Идентификатор текущего события, для данного события имеет значение StiEventType.BEGIN_PROCESS_DATA

sender

Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:

StiHandler
StiReport
StiViewer
StiDesigner

command

Идентификатор текущей команды. Может принимать следующие значения:

StiDataCommand.TEST_CONNECTION - выполняется проверка соединения;
StiDataCommand.RETRIEVE_SCHEMA - выполняется запрос схемы базы данных для NoSQL источников данных;
StiDataCommand.EXECUTE_QUERY - выполняется запрос данных из указанного SQL или NoSQL источника;
StiDataCommand.EXECUTE - выполняется хранимая процедура указанного SQL источника.

connection

Имя текущего подключения к источнику данных, заданное в шаблоне отчета.

database

Наименование текущей базы данных. Может принимать следующие значения:

StiDatabaseType.MYSQL
StiDatabaseType.MSSQL
StiDatabaseType.POSTGRESQL
StiDatabaseType.FIREBIRD
StiDatabaseType.ORACLE
StiDatabaseType.MONGODB
StiDatabaseType.ODBC

dataSource

Имя текущего источника данных, заданное в шаблоне отчета.

connectionString

Строка подключения к SQL источнику данных.

queryString

SQL запрос на получение данных. Используется только с командой StiDataCommand.EXECUTE_QUERY.

parameters

Коллекция параметров и их значений, заданная в SQL источнике данных. Значения параметров всегда передаются в первоначальном (не экранированном) виде.

 

 

onEndProcessData

[v] JavaScript  [v] Python

 

Событие вызывается после загрузки данных перед построением отчета. Для файловых источников данных предусмотрена работа только JavaScript обработчика события. Список свойств, передаваемых в аргументах события на стороне JavaScript клиента:

 

Наименование

Описание

event

Идентификатор текущего события, имеет значение "EndProcessData".

sender

Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:

"Report"
"Viewer"
"Designer"

report

Текущий объект отчета.

command

Идентификатор текущей команды, может принимать следующие значения:

"ExecuteQuery" - данные получены из указанного SQL источника.
"GetData" - данные получены из файлового источника.

database

Наименование текущей базы данных. Может принимать следующие значения:

"XML"
"JSON"
"Excel"
"CSV"
"MySQL"
"MS SQL"
"PostgreSQL"
"Firebird"
"Oracle"
"MongoDB"
"ODBC"

connection

Имя текущего подключения к источнику данных, заданное в шаблоне отчета.

dataSource

Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных.

dataSet

Подготовленный объект Stimulsoft.System.Data.DataSet, содержащий таблицы и строки данных, полученных из файлового источника.

result

Коллекция колонок и их типов, а также строк данных, полученных из SQL источника.

 

 

Список свойств, передаваемых в аргументах события на стороне Python сервера. Аргументы имеют тип StiDataEventArgs:

 

Наименование

Описание

event

Идентификатор текущего события, для данного события имеет значение StiEventType.END_PROCESS_DATA

sender

Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:

StiHandler
StiReport
StiViewer
StiDesigner

command

Идентификатор текущей команды, может принимать следующие значения:

StiDataCommand.TEST_CONNECTION - выполняется проверка соединения;
StiDataCommand.RETRIEVE_SCHEMA - выполняется запрос схемы базы данных для NoSQL источников данных;
StiDataCommand.EXECUTE_QUERY - выполняется запрос данных из указанного SQL или NoSQL источника;
StiDataCommand.EXECUTE - выполняется хранимая процедура указанного SQL источника.

connection

Имя текущего подключения к источнику данных, заданное в шаблоне отчета.

database

Наименование текущей базы данных. Может принимать следующие значения:

StiDatabaseType.MYSQL
StiDatabaseType.MSSQL
StiDatabaseType.POSTGRESQL
StiDatabaseType.FIREBIRD
StiDatabaseType.ORACLE
StiDatabaseType.MONGODB
StiDatabaseType.ODBC

dataSource

Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных.

queryString

Итоговый SQL запрос со всеми параметрами, который был использован на получение данных. Используется только с командой StiDataCommand.EXECUTE_QUERY

result

Коллекция колонок и их типов, а также строк данных, полученных из SQL или NoSQL источника.