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

События дизайнера

  • onPrepareVariables

  • Событие вызывается в начале построения отчета перед заполнением переменных в отчете. Событие возникает сразу после обработки события onPrepareVariables у экземпляра StiReport. В таблице ниже представлен список аргументов обработчика событий:
    {
        event: "PrepareVariables",
        sender: "Designer",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
        
        variables: []
    }
    Пример замены значения переменной:
    designer.onPrepareVariables = (args, callback) => {
        args.variables[0].value = "Replace value";
    }

  • onBeginProcessData

  • Событие вызывается перед запросом данных, необходимых для построения отчета. Событие возникает сразу после обработки события onBeginProcessData у экземпляра StiReport. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Designer",
        event: "BeginProcessData",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
        
        command: string,
        database: string,
        connection: string,
    
        headers: [],
        withCredentials: string,
        
        // Json
        pathData: string,
        tryParseDateTime: boolean,
        relationDirection: StiRelationDirection,
    
        // Xsd
        pathSchema: string,
    
        // Xml
        pathData: string,
        tryParseDateTime: boolean,
        relationDirection: StiRelationDirection,
        
        // Excel
        pathData: string,
        firstRowIsHeader: boolean,
    
        // OData
        connectionString: string,
        dataSource: string,
        collectionName: string,
    
        // Sql
        connectionString: string,
        dataSource: string,
        queryString: string,
        timeout: number,
        parameters: { name: string, value: string | number }[],
        escapeQueryParameters: boolean,
    
        // Gis
        pathData: string,
        separator: string,
        dataType: StiGisDataType,
    
        // Csv
        pathData: string,
        separator: string,
        codePage: number,
    
        // DBase
        pathData: string,
        codePage: number
    }
    Ниже представлен пример замены строки соединения (connection string):
    designer.onBeginProcessData = (args) => {
        if (args.database == "MySQL")
            args.connectionString = "new connection string";
    }
    А также пример собственной реализации получения данных:
    designer.onBeginProcessData = (args, callback) => {
        if (args.database == "MySQL"){
            args.preventDefault = true;
    
            var result = {
                success: true,
    
                rows: [
                    ["value1", 1, false],
                    ["value2", 1, true],
                    ["value3", 2, false]
                ],
                columns: [
                    "Column1_name",
                    "Column2_name",
                    "Column3_name"
                ],
                types:[
                    "string",
                    "int",
                    "boolean"
                ]
            }
    
            // https://github.com/stimulsoft/DataAdapters.JS/
            callback(result);
        }
    }

  • onEndProcessData

  • Событие вызывается после получения данных, необходимых для построения отчета. Событие возникает сразу после обработки события onEndProcessData у экземпляра StiReport. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Designer",
        event: "EndProcessData",
        report: StiReport,
    
        command: string,
        dataSource: string,
        connection: string,
        database: string,
    
        result: DataSet|any
    }
    Пример корректировки данных от адаптера:
    designer.onEndProcessData = (args) => {
        if (args.command == "ExecuteQuery" && args.dataSource == "Categories")
            args.result.rows.push(rowData) ;
    
        // https://github.com/stimulsoft/DataAdapters.JS/
    }

  • onCreateReport

  • Событие позволяет модифицировать новый отчет перед присвоением дизайнеру, и вызывается непосредственно перед присвоением нового шаблона дизайнеру. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Designer",
        event: "CreateReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
    
        isWizardUsed: boolean
    
    }
    Пример добавления JSON к новому шаблону:
    designer.onCreateReport = (args) => {
        var report = args.report;
    
        var database = new Stimulsoft.Report.Dictionary.StiJsonDatabase("DemoData", "http://localhost/Demo.json");
        report.dictionary.databases.add(database);
        report.dictionary.synchronize();
    }

  • onOpenReport

  • Событие предоставляет возможность реализовать собственный способ открытия шаблонов, и вызывается до диалогового окна выбора файла открытия отчета. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Designer",
        event: "OpenReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean
    }
    Пример прерывания вызова диалогового окна и передачи своего шаблона:
    designer.onOpenReport = (args, callback) => {
        args.preventDefault = true;
        args.async = true;
    
        args.report = anotherReport;
        callback();
    }

  • onOpenedReport

  • Событие предоставляет возможность модифицировать открытый отчет перед присвоением дизайнеру, и вызывается после открытия отчета и перед присвоение его дизайнеру. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Designer",
        event: "OpenedReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean
    }
    Пример добавления ресурса в шаблон отчета в асинхронном режиме:
    designer.onOpenedReport = (args, callback) => {
        args.async = true;
    
        var xhr = new XMLHttpRequest();
        xhr.open('GET', "Url to image");
    
        xhr.onload = function () {
    	var imageData = xhr.response;
    
    	var resource = new Stimulsoft.Report.Dictionary.StiResource("ImageName");
    	resource.content = imageData;
    	args.report.dictionary.resources.add(resource);
    
    	callback();
        };
    
        xhr.send();
    }

  • onSaveReport

  • Предоставляет возможность модифицировать отчет перед сохранением или реализовать собственный способ сохранения.
    Событие вызывается после нажатия кнопки Save и перед сохранением. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Designer",
        event: "SaveReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
    
        fileName: string,
        autoSave: boolean
    }
    Пример отключения сохранения:
    designer.onSaveReport = (args, callback) => {
        args.preventDefault = true;
        var jsonString = args.report.saveToJsonString();
        // save report
    }
    Пример удаления ресурсов из шаблона:
    designer.onSaveReport = (args, callback) => {
    	var report = args.report.clone();
    	report.dictionary.resources.clear();
    	args.report = report;
    }

  • onSaveAsReport

  • Предоставляет возможность модифицировать отчет перед сохранением или реализовать собственный способ сохранения.
    Событие вызывается после нажатия кнопки Save As и перед сохранением. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Designer",
        event: "SaveAsReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
    
        fileName: string,
        autoSave: boolean
    }
    Пример отключения сохранения:
    designer.onSaveAsReport = (args, callback) => {
        args.preventDefault = true;
        var jsonString = args.report.saveToJsonString();
        // save report
    }
    Пример удаления ресурсов из шаблона:
    designer.onSaveAsReport = (args, callback) => {
        var report = args.report.clone();
        report.dictionary.resources.clear();
        args.report = report;
    }

  • onPreviewReport

  • Событие позволяет модифицировать отчет перед просмотром, и вызывается перед просмотром шаблона в preview. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Designer",
        event: "PreviewReport",
        report: StiReport
    
        preventDefault: boolean,
        async: boolean,
    
        viewer: StiViewer
    }
    Пример смены свойства reportName у report:
    designer.onPreviewReport = (args) => {
        var report = args.report;
        report.reportName = "Changed Report Name";
    }

  • onExit

  • Событие предоставляет возможность реализовать закрытие дизайнера, и вызывается после нажатия кнопки Exit в File Menu.
    Для включения кнопки нужно установить следующий параметр:
    designerOptions.toolbar.showFileMenuExit = true
    Пример удаления div с дизайнером со страницы:
    var designerOptions = new Stimulsoft.Designer.StiDesignerOptions();
    designerOptions.toolbar.showFileMenuExit = true;
    
    var designer = new Stimulsoft.Designer.StiDesigner(designerOptions, "StiDesigner", false);
    designer.renderHtml("content");
    
    designer.onExit = () => {
        var designerDiv = document.getElementById("content");
        designerDiv.parentNode.removeChild(designerDiv);
    }
    Если у вас остались вопросы, напишите нам.
    Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.