Мы заканчиваем серию статей о событиях в генераторе отчетов для 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);
    }
    Если у вас остались вопросы, напишите нам.
    By using this website, you agree to the use of cookies for analytics and personalized content. Cookies store useful information on your computer to help us improve efficiency and usability. For more information, please read the privacy policy and cookie policy.