Мы продолжаем серию статей о событиях в генераторе отчетов для 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);
        }
    }
    Если у вас остались вопросы по событиям вьювера, свяжитесь с нами. В следующей статье мы расскажем про события дизайнера отчетов.
    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.