События генератора отчетов
Генератор отчетов поддерживает события, которые предоставляют возможность выполнить необходимые операции перед определенными действиями - как на стороне 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 ядро отчетов.
|
Генератор отчетов поддерживает следующие события:
[-] JavaScript [+] PHP
Событие вызывается перед подключением к базе данных после получения всех параметров. Подробное описание и примеры использования находятся в разделе и Подключение SQL адаптеров данных. В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне PHP сервера:
Наименование |
Описание |
||||
event |
Идентификатор текущего события, для данного события имеет значение StiEventType:: DatabaseConnect |
||||
sender |
Компонент, который инициировал данное событие, может иметь следующие типы:
|
||||
database |
Тип базы данных, может принимать одно из значений перечисления StiDatabaseType. |
||||
driver |
Название используемого PHP драйвера базы данных. |
||||
info |
Параметры подключения к базе данных, полученные из строки подключения. |
||||
link |
Идентификатор подключения к базе данных. По умолчанию имеет значение null, в этом случае подключение будет создано адаптером данных. |
[+] JavaScript [-] PHP
Событие вызывается перед построением отчета. Подробное описание и примеры использования находятся в разделе и Построение отчета.
В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||
event |
Идентификатор текущего события, имеет значение "BeforeRender". |
||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||
report |
Текущий объект отчета. |
[+] JavaScript [-] PHP
Событие вызывается после построения отчета. Подробное описание и примеры использования находятся в разделе и Построение отчета.
В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||
event |
Идентификатор текущего события, имеет значение "AfterRender". |
||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||
report |
Текущий объект отчета. |
[+] JavaScript [+] PHP
Событие вызывается перед запросом данных, необходимых для построения отчета. Подробное описание и примеры использования находятся в разделах Подключение файловых данных и Подключение SQL адаптеров данных.
В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||||||||||||||||||||
event |
Идентификатор текущего события, имеет значение "BeginProcessData". |
||||||||||||||||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||||||||||||||||
report |
Текущий объект отчета. |
||||||||||||||||||||
command |
Идентификатор текущей команды, может принимать следующие значения:
|
||||||||||||||||||||
connection |
Имя текущего подключения к источнику данных, заданное в шаблоне отчета. |
||||||||||||||||||||
database |
Наименование текущей базы данных. Может принимать следующие значения:
|
||||||||||||||||||||
dataSource |
Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных. |
||||||||||||||||||||
connectionString |
Строка подключения к SQL источнику данных. |
||||||||||||||||||||
queryString |
SQL запрос на получение данных. Используется только с командой ExecuteQuery. |
||||||||||||||||||||
pathData |
Путь к файлу источника данных, заданный в шаблоне отчета. Устанавливается только для XML и JSON источников данных. |
||||||||||||||||||||
pathSchema |
Путь к файлу схемы данных, заданный в шаблоне отчета. Устанавливается только для XML источника данных. |
||||||||||||||||||||
parameters |
Коллекция параметров и их значений, заданная в SQL источнике данных. |
||||||||||||||||||||
preventDefault |
Данный флаг предоставляет возможность остановить дальнейшую обработку события генератором отчетов. По умолчанию установлено значение false. |
В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне PHP сервера:
Наименование |
Описание |
||||||||||||||
event |
Идентификатор текущего события, для данного события имеет значение StiEventType::BeginProcessData |
||||||||||||||
sender |
Компонент, который инициировал данное событие, может иметь следующие типы:
|
||||||||||||||
command |
Идентификатор текущей команды, может принимать следующие значения:
|
||||||||||||||
connection |
Имя текущего подключения к источнику данных, заданное в шаблоне отчета. |
||||||||||||||
database |
Наименование текущей базы данных. Может принимать следующие значения:
|
||||||||||||||
dataSource |
Имя текущего источника данных, заданное в шаблоне отчета. |
||||||||||||||
connectionString |
Строка подключения к SQL источнику данных. |
||||||||||||||
queryString |
SQL запрос на получение данных. Используется только с командой StiDataCommand::ExecuteQuery. |
||||||||||||||
parameters |
Коллекция параметров и их значений, заданная в SQL источнике данных. Значения параметров всегда передаются в первоначальном (не экранированном) виде. |
[+] JavaScript [+] PHP
Событие вызывается после загрузки данных перед построением отчета. Подробное описание и примеры использования находятся в разделах Подключение файловых данных и Подключение SQL адаптеров данных.
В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||||||||||||||||||||
event |
Идентификатор текущего события, имеет значение "EndProcessData". |
||||||||||||||||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||||||||||||||||
report |
Текущий объект отчета. |
||||||||||||||||||||
command |
Идентификатор текущей команды, может принимать следующие значения:
|
||||||||||||||||||||
connection |
Имя текущего подключения к источнику данных, заданное в шаблоне отчета. |
||||||||||||||||||||
database |
Наименование текущей базы данных. Может принимать следующие значения:
|
||||||||||||||||||||
dataSource |
Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных. |
||||||||||||||||||||
dataSet |
Подготовленный объект Stimulsoft.System.Data.DataSet, содержащий таблицы и строки данных, полученных из файлового источника. |
||||||||||||||||||||
result |
Коллекция колонок и их типов, а также строк данных, полученных из SQL источника. |
В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне PHP сервера:
Наименование |
Описание |
||||||||||||||
event |
Идентификатор текущего события, для данного события имеет значение StiEventType::EndProcessData |
||||||||||||||
sender |
Компонент, который инициировал данное событие, может иметь следующие типы:
|
||||||||||||||
command |
Идентификатор текущей команды, может принимать следующие значения:
|
||||||||||||||
connection |
Имя текущего подключения к источнику данных, заданное в шаблоне отчета. |
||||||||||||||
database |
Наименование текущей базы данных. Может принимать следующие значения:
|
||||||||||||||
dataSource |
Имя текущего источника данных, заданное в шаблоне отчета. Устанавливается только для SQL источников данных. |
||||||||||||||
queryString |
Итоговый SQL запрос со всеми параметрами, который был выполнен для получения данных. Используется только с командой StiDataCommand::ExecuteQuery. |
||||||||||||||
result |
Коллекция колонок и их типов, а также строк данных, полученных из SQL источника. |
[+] JavaScript [+] PHP
Событие вызывается перед построением отчета после подготовки переменных отчета. Подробное описание и примеры использования находятся в разделе Работа с переменными отчета.
В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне JavaScript клиента:
Наименование |
Описание |
||||||
event |
Идентификатор текущего события, имеет значение "PrepareVariables". |
||||||
sender |
Идентификатор компонента, который инициировал данное событие, может принимать следующие значения:
|
||||||
report |
Текущий объект отчета. |
||||||
variables |
Коллекция переменных отчета и их значений. |
||||||
preventDefault |
Данный флаг предоставляет возможность остановить дальнейшую обработку события генератором отчетов. По умолчанию установлено значение false. |
В таблице ниже представлен список свойств, передаваемых в аргументах события на стороне PHP сервера:
Наименование |
Описание |
||||||
event |
Идентификатор текущего события, для данного события имеет значение StiEventType::PrepareVariables. |
||||||
sender |
Компонент, который инициировал данное событие, может иметь следующие типы:
|
||||||
variables |
Коллекция переменных отчета и их значений. |