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

 

Для вызова события на стороне JavaScript клиента, необходимо добавить к событию название JavaScript функции, определенной в текущем HTML шаблоне. При отсутствии HTML шаблона, а также при построении либо экспорте отчета на стороне сервера при помощи Node.js платформы, вместо названия функции необходимо к событию добавить саму функцию в виде строки или строк кода. Аргументы события будут переданы в параметрах функции, либо в предварительно заданной переменной args, которую можно использовать в коде события.

 
Для вызова события на стороне PHP сервера, необходимо добавить к событию саму PHP функцию, определенную ранее в коде. Допускается присвоение анонимной PHP функции для события. Аргументы события будут переданы в параметрах функции.
 
Для одного события можно добавлять любое количество функций, как клиентских, так и серверных. В этом случае, необходимо воспользоваться специальным методом append() вместо присвоения функции, а саму функцию передать в качестве параметра. Обработчик событий сгруппирует функции по типу и выполнит их вызов в порядке добавления.

 

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

 

index.php

 

<?php

use Stimulsoft\Events\StiDataEventArgs;

use Stimulsoft\Events\StiVariablesEventArgs;

use Stimulsoft\Report\StiReport;

 

function prepareVariables(StiVariablesEventArgs $args) {

$variables = $args->variables;

};

 

$report = new StiReport();

$report->onPrepareVariables->append(prepareVariables);

$report->onPrepareVariables->append('prepareVariables');

$report->onBeginProcessData = function(StiDataEventArgs $args) {

$args->connectionString = 'Server=localhost;Database=test;uid=root;password=******;';

};

 

$report->onBeforeRender = 'args.report.dictionary.clear();';

$report->onAfterRender = 'afterRender';

 

$report->loadFile('reports/Variables.mrt');

$report->render();

?>

 

...

 

<script>

function prepareVariables(args) {

let variables = args.variables;

}

 

function afterRender(args) {

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

}

</script>

 

 

 

В зависимости от события, оно может быть вызвано на стороне JavaScript клиента и на стороне PHP сервера одновременно, либо только на стороне JavaScript клиента, либо только на стороне PHP сервера. Это связано с архитектурой компонентов - для построения и экспортирования отчета используется JavaScript ядро генератора, которое работает на стороне клиента, а для работы с данными используется серверный PHP код. Эти две составляющие не имеет прямого доступа друг к другу, поэтому события работают раздельно, а передачу данных обеспечивает обработчик событий. В описании каждого события будет указано, какой именно тип может быть использован. Подробное описание обработчика событий и примеры использования находится в разделе Обработчик событий.

 

Информация

 

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

 

 

 

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

onDatabaseConnect
onBeforeRender
onAfterRender
onBeginProcessData
onEndProcessData
onPrepareVariables

 

 

onDatabaseConnect

[-] JavaScript  [+] PHP

 

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

 

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

Описание

event

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

sender

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

StiViewer
StiDesigner

database

Тип базы данных, может принимать одно из значений перечисления StiDatabaseType.

driver

Название используемого PHP драйвера базы данных.

info

Параметры подключения к базе данных, полученные из строки подключения.

link

Идентификатор подключения к базе данных. По умолчанию имеет значение null, в этом случае подключение будет создано адаптером данных.

 

 

onBeforeRender

[+] JavaScript  [-] PHP

 

Событие вызывается перед построением отчета. Подробное описание и примеры использования находятся в разделе и Построение отчета.

 

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

 

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

Описание

event

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

sender

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

"Report"

report

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

 

 

onAfterRender

[+] JavaScript  [-] PHP

 

Событие вызывается после построения отчета. Подробное описание и примеры использования находятся в разделе и Построение отчета.

 

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

 

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

Описание

event

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

sender

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

"Report"

report

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

 

 

onBeginProcessData

[+] JavaScript  [+] PHP

 

Событие вызывается перед запросом данных, необходимых для построения отчета. Подробное описание и примеры использования находятся в разделах Подключение файловых данных и Подключение SQL адаптеров данных.

 

В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне 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"
"ODBC"

dataSource

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

connectionString

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

queryString

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

pathData

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

pathSchema

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

parameters

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

preventDefault

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

 

 

В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне PHP сервера:

 

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

Описание

event

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

sender

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

StiReport
StiViewer
StiDesigner

command

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

StiDataCommand::TestConnection - выполняется проверка соединения;
StiDataCommand::RetrieveSchema - выполняется запрос схемы базы данных для NoSQL источников данных;
StiDataCommand::ExecuteQuery - выполняется запрос данных из указанного SQL  источника.
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::ExecuteQuery.

parameters

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

 

 

onEndProcessData

[+] JavaScript  [+] PHP

 

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

 

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

 

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

Описание

event

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

sender

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

"Report"
"Viewer"
"Designer"

report

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

command

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

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

connection

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

database

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

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

dataSource

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

dataSet

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

result

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

 

 

В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне PHP сервера:

 

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

Описание

event

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

sender

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

StiReport
StiViewer
StiDesigner

command

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

StiDataCommand::TestConnection - выполняется проверка соединения;
StiDataCommand::RetrieveSchema - выполняется запрос схемы базы данных для NoSQL источников данных;
StiDataCommand::ExecuteQuery - выполняется запрос данных из указанного SQL  источника;
StiDataCommand::Execute - выполняется хранимая процедура указанного SQL источника.

connection

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

database

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

StiDatabaseType::MySQL
StiDatabaseType::MSSQL
StiDatabaseType::PostgreSQL
StiDatabaseType::Firebird
StiDatabaseType::Oracle
StiDatabaseType::MongoDB
StiDatabaseType::ODBC

dataSource

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

queryString

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

result

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

 

 

onPrepareVariables

[+] JavaScript  [+] PHP

 

Событие вызывается перед построением отчета после подготовки переменных отчета. Подробное описание и примеры использования находятся в разделе Работа с переменными отчета.

 

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

 

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

Описание

event

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

sender

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

"Report"
"Viewer"
"Designer"

report

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

variables

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

preventDefault

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

 

 

В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне PHP сервера:

 

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

Описание

event

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

sender

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

StiReport
StiViewer
StiDesigner

variables

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