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

События вьювера

  • onPrepareVariables

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

  • onBeginProcessData

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

  • onPrintReport

  • Предоставляет возможность модифицировать отчет перед печатью или самостоятельно реализовать печать.
    Событие вызывается перед печатью отчета. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Viewer",
        event: "PrintReport",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean
        
        printAction: string,
    }
    
    Пример удаления картинки перед печатью:
    viewer.onPrintReport = (args) => {
        var page = args.report.renderedPages.getByIndex(0);
        var image = page.components.getByName("Image1");
        if (image)
            page.components.remove(image);
    }

  • onBeginExportReport

  • Предоставляет возможность корректировать настройки экспорта или модифицировать отчет перед экспортом.
    Событие вызывается перед экспортом отчета, но после установки настроек экспорта, заданных в диалоговом окне. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Viewer",
        event: "BeginExportReport",
        report: StiReport
        
        preventDefault: boolean,
        async: boolean,
        
        action: StiExportAction,
        settings: IStiDashboardExportSettings | StiExportSettings,
        format: StiExportFormat,
        formatName: string,
        fileName: string,
        openAfterExport: boolean,
    }
    Пример корректировки параметров экспорта:
    viewer.onBeginExportReport = (args) => {
        if (args.format == Stimulsoft.Report.StiExportFormat.Pdf)
            args.settings.imageQuality = 0.5;
    }

  • onEndExportReport

  • Предоставляет возможность самостоятельно реализовать сохранение файла.
    Событие вызывается после экспорта отчета, но перед сохранением файла. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Viewer",
        event: "BeginExportReport",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean,
        
        action: StiExportAction,
        format: StiExportFormat,
        formatName: string,
        fileName: string,
        openAfterExport: boolean,
        data: string | number[]
    }
    Пример изменения имени экспортированного файла:
    viewer.onEndExportReport = (args) => {
        args.fileName = "SampleFileName.txt";
    }

  • onInteraction

  • Событие вызывается перед выполнением интерактивности. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Viewer",
        event: "Interaction",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean,
        
        action: string,
        variables,
        sortingParameters,
        collapsingParameters,
        drillDownParameters,
        filteringParameters
    }
    Пример замены значения переменной:
    viewer.onInteraction = (args) => {
        if (args.action == "Variables")
            args.variables["Variable1"] = "New Value";
    }

  • onEmailReport

  • Предоставляет возможность реализовать отправку экспортированного отчета по Email.
    Событие вызывается перед отправкой отчета по Email. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Viewer",
        event: "EmailReport",
        report: StiReport,
    
        settings: {
            email: string;
            subject: string;
            message: string;
        },
        format: StiExportFormat,
        formatName: string,
        fileName: string,
        data: number[] | string
    }
    Для включения кнопки нужно установить следующий параметр:
    viewerOptions.toolbar.showSendEmailButton = true;
    Пример отправки Email:
    viewer.onEmailReport = (args) => {
        var emailAddress = args.settings.email;
        var emailMessage = args.settings.message;
        var emailSubject = args.settings.subject;
        var emailAttachmentFileName = args.fileName;
        var emailAttachment = args.data;
    
        sendEmail(emailAddress, emailMessage, emailSubject, emailAttachmentFileName, emailAttachment);
    }

  • onDesignReport

  • Предоставляет возможность показать дизайнер и передать шаблона отчета.
    Событие вызывается при нажатии кнопки Design. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Viewer",
        event: "DesignReport",
        report: StiReport
    }
    Для включения кнопки нужно установить следующий параметр:
    viewerOptions.toolbar.showDesignButton = true;
    Пример удаления вьювера, создания дизайнера и передачи отчета дизайнеру:
    var viewerOptions = new Stimulsoft.Viewer.StiViewerOptions();
    viewerOptions.toolbar.showDesignButton = true;
    var viewer = new Stimulsoft.Viewer.StiViewer(viewerOptions, "StiViewer", false);
    viewer.renderHtml("content");
    
    viewer.onDesignReport = (args) => {
        var viewerDiv = document.getElementById("content");
        viewerDiv.innerHTML = "";
    
        var designerOptions = new Stimulsoft.Designer.StiDesignerOptions();
        designerOptions.appearance.fullScreenMode = true;
    
        var designer = new Stimulsoft.Designer.StiDesigner(designerOptions, "StiDesigner", false);
        designer.renderHtml("content");
        
        designer.report = args.report;
    }

  • onShowReport

  • Предоставляет возможность модифицировать отчет перед его отображением во вьювере.
    Событие вызывается после построения отчета перед его отображением во вьювере. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Viewer",
        event: "ShowReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean
    }

  • onOpenReport

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

  • onOpenedReport

  • Предоставляет возможность модифицировать отчет перед его передачей во вьювере.
    Событие вызывается после открытия отчета и перед передачей его во вьювере. Ниже представлен список аргументов обработчика событий:
    {
        sender: "Viewer",
        event: "OpenedReport",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean
    }
    Для включения кнопки нужно установить следующий параметр:
    viewerOptions.toolbar.showOpenButton = true;
    Пример прерывания открытия отчета, если свойство reportAuthor не равно "Stimulsoft":
    viewer.onOpenedReport = (args) => {
        if (args.report.reportAuthor != "Stimulsoft") {
            args.preventDefault = true;
            window.alert("report.reportAuthor == " + args.report.reportAuthor);
        }
    }
    Если у вас остались вопросы по событиям вьювера, свяжитесь с нами. В следующей статье мы расскажем про события дизайнера отчетов.
    Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.