События генератора отчетов
Генератор отчетов поддерживает события, которые предоставляют возможность выполнить необходимые операции перед определенными действиями - как на стороне JavaScript клиента, включая платформу Node.js, так и на стороне Python сервера.
Для вызова события на стороне JavaScript клиента, необходимо добавить к событию название определенной в HTML шаблоне JavaScript функции в виде строки. При отсутствии HTML шаблона, а также при построении либо экспорте отчета на стороне сервера при помощи Node.js платформы, вместо названия функции необходимо к событию добавить саму функцию в виде строки или строк кода. Аргументы события будут находиться в предварительно заданной переменной args, которую можно использовать в коде события.
Для вызова события на стороне Python сервера, необходимо добавить к событию саму Python функцию, определенную ранее в коде.
Для одного события можно добавлять любое количество функций, как клиентских, так и серверных. Пример добавления нескольких функций разного типа к событию:
app.py |
def prepareVariables(args: StiVariablesEventArgs): variables = args.variables
report = StiReport() report.onPrepareVariables += prepareVariables report.onPrepareVariables += 'prepareVariables' report.onBeforeRender += 'args.report.dictionary.clear();' 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 сторона не имеет прямого доступа. В описании каждого события будет указано, какой именно обработчик может быть использован.
Информация |
Все события, работающие на стороне JavaScript клиента, в равной степени работают на стороне Node.js сервера, т.к. в этом случае так же используется JavaScript ядро отчетов.
|
Некоторые аргументы событий принимают значения из перечислений, которые находятся в определенных пространствах имен. Все используемые в событиях генератора отчетов перечисления указаны в блоке кода ниже:
app.py |
from stimulsoft_reports.enums import StiDataCommand, StiDatabaseType, StiEventType
|
Генератор отчетов поддерживает следующие события:
[v] JavaScript [x] Python
Событие вызывается перед построением отчета. Список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||||||
event |
Идентификатор текущего события, имеет значение "BeforeRender". |
||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||
report |
Текущий объект отчета. |
[v] JavaScript [x] Python
Событие вызывается после построения отчета. Список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||||||
event |
Идентификатор текущего события, имеет значение "AfterRender". |
||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||
report |
Текущий объект отчета. |
[v] JavaScript [v] Python
Событие вызывается перед построением отчета после подготовки переменных отчета. В таблице ниже представлен список аргументов обработчика событий на стороне JavaScript клиента:
Наименование |
Описание |
||||||
event |
Идентификатор текущего события, имеет значение "PrepareVariables". |
||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||
report |
Текущий объект отчета. |
||||||
variables |
Коллекция переменных отчета и их значений. |
||||||
preventDefault |
Данный флаг предоставляет возможность остановить дальнейшую обработку события генератором отчетов. По умолчанию установлено значение false. |
Список свойств, передаваемых в аргументах события на стороне Python сервера. Аргументы имеют тип StiVariablesEventArgs:
Наименование |
Описание |
||||||||
event |
Идентификатор текущего события, для данного события имеет значение StiEventType.PREPARE_VARIABLES |
||||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||||
variables |
Коллекция переменных отчета и их значений. |
[v] JavaScript [v] Python
Событие вызывается перед запросом данных, необходимых для построения отчета. Для файловых источников данных предусмотрена работа только JavaScript обработчика события. Список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||||||||||||||||||||||
event |
Идентификатор текущего события, имеет значение "BeginProcessData". |
||||||||||||||||||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||||||||||||||||||
report |
Текущий объект отчета. |
||||||||||||||||||||||
command |
Идентификатор текущей команды, может принимать следующие значения:
|
||||||||||||||||||||||
connection |
Имя текущего подключения к источнику данных, заданное в шаблоне отчета. |
||||||||||||||||||||||
database |
Наименование текущей базы данных. Может принимать следующие значения:
|
||||||||||||||||||||||
dataSource |
Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных. |
||||||||||||||||||||||
connectionString |
Строка подключения к SQL источнику данных. |
||||||||||||||||||||||
queryString |
SQL запрос на получение данных. Используется только с командой ExecuteQuery. |
||||||||||||||||||||||
pathData |
Путь к файлу источника данных, заданный в шаблоне отчета. Устанавливается только для XML и JSON источников данных. |
||||||||||||||||||||||
pathSchema |
Путь к файлу схемы данных, заданный в шаблоне отчета. Устанавливается только для XML источника данных. |
||||||||||||||||||||||
parameters |
Коллекция параметров и их значений, заданная в SQL источнике данных. |
||||||||||||||||||||||
preventDefault |
Данный флаг предоставляет возможность остановить дальнейшую обработку события генератором отчетов. По умолчанию установлено значение false. |
Список свойств, передаваемых в аргументах события на стороне Python сервера. Аргументы имеют тип StiDataEventArgs:
Наименование |
Описание |
||||||||||||||
event |
Идентификатор текущего события, для данного события имеет значение StiEventType.BEGIN_PROCESS_DATA |
||||||||||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||||||||||
command |
Идентификатор текущей команды. Может принимать следующие значения:
|
||||||||||||||
connection |
Имя текущего подключения к источнику данных, заданное в шаблоне отчета. |
||||||||||||||
database |
Наименование текущей базы данных. Может принимать следующие значения:
|
||||||||||||||
dataSource |
Имя текущего источника данных, заданное в шаблоне отчета. |
||||||||||||||
connectionString |
Строка подключения к SQL источнику данных. |
||||||||||||||
queryString |
SQL запрос на получение данных. Используется только с командой StiDataCommand.EXECUTE_QUERY. |
||||||||||||||
parameters |
Коллекция параметров и их значений, заданная в SQL источнике данных. Значения параметров всегда передаются в первоначальном (не экранированном) виде. |
[v] JavaScript [v] Python
Событие вызывается после загрузки данных перед построением отчета. Для файловых источников данных предусмотрена работа только JavaScript обработчика события. Список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||||||||||||||||||||||
event |
Идентификатор текущего события, имеет значение "EndProcessData". |
||||||||||||||||||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||||||||||||||||||
report |
Текущий объект отчета. |
||||||||||||||||||||||
command |
Идентификатор текущей команды, может принимать следующие значения:
|
||||||||||||||||||||||
database |
Наименование текущей базы данных. Может принимать следующие значения:
|
||||||||||||||||||||||
connection |
Имя текущего подключения к источнику данных, заданное в шаблоне отчета. |
||||||||||||||||||||||
dataSource |
Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных. |
||||||||||||||||||||||
dataSet |
Подготовленный объект Stimulsoft.System.Data.DataSet, содержащий таблицы и строки данных, полученных из файлового источника. |
||||||||||||||||||||||
result |
Коллекция колонок и их типов, а также строк данных, полученных из SQL источника. |
Список свойств, передаваемых в аргументах события на стороне Python сервера. Аргументы имеют тип StiDataEventArgs:
Наименование |
Описание |
||||||||||||||
event |
Идентификатор текущего события, для данного события имеет значение StiEventType.END_PROCESS_DATA |
||||||||||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||||||||||
command |
Идентификатор текущей команды, может принимать следующие значения:
|
||||||||||||||
connection |
Имя текущего подключения к источнику данных, заданное в шаблоне отчета. |
||||||||||||||
database |
Наименование текущей базы данных. Может принимать следующие значения:
|
||||||||||||||
dataSource |
Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных. |
||||||||||||||
queryString |
Итоговый SQL запрос со всеми параметрами, который был использован на получение данных. Используется только с командой StiDataCommand.EXECUTE_QUERY |
||||||||||||||
result |
Коллекция колонок и их типов, а также строк данных, полученных из SQL или NoSQL источника. |