{
  "version": 3,
  "sources": ["external-global:@serenity-is/corelib/q", "external-global:@serenity-is/corelib", "../Modules/index.ts", "../Modules/ServerTypes/Extensions/UserPreferenceRow.ts", "../Modules/ServerTypes/Extensions/UserPreferenceService.ts", "../Modules/BulkActions/BasicProgressDialog.ts", "../Modules/BulkActions/BulkServiceAction.ts", "../Modules/ExportImport/ExcelExportHelper.ts", "../Modules/ExportImport/PdfExportHelper.ts", "../Modules/Formatters/EnumSelectFormatter.ts", "../Modules/Formatters/SingleLineTextFormatter.ts", "../Modules/GridEditor/GridEditorBase.ts", "../Modules/GridEditor/GridEditorDialog.ts", "../Modules/Reporting/ReportDialog.ts", "../Modules/Reporting/ReportHelper.ts", "../Modules/Reporting/ReportPage.ts", "../Modules/UserPreference/UserPreferenceStorage.ts", "../Modules/Widgets/DialogUtils.ts", "../Modules/Widgets/PromptDialog.ts", "../Modules/Widgets/SelectableEntityGrid.ts", "../Modules/Widgets/ServiceEditorBase.ts", "../Modules/Widgets/StaticTextBlock.ts"],
  "sourcesContent": ["module.exports = Q;", "module.exports = Serenity;", "export * from \"./ServerTypes/Extensions\";\nexport * from \"./ServerTypes/Reporting\";\nexport * from \"./BulkActions/BasicProgressDialog\";\nexport * from \"./BulkActions/BulkServiceAction\";\nexport * from \"./ExportImport/ExcelExportHelper\";\nexport * from \"./ExportImport/JsPdfAutoTable\";\nexport * from \"./ExportImport/PdfExportHelper\";\nexport * from \"./Formatters/EnumSelectFormatter\";\nexport * from \"./Formatters/SingleLineTextFormatter\";\nexport * from \"./GridEditor/GridEditorBase\";\nexport * from \"./GridEditor/GridEditorDialog\";\nexport * from \"./Reporting/ReportDialog\";\nexport * from \"./Reporting/ReportHelper\";\nexport * from \"./Reporting/ReportPage\";\nexport * from \"./UserPreference/UserPreferenceStorage\";\nexport * from \"./Widgets/DialogUtils\";\nexport * from \"./Widgets/PromptDialog\";\nexport * from \"./Widgets/SelectableEntityGrid\";\nexport * from \"./Widgets/ServiceEditorBase\";\nexport * from \"./Widgets/StaticTextBlock\";", "\uFEFFimport { fieldsProxy } from \"@serenity-is/corelib/q\";\n\nexport interface UserPreferenceRow {\n    UserPreferenceId?: number;\n    UserId?: number;\n    PreferenceType?: string;\n    Name?: string;\n    Value?: string;\n}\n\nexport abstract class UserPreferenceRow {\n    static readonly idProperty = 'UserPreferenceId';\n    static readonly nameProperty = 'Name';\n    static readonly localTextPrefix = 'Common.UserPreference';\n    static readonly deletePermission = '';\n    static readonly insertPermission = '';\n    static readonly readPermission = '';\n    static readonly updatePermission = '';\n\n    static readonly Fields = fieldsProxy<UserPreferenceRow>();\n}\n", "\uFEFFimport { UserPreferenceUpdateRequest } from \"./UserPreferenceUpdateRequest\";\nimport { ServiceResponse, ServiceOptions, serviceRequest } from \"@serenity-is/corelib/q\";\nimport { UserPreferenceRetrieveRequest } from \"./UserPreferenceRetrieveRequest\";\nimport { UserPreferenceRetrieveResponse } from \"./UserPreferenceRetrieveResponse\";\n\nexport namespace UserPreferenceService {\n    export const baseUrl = 'Extensions/UserPreference';\n\n    export declare function Update(request: UserPreferenceUpdateRequest, onSuccess?: (response: ServiceResponse) => void, opt?: ServiceOptions<any>): JQueryXHR;\n    export declare function Retrieve(request: UserPreferenceRetrieveRequest, onSuccess?: (response: UserPreferenceRetrieveResponse) => void, opt?: ServiceOptions<any>): JQueryXHR;\n\n    export const Methods = {\n        Update: \"Extensions/UserPreference/Update\",\n        Retrieve: \"Extensions/UserPreference/Retrieve\"\n    } as const;\n\n    [\n        'Update', \n        'Retrieve'\n    ].forEach(x => {\n        (<any>UserPreferenceService)[x] = function (r, s, o) {\n            return serviceRequest(baseUrl + '/' + x, r, s, o);\n        };\n    });\n}", "import { Decorators, TemplatedDialog } from \"@serenity-is/corelib\";\nimport { localText, trimToNull } from \"@serenity-is/corelib/q\";\n\n@Decorators.registerClass(\"Serenity.Extensions.BasicProgressDialog\")\nexport class BasicProgressDialog extends TemplatedDialog<any> {\n\n    constructor() {\n        super();\n\n        this.dialogTitle = localText('Site.BasicProgressDialog.PleaseWait');\n    }\n\n    public cancelled: boolean;\n\n    public get max(): number {\n        return parseInt(this.byId('ProgressBar').attr('aria-valuemax'), 10);\n    }\n\n    public set max(value: number) {\n        this.byId('ProgressBar').attr('aria-valuemax', (value || 100).toString());\n    }\n\n    public get value(): number {\n        return parseInt(this.byId('ProgressBar').attr('aria-valuenow'), 10);\n    }\n\n    public set value(value: number) {\n        this.byId('ProgressBar').attr('aria-valuenow', (value || 0).toString())\n            .css('width', (((value || 0) / (this.max || 100)) * 100) + '%')\n            .text(value + ' / ' + this.max);\n    }\n\n    public get title(): string {\n        return this.dialogTitle;\n    }\n\n    public set title(value: string) {\n        this.dialogTitle = value;\n    }\n\n    public cancelTitle: string;\n\n    getDialogButtons() {\n        return [{\n            text: localText('Dialogs.CancelButton'),\n            class: 'btn btn-danger',\n            click: () => {\n                this.cancelled = true;\n                this.element.closest('.ui-dialog')\n                    .find('.ui-dialog-buttonpane .ui-button')\n                    .attr('disabled', 'disabled')\n                    .css('opacity', '0.5');\n\n                this.element.dialog('option', 'title', trimToNull(this.cancelTitle) ||\n                    localText('Site.BasicProgressDialog.CancelTitle'));\n            }\n        }];\n    }\n\n    getDialogOptions() {\n        var opt = super.getDialogOptions();\n        opt.width = 600;\n        return opt;\n    }\n\n    initDialog() {\n        super.initDialog();\n        this.element.closest('.ui-dialog').find('.ui-dialog-titlebar-close').hide();\n    }\n\n    getTemplate() {\n        return (\n            `<div class=\"s-DialogContent s-BasicProgressDialogContent\">\n    <div id=\"~_StatusText\" class=\"status-text\" ></div>\n        <div id=\"~_Progress\" class=\"progress\" style=\"height: 1.5rem\">\n        <div id=\"~_ProgressBar\" class=\"progress-bar\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n    </div>\n</div>`);\n    }\n}", "\uFEFFimport { confirmDialog, Dictionary, format, notifyError, notifySuccess, notifyWarning, ServiceError, localText } from \"@serenity-is/corelib/q\";\nimport { BasicProgressDialog } from \"./BasicProgressDialog\";\n\nexport class BulkServiceAction {\n\n    protected keys: string[];\n    protected queue: string[];\n    protected queueIndex: number;\n    protected progressDialog: BasicProgressDialog;\n    protected pendingRequests: number;\n    protected completedRequests: number;\n    protected errorByKey: Dictionary<ServiceError>;\n    private successCount;\n    private errorCount;\n    public done: () => void;\n\n    protected createProgressDialog() {\n        this.progressDialog = new BasicProgressDialog();\n        this.progressDialog.dialogOpen();\n        this.progressDialog.max = this.keys.length;\n        this.progressDialog.value = 0;\n    }\n\n    protected getConfirmationFormat() {\n        return localText('Site.BulkServiceAction.ConfirmationFormat');\n    }\n\n    protected getConfirmationMessage(targetCount) {\n        return format(this.getConfirmationFormat(), targetCount);\n    }\n\n    protected confirm(targetCount, action) {\n        confirmDialog(this.getConfirmationMessage(targetCount), action);\n    }\n\n    protected getNothingToProcessMessage() {\n        return localText('Site.BulkServiceAction.NothingToProcess');\n    }\n\n    protected nothingToProcess() {\n        notifyError(this.getNothingToProcessMessage());\n    }\n\n    protected getParallelRequests() {\n        return 1;\n    }\n\n    protected getBatchSize() {\n        return 1;\n    }\n\n    protected startParallelExecution() {\n        this.createProgressDialog();\n        this.successCount = 0;\n        this.errorCount = 0;\n        this.pendingRequests = 0;\n        this.completedRequests = 0;\n        this.errorCount = 0;\n        this.errorByKey = {};\n        this.queue = this.keys.slice();\n        this.queueIndex = 0;\n        var parallelRequests = this.getParallelRequests();\n        while (parallelRequests-- > 0) {\n            this.executeNextBatch();\n        }\n    }\n\n    protected serviceCallCleanup() {\n        this.pendingRequests--;\n        this.completedRequests++;\n\n        var title = localText((this.progressDialog.cancelled ?\n            'Site.BasicProgressDialog.CancelTitle' : 'Site.BasicProgressDialog.PleaseWait'));\n\n        title += ' (';\n        if (this.successCount > 0) {\n            title += format(localText('Site.BulkServiceAction.SuccessCount'), this.successCount);\n        }\n\n        if (this.errorCount > 0) {\n            if (this.successCount > 0) {\n                title += ', ';\n            }\n\n            title += format(localText('Site.BulkServiceAction.ErrorCount'), this.errorCount);\n        }\n\n        this.progressDialog.title = title + ')';\n        this.progressDialog.value = this.successCount + this.errorCount;\n        if (!this.progressDialog.cancelled && this.progressDialog.value < this.keys.length) {\n            this.executeNextBatch();\n        }\n\n        else if (this.pendingRequests === 0) {\n            this.progressDialog.dialogClose();\n            this.showResults();\n            if (this.done) {\n                this.done();\n                this.done = null;\n            }\n        }\n    }\n\n    protected executeForBatch(batch: string[]) {\n    }\n\n    protected executeNextBatch() {\n        var batchSize = this.getBatchSize();\n        var batch = [];\n        while (true) {\n            if (batch.length >= batchSize) {\n                break;\n            }\n\n            if (this.queueIndex >= this.queue.length) {\n                break;\n            }\n\n            batch.push(this.queue[this.queueIndex++]);\n        }\n\n        if (batch.length > 0) {\n            this.pendingRequests++;\n            this.executeForBatch(batch);\n        }\n    }\n\n    protected getAllHadErrorsFormat() {\n        return localText('Site.BulkServiceAction.AllHadErrorsFormat');\n    }\n\n    protected showAllHadErrors() {\n        notifyError(format(this.getAllHadErrorsFormat(), this.errorCount));\n    }\n\n    protected getSomeHadErrorsFormat() {\n        return localText('Site.BulkServiceAction.SomeHadErrorsFormat');\n    }\n\n    protected showSomeHadErrors() {\n        notifyWarning(format(this.getSomeHadErrorsFormat(), this.successCount, this.errorCount));\n    }\n\n    protected getAllSuccessFormat() {\n        return localText('Site.BulkServiceAction.AllSuccessFormat');\n    }\n\n    protected showAllSuccess() {\n        notifySuccess(format(this.getAllSuccessFormat(), this.successCount));\n    }\n\n    protected showResults() {\n        if (this.errorCount === 0 && this.successCount === 0) {\n            this.nothingToProcess();\n            return;\n        }\n\n        if (this.errorCount > 0 && this.successCount === 0) {\n            this.showAllHadErrors();\n            return;\n        }\n\n        if (this.errorCount > 0) {\n            this.showSomeHadErrors();\n            return;\n        }\n\n        this.showAllSuccess();\n    }\n\n    public execute(keys: string[]) {\n        this.keys = keys;\n        if (this.keys.length === 0) {\n            this.nothingToProcess();\n            return;\n        }\n        this.confirm(this.keys.length, () => this.startParallelExecution());\n    }\n\n    get_successCount() {\n        return this.successCount;\n    }\n\n    set_successCount(value: number) {\n        this.successCount = value;\n    }\n\n    get_errorCount() {\n        return this.errorCount;\n    }\n\n    set_errorCount(value: number) {\n        this.errorCount = value;\n    }\n}", "import { DataGrid, ToolButton } from \"@serenity-is/corelib\";\nimport { coalesce, deepClone, ListRequest, postToService } from \"@serenity-is/corelib/q\";\n\nexport interface ExcelExportOptions {\n    grid: DataGrid<any, any>;\n    service: string;\n    onViewSubmit: () => boolean;\n    editRequest?: (request: ListRequest) => ListRequest;\n    title?: string;\n    hint?: string;\n    separator?: boolean;\n}\n\nexport namespace ExcelExportHelper {\n\n    export function createToolButton(options: ExcelExportOptions): ToolButton {\n\n        return {\n            hint: coalesce(options.hint, 'Excel'),\n            title: coalesce(options.title, ''),\n            cssClass: 'export-xlsx-button',\n            icon: 'fa-file-excel-o',\n            onClick: function () {\n                if (!options.onViewSubmit()) {\n                    return;\n                }\n\n                let grid = options.grid;\n\n                var request = deepClone(grid.getView().params) as ListRequest;\n                request.Take = 0;\n                request.Skip = 0;\n                var sortBy = grid.getView().sortBy;\n                if (sortBy) {\n                    request.Sort = sortBy;\n                }\n\n                request.ExportColumns = [];\n                let columns = grid.getGrid().getColumns();\n                for (let column of columns) {\n                    request.ExportColumns.push(column.id || column.field);\n                }\n\n                if (options.editRequest)\n                    request = options.editRequest(request);\n\n                postToService({ service: options.service, request: request, target: '_blank' });\n            },\n            separator: options.separator\n        };\n    }\n}", "import { DataGrid, ToolButton } from \"@serenity-is/corelib\";\nimport { deepClone, format, formatDate, ListRequest, ListResponse, resolveUrl, serviceCall } from \"@serenity-is/corelib/q\";\nimport { Column, Grid } from \"@serenity-is/sleekgrid\";\n\nexport interface PdfExportOptions {\n    grid: DataGrid<any, any>;\n    onViewSubmit: () => boolean;\n    title?: string;\n    hint?: string;\n    separator?: boolean;\n    reportTitle?: string;\n    titleTop?: number;\n    titleFontSize?: number;\n    fileName?: string;\n    pageNumbers?: boolean;\n    columnTitles?: { [key: string]: string };\n    tableOptions?: jsPDF.AutoTableOptions;\n    output?: string;\n    autoPrint?: boolean;\n    printDateTimeHeader?: boolean;\n}\n\nexport namespace PdfExportHelper {\n\n    function toAutoTableColumns(srcColumns: Column[], columnStyles: { [dataKey: string]: jsPDF.AutoTableStyles; },\n        columnTitles: { [key: string]: string }) {\n        return srcColumns.map(src => {\n            let col: jsPDF.AutoTableColumn = {\n                dataKey: src.id || src.field,\n                title: src.name || ''\n            };\n\n            if (columnTitles && columnTitles[col.dataKey] != null)\n                col.title = columnTitles[col.dataKey];\n\n            let style: jsPDF.AutoTableStyles = {};\n            if ((src.cssClass || '').indexOf(\"align-right\") >= 0)\n                style.halign = 'right';\n            else if ((src.cssClass || '').indexOf(\"align-center\") >= 0)\n                style.halign = 'center';\n\n            columnStyles[col.dataKey] = style;\n\n            return col;\n        });\n    }\n\n    function toAutoTableData(slickGrid: Grid, entities: any[], keys: string[], srcColumns: Column[]) {\n        let el = document.createElement('span');\n        let row = 0;\n        return entities.map(item => {\n            let dst = [];\n            for (let cell = 0; cell < srcColumns.length; cell++) {\n                var col = srcColumns[cell];\n                var format = slickGrid.getFormatter(row, col);\n                var ctx = slickGrid.getFormatterContext(row, cell);\n                ctx.item = item;\n                ctx.value = item[col.field];\n                let html: string = format ? format(ctx) : '';\n                if (!html || (html.indexOf('<') < 0 && html.indexOf('&') < 0))\n                    dst.push(html);\n                else {\n                    el.innerHTML = html;\n                    if (el.children.length == 1 &&\n                        $(el.children[0]).is(\"select\")) {\n                        dst.push($(el.children[0]).children(\"[selected]\").text());\n                    }\n                    else if (el.children.length == 1 &&\n                        $(el.children[0]).is(\":input\")) {\n                        dst.push($(el.children[0]).val());\n                    }\n                    else if (el.children.length == 1 &&\n                        $(el.children).is('.check-box')) {\n                        dst.push($(el.children).hasClass(\"checked\") ? \"X\" : \"\")\n                    }\n                    else\n                        dst.push(el.textContent || '');\n                }\n            }\n            row++;\n            return dst;\n        });\n    }\n\n    export function exportToPdf(options: PdfExportOptions): void {\n\n        var g = options.grid;\n\n        if (!options.onViewSubmit())\n            return;\n\n        includeAutoTable();\n\n        var request = deepClone(g.view.params) as ListRequest;\n        request.Take = 0;\n        request.Skip = 0;\n\n        var sortBy = g.view.sortBy;\n        if (sortBy != null)\n            request.Sort = sortBy;\n\n        var gridColumns = g.slickGrid.getColumns();\n        gridColumns = gridColumns.filter(x => x.id !== \"__select__\");\n\n        request.IncludeColumns = [];\n        for (var column of gridColumns)\n            request.IncludeColumns.push(column.id || column.field);\n\n        serviceCall({\n            url: g.view.url,\n            request: request,\n            onSuccess: response => {\n                // @ts-ignore\n                let doc = new jsPDF('l', 'pt');\n                let srcColumns = gridColumns;\n                let columnStyles: { [dataKey: string]: jsPDF.AutoTableStyles; } = {};\n                let columns = toAutoTableColumns(srcColumns, columnStyles, options.columnTitles);\n                var keys = columns.map(x => x.dataKey);\n                let entities = (<ListResponse<any>>response).Entities || [];\n                let data = toAutoTableData(g.slickGrid, entities, keys, srcColumns);\n\n                doc.setFontSize(options.titleFontSize || 10);\n                doc.setFont('helvetica', 'bold');\n                let reportTitle = options.reportTitle || g.getTitle() || \"Report\";\n\n                doc.autoTableText(reportTitle, doc.internal.pageSize.width / 2,\n                    options.titleTop || 25, { halign: 'center' });\n\n                var totalPagesExp = \"{{T}}\";\n\n                let pageNumbers = options.pageNumbers == null || options.pageNumbers;\n                var autoOptions = $.extend({\n                    margin: { top: 25, left: 25, right: 25, bottom: pageNumbers ? 25 : 30 },\n                    startY: 60,\n                    styles: {\n                        fontSize: 8,\n                        overflow: 'linebreak',\n                        cellPadding: 2,\n                        valign: 'middle'\n                    },\n                    columnStyles: columnStyles\n                }, options.tableOptions);\n\n                var footer: (data: any) => void;\n                var header: (data: any) => void;\n                if (pageNumbers) {\n                    footer = function (data) {\n                        var str = data.pageCount;\n                        // Total page number plugin only available in jspdf v1.0+\n                        if (typeof doc.putTotalPages === 'function') {\n                            str = str + \" / \" + totalPagesExp;\n                        }\n                        doc.autoTableText(str, doc.internal.pageSize.width / 2,\n                            doc.internal.pageSize.height - autoOptions.margin.bottom, {\n                            halign: 'center'\n                        });\n                    };\n                }\n\n                // Print header of page\n                if (options.printDateTimeHeader == null || options.printDateTimeHeader) {\n                    header = function (data) {\n                        doc.setFont('helvetica', 'normal');\n                        doc.setFontSize(8);\n\n                        // Date and time of the report\n                        doc.autoTableText(formatDate(new Date(), \"dd-MM-yyyy HH:mm\"),\n                            doc.internal.pageSize.width - autoOptions.margin.right, 13,\n                            {\n                                halign: 'right'\n                            });\n                    };\n                }\n\n                autoOptions.didDrawPage = (data) => {\n                    if (!!header) header(data);\n                    if (!!footer) footer(data);\n                };\n\n                autoOptions.head = [columns];\n                autoOptions.body = data;\n\n                doc.autoTable(autoOptions);\n\n                if (typeof doc.putTotalPages === 'function') {\n                    doc.putTotalPages(totalPagesExp);\n                }\n\n\n                if (!options.output || options.output == \"file\") {\n                    var fileName = options.fileName || options.reportTitle || \"{0}_{1}.pdf\";\n                    fileName = format(fileName, g.getTitle() || \"report\",\n                        formatDate(new Date(), \"yyyyMMdd_HHmm\"));\n                    doc.save(fileName);\n                    return;\n                }\n\n                if (options.autoPrint)\n                    doc.autoPrint();\n\n                var output = options.output;\n                if (output == 'newwindow' || '_blank')\n                    output = 'dataurlnewwindow';\n                else if (output == 'window')\n                    output = 'datauri';\n\n                doc.output(output);\n            }\n        });\n    }\n\n    export function createToolButton(options: PdfExportOptions) {\n\n        return <ToolButton>{\n            title: options.title || '',\n            hint: options.hint || 'PDF',\n            cssClass: 'export-pdf-button',\n            onClick: () => exportToPdf(options),\n            separator: options.separator\n        };\n    }\n\n    function includeJsPDF() {\n        // @ts-ignore\n        if (typeof jsPDF !== \"undefined\")\n            return;\n\n        var script = $(\"jsPDFScript\");\n        if (script.length > 0)\n            return;\n\n        $(\"<script/>\")\n            .attr(\"type\", \"text/javascript\")\n            .attr(\"id\", \"jsPDFScript\")\n            .attr(\"src\", resolveUrl(\"~/Serenity.Assets/Scripts/jspdf.min.js\"))\n            .appendTo(document.head);\n\n        if (typeof jsPDF === \"undefined\" && typeof jspdf !== \"undefined\") {\n            window.jsPDF = jspdf.jsPDF;\n        }\n    }\n\n    function includeAutoTable() {\n        includeJsPDF();\n\n        // @ts-ignore\n        if (typeof jsPDF === \"undefined\" ||\n            typeof (jsPDF as any).API == \"undefined\" ||\n            typeof (jsPDF as any).API.autoTable !== \"undefined\")\n            return;\n\n        var script = $(\"jsPDFAutoTableScript\");\n        if (script.length > 0)\n            return;\n\n        $(\"<script/>\")\n            .attr(\"type\", \"text/javascript\")\n            .attr(\"id\", \"jsPDFAutoTableScript\")\n            .attr(\"src\", resolveUrl(\"~/Serenity.Assets/Scripts/jspdf.plugin.autotable.min.js\"))\n            .appendTo(document.head);\n    }\n}", "import { Decorators, EnumTypeRegistry, Formatter } from \"@serenity-is/corelib\";\nimport { htmlEncode, localText, tryGetText } from \"@serenity-is/corelib/q\";\nimport { FormatterContext } from \"@serenity-is/sleekgrid\";\n\n@Decorators.registerFormatter('Serenity.Extensions.EnumSelectFormatter')\nexport class EnumSelectFormatter implements Formatter {\n    constructor() {\n        this.allowClear = true;\n    }\n\n    format(ctx: FormatterContext) {\n        var enumType = EnumTypeRegistry.get(this.enumKey);\n\n        var sb = \"<select>\";\n        if (this.allowClear) {\n            sb += '<option value=\"\">';\n            sb += htmlEncode(this.emptyItemText || localText(\"Controls.SelectEditor.EmptyItemText\"));\n            sb += '</option>';\n        }\n\n        for (var x of Object.keys(enumType).filter(v => !isNaN(parseInt(v, 10)))) {\n            sb += '<option value=\"' + htmlEncode(x) + '\"';\n            if (x == ctx.value)\n                sb += \" selected\";\n            var name = enumType[x];\n            sb += \">\";\n            sb += htmlEncode(tryGetText(\"Enums.\" + this.enumKey + \".\" + name) || name);\n            sb += \"</option>\";\n        }\n\n        sb += \"</select>\";\n\n        return sb;\n    }\n\n    @Decorators.option()\n    public enumKey: string;\n\n    @Decorators.option()\n    public allowClear: boolean;\n\n    @Decorators.option()\n    public emptyItemText: string;\n}", "import { Decorators, Formatter } from \"@serenity-is/corelib\";\nimport { htmlEncode, toSingleLine } from \"@serenity-is/corelib/q\";\nimport { FormatterContext } from \"@serenity-is/sleekgrid\";\n\n@Decorators.registerFormatter('Serenity.Extensions.SingleLineTextFormatter')\nexport class SingleLineTextFormatter implements Formatter {\n    format(ctx: FormatterContext) {\n        return SingleLineTextFormatter.formatValue(ctx.value);\n    }\n\n    public static formatValue(value: string) {\n        var text = $('<div/>').html(value || '').text();\n        return htmlEncode(toSingleLine(text));\n    }\n}", "import { Decorators, EntityGrid, IGetEditValue, ISetEditValue, ToolButton } from \"@serenity-is/corelib\";\nimport { deepClone, indexOf, SaveRequest, ServiceOptions, ServiceResponse, tryFirst } from \"@serenity-is/corelib/q\";\nimport { GridEditorDialog } from \"./GridEditorDialog\";\n\n@Decorators.registerClass(\"Serenity.Extensions.GridEditorBase\", [IGetEditValue, ISetEditValue])\n@Decorators.editor()\n@Decorators.element(\"<div/>\")\nexport abstract class GridEditorBase<TEntity, TOptions = any> extends EntityGrid<TEntity, TOptions>\n    implements IGetEditValue, ISetEditValue {\n\n    protected getIdProperty() { return \"__id\"; }\n\n    protected nextId = 1;\n\n    constructor(container: JQuery, opt?: TOptions) {\n        super(container, opt);\n    }\n\n    protected id(entity: TEntity) {\n        return (entity as any)[this.getIdProperty()];\n    }\n\n    protected getNextId() {\n        return \"`\" + this.nextId++;\n    }\n\n    protected setNewId(entity: TEntity) {\n        entity[this.getIdProperty()] = this.getNextId();\n    }\n\n    protected save(opt: ServiceOptions<any>, callback: (r: ServiceResponse) => void) {\n        var request = opt.request as SaveRequest<TEntity>;\n        var row = deepClone(request.Entity);\n\n        var id = this.id(row);\n        if (id == null) {\n            (row as any)[this.getIdProperty()] = this.getNextId();\n        }\n\n        if (!this.validateEntity(row, id)) {\n            return;\n        }\n\n        var items = this.view.getItems().slice();\n        if (id == null) {\n            items.push(row);\n        }\n        else {\n            var index = indexOf(items, x => this.id(x) === id);\n            items[index] = deepClone({} as TEntity, items[index], row);\n        }\n\n        this.setEntities(items);\n        callback({});\n    }\n\n    protected deleteEntity(id: number) {\n        this.view.deleteItem(id);\n        return true;\n    }\n\n    protected validateEntity(row: TEntity, id: number) {\n        return true;\n    }\n\n    protected setEntities(items: TEntity[]) {\n        this.view.setItems(items, true);\n    }\n\n    protected getNewEntity(): TEntity {\n        return {} as TEntity;\n    }\n\n    protected getButtons(): ToolButton[] {\n        var buttons = super.getButtons();\n        var addButton = tryFirst(buttons, x => x.action === 'add');\n        if (addButton != null) {\n            addButton.onClick = () => {\n                this.createEntityDialog(this.getItemType(), dlg => {\n                    var dialog = dlg as GridEditorDialog<TEntity>;\n                    dialog.onSave = (opt, callback) => this.save(opt, callback);\n                    this.transferDialogReadOnly(dialog);\n                    dialog.loadEntityAndOpenDialog(this.getNewEntity());\n                });\n            }\n        }\n\n        return buttons.filter(x => x.action !== \"refresh\");\n    }\n\n    protected editItem(entityOrId: any): void {\n\n        var id = entityOrId;\n        var item = this.view.getItemById(id);\n        this.createEntityDialog(this.getItemType(), dlg => {\n            var dialog = dlg as GridEditorDialog<TEntity>;\n            dialog.onDelete = (opt, callback) => {\n                if (!this.deleteEntity(id)) {\n                    return;\n                }\n                callback({});\n            };\n            this.transferDialogReadOnly(dialog);\n            dialog.onSave = (opt, callback) => this.save(opt, callback);\n            dialog.loadEntityAndOpenDialog(item);\n        });;\n    }\n\n    public getEditValue(property, target) {\n        target[property.name] = this.value;\n    }\n\n    public setEditValue(source, property) {\n        this.value = source[property.name];\n    }\n\n    public get value(): TEntity[] {\n        var p = this.getIdProperty();\n        return this.view.getItems().map(x => {\n            var y = deepClone(x);\n            var id = y[p];\n            if (id && id.toString().charAt(0) == '`')\n                delete y[p];\n            return y;\n        });\n    }\n\n    public set value(value: TEntity[]) {\n        var p = this.getIdProperty();\n        this.view.setItems((value || []).map(x => {\n            var y = deepClone(x);\n            if ((y as any)[p] == null)\n                (y as any)[p] = this.getNextId();\n            return y;\n        }), true);\n    }\n\n    protected getGridCanLoad() {\n        return false;\n    }\n\n    protected usePager() {\n        return false;\n    }\n\n    protected getInitialTitle() {\n        return null;\n    }\n\n    protected createQuickSearchInput() {\n    }\n}", "import { Decorators, EntityDialog } from \"@serenity-is/corelib\";\nimport { ServiceOptions, SaveResponse, DeleteResponse } from \"@serenity-is/corelib/q\";\n\n@Decorators.registerClass(\"Serenity.Extensions.GridEditorDialog\")\nexport abstract class GridEditorDialog<TEntity> extends EntityDialog<TEntity, any> {\n    protected getIdProperty() { return \"__id\"; }\n\n    public onSave: (options: ServiceOptions<SaveResponse>,\n        callback: (response: SaveResponse) => void) => void;\n\n    public onDelete: (options: ServiceOptions<DeleteResponse>,\n        callback: (response: DeleteResponse) => void) => void;\n\n    public destroy() {\n        this.onSave = null;\n        this.onDelete = null;\n        super.destroy();\n    }\n\n    protected updateInterface() {\n        super.updateInterface();\n\n        // apply changes button doesn't work properly with in-memory grids yet\n        if (this.applyChangesButton) {\n            this.applyChangesButton.hide();\n        }\n    }\n\n    protected saveHandler(options: ServiceOptions<SaveResponse>,\n        callback: (response: SaveResponse) => void): void {\n        this.onSave && this.onSave(options, callback);\n    }\n\n    protected deleteHandler(options: ServiceOptions<DeleteResponse>,\n        callback: (response: DeleteResponse) => void): void {\n        this.onDelete && this.onDelete(options, callback);\n    }\n}", "import { Decorators, PropertyGrid, TemplatedDialog } from \"@serenity-is/corelib\";\nimport { resolveUrl, serviceCall } from \"@serenity-is/corelib/q\";\nimport { ReportRetrieveResult } from \"../ServerTypes/Reporting\";\nimport { ReportHelper } from \"./ReportHelper\";\n\n@Decorators.registerClass(\"Serenity.Extensions.ReportDialog\")\nexport class ReportDialog extends TemplatedDialog<ReportDialogOptions> {\n\n    private report: ReportRetrieveResult;\n    private propertyGrid: PropertyGrid;\n\n    constructor(options: ReportDialogOptions) {\n        super(options);\n\n        this.updateInterface();\n        this.loadReport(this.options.reportKey);\n    }\n\n    protected getDialogButtons() {\n        return null;\n    }\n\n    protected createPropertyGrid() {\n        this.propertyGrid && this.byId('PropertyGrid').html('').attr('class', '');\n        this.propertyGrid = new PropertyGrid(this.byId('PropertyGrid'), {\n            idPrefix: this.idPrefix,\n            useCategories: true,\n            items: this.report.Properties\n        }).init(null);\n    }\n\n    protected loadReport(reportKey: string) {\n        serviceCall({\n            url: resolveUrl('~/Serenity.Extensions/Report/Retrieve'),\n            request: {\n                ReportKey: reportKey\n            },\n            onSuccess: response => {\n                this.report = response as ReportRetrieveResult;\n                this.dialogTitle = this.report.Title;\n                this.createPropertyGrid();\n                this.propertyGrid.load(this.report.InitialSettings || {});\n                this.updateInterface();\n                this.dialogOpen();\n            }\n        });\n    }\n\n    protected updateInterface() {\n        this.toolbar.findButton('print-preview-button')\n            .toggle(this.report && !this.report.IsDataOnlyReport && !this.report.IsExternalReport);\n\n        this.toolbar.findButton('run-button')\n            .toggle(this.report && this.report.IsExternalReport);\n\n        this.toolbar.findButton('export-pdf-button')\n            .toggle(this.report && !this.report.IsDataOnlyReport && !this.report.IsExternalReport);\n\n        this.toolbar.findButton('export-xlsx-button')\n            .toggle(this.report && this.report.IsDataOnlyReport && !this.report.IsExternalReport);\n    }\n\n    executeReport(target: string, ext: string, download: boolean) {\n        if (!this.validateForm()) {\n            return;\n        }\n\n        var opt = {};\n        this.propertyGrid.save(opt);\n        ReportHelper.execute({\n            download: download,\n            reportKey: this.report.ReportKey,\n            extension: ext as any,\n            target: target,\n            params: opt\n        });\n    }\n\n    getToolbarButtons() {\n        return [\n            {\n                title: 'Preview',\n                cssClass: 'print-preview-button',\n                onClick: () => this.executeReport('_blank', null, false)\n            },\n            {\n                title: 'Run',\n                cssClass: 'run-button',\n                icon: 'fa-print text-blue',\n                onClick: () => this.executeReport('_blank', null, false)\n            },\n            {\n                title: 'PDF',\n                cssClass: 'export-pdf-button',\n                onClick: () => this.executeReport('_blank', 'pdf', true)\n            },\n            {\n                title: 'Excel',\n                cssClass: 'export-xlsx-button',\n                onClick: () => this.executeReport('_blank', 'xlsx', true)\n            }\n        ];\n    }\n\n    getTemplate() {\n        return `<div class=\"s-DialogContent\">\n<div id=\"~_Toolbar\" class=\"s-DialogToolbar\">\n</div>\n<div class=\"s-Form\">\n    <form id=\"~_Form\" action=\"\">\n        <div class=\"fieldset ui-widget ui-widget-content ui-corner-all\">\n            <div id=\"~_PropertyGrid\"></div>\n            <div class=\"clear\"></div>\n        </div>\n    </form>\n</div>\n</div>`;\n\n    }\n}\n\nexport interface ReportDialogOptions {\n    reportKey: string;\n}", "import { ToolButton } from \"@serenity-is/corelib\";\nimport { coalesce, postToUrl } from \"@serenity-is/corelib/q\";\n\nexport interface ReportExecuteOptions {\n    reportKey: string;\n    download?: boolean;\n    extension?: 'pdf' | 'htm' | 'html' | 'xlsx' | 'docx';\n    getParams?: () => any;\n    params?: { [key: string]: any }\n    target?: string;\n}\n\nexport interface ReportButtonOptions extends ReportExecuteOptions {\n    title?: string;\n    cssClass?: string;\n    icon?: string;\n}\n\nexport namespace ReportHelper {\n\n    export function createToolButton(options: ReportButtonOptions): ToolButton {\n        return {\n            title: coalesce(options.title, 'Report'),\n            cssClass: coalesce(options.cssClass, 'print-button'),\n            icon: options.icon,\n            onClick: () => {\n                ReportHelper.execute(options);\n            }\n        };\n    }\n\n    export function execute(options: ReportExecuteOptions) {\n        var opt = options.getParams ? options.getParams() : options.params;\n\n        postToUrl({\n            url: '~/Serenity.Extensions/Report/' + (options.download ? 'Download' : 'Render'),\n            params: {\n                key: options.reportKey,\n                ext: coalesce(options.extension, 'pdf'),\n                opt: opt ? $.toJSON(opt) : ''\n            },\n            target: coalesce(options.target, '_blank')\n        });\n    }\n}", "import { Decorators, QuickSearchInput, Widget } from \"@serenity-is/corelib\";\nimport { coalesce, trimToNull } from \"@serenity-is/corelib/q\";\nimport { ReportDialog } from \"./ReportDialog\";\n\n@Decorators.registerClass(\"Serenity.Extensions.ReportPage\")\nexport class ReportPage extends Widget<any> {\n\n    constructor(element: JQuery) {\n        super(element);\n\n        $('.report-link', element).click(e => this.reportLinkClick(e));\n\n        new QuickSearchInput($('.s-QuickSearchBar input', element), {\n            onSearch: (field, text, done) => {\n                this.updateMatchFlags(text);\n                done(true);\n            }\n        });\n    }\n\n    protected updateMatchFlags(text: string) {\n        var liList = $('.report-list', this.element).find('li').removeClass('non-match');\n        text = trimToNull(text);\n\n        if (!text)\n            return;\n\n        text = Select2.util.stripDiacritics(text).toUpperCase();\n\n        var reportItems = liList.filter('.report-item');\n        reportItems.each(function (ix, e) {\n            var x = $(e);\n            var title = Select2.util.stripDiacritics(coalesce(x.text(), '').toUpperCase());\n            if (title.indexOf(text) < 0) {\n                x.addClass('non-match');\n            }\n        });\n\n        var matchingItems = reportItems.not('.non-match');\n        var visibles = matchingItems.parents('li').add(matchingItems);\n        visibles.children('[data-bs-toggle]:not([aria-expanded=true])')\n            .attr('aria-expanded', 'true')\n            .removeClass('collapsed');\n        visibles\n            .parent('.collapse:not(.show)')\n            .addClass('show');\n\n        var nonVisibles = liList.not(visibles);\n        nonVisibles.addClass('non-match');\n    }\n\n    protected reportLinkClick(e) {\n        e.preventDefault();\n        new ReportDialog({\n            reportKey: $(e.target).data('key')\n        }).dialogOpen();\n    }\n}\n", "import { SettingStorage } from \"@serenity-is/corelib\";\nimport { UserPreferenceService } from \"../ServerTypes/Extensions/UserPreferenceService\";\n\nexport class UserPreferenceStorage implements SettingStorage {\n    getItem(key: string): string {\n        let value: string;\n\n        UserPreferenceService.Retrieve({\n            PreferenceType: \"UserPreferenceStorage\",\n            Name: key\n        },\n        response => value = response.Value,\n        {\n            async: false\n        });\n\n        return value;\n    }\n\n    setItem(key: string, data: string): void {\n        UserPreferenceService.Update({\n            PreferenceType: \"UserPreferenceStorage\",\n            Name: key,\n            Value: data\n        });\n    }\n}", "import { TemplatedDialog, WX } from \"@serenity-is/corelib\";\nimport { confirmDialog, localText } from \"@serenity-is/corelib/q\";\n\nexport namespace DialogUtils {\n    export function pendingChangesConfirmation(element: JQuery, hasPendingChanges: () => boolean) {\n        element.on('dialogbeforeclose panelbeforeclose', function (e) {\n            if (!WX.hasOriginalEvent(e) || !hasPendingChanges()) {\n                return;\n            }\n\n            e.preventDefault();\n            confirmDialog(localText('Site.Dialogs.PendingChangesConfirmation'),\n                () => element.find('div.save-and-close-button').click(),\n                {\n                    onNo: function () {\n                        if (element.hasClass('ui-dialog-content'))\n                            element.dialog('close');\n                        else if (element.hasClass('s-Panel'))\n                            TemplatedDialog.closePanel(element);\n                    }\n                });\n        });\n    }\n}\n", "import { Decorators, PropertyDialog } from \"@serenity-is/corelib\";\nimport { coalesce, isEmptyOrNull, localText } from \"@serenity-is/corelib/q\";\n\nexport interface PromptDialogOptions {\n    cssClass?: string;\n    editorType?: string;\n    editorOptions?: any;\n    title?: string;\n    message?: string;\n    isHtml?: boolean;\n    value?: any;\n    required?: boolean;\n    validateValue: (v: any) => boolean;\n}\n\n@Decorators.registerClass(\"Serenity.Extensions.PromptDialog\")\nexport class PromptDialog extends PropertyDialog<any, PromptDialogOptions> {\n\n    constructor(opt: PromptDialogOptions) {\n        super(opt);\n\n        if (!isEmptyOrNull(this.options.cssClass))\n            this.element.addClass(this.options.cssClass);\n\n        if (!isEmptyOrNull(this.options.message)) {\n            var msg = $(\"<div/>\").addClass(\"message\")\n                .insertBefore(this.byId(\"PropertyGrid\"));\n            this.options.isHtml ? msg.html(this.options.message) : msg.text(this.options.message);\n        }\n\n        this.dialogTitle = this.options.title || \"Prompt\";\n\n    }\n\n    protected getDialogButtons() {\n        return [\n            {\n                text: localText(\"Dialogs.OkButton\"),\n                click: () => {\n                    if (!this.validateForm())\n                        return;\n\n                    if (this.options.validateValue == null || this.options.validateValue(this.value))\n                        this.dialogClose();\n                },\n            },\n            {\n                text: localText(\"Dialogs.CancelButton\"),\n                click: () => this.dialogClose()\n            }\n        ];\n    }\n\n    protected loadInitialEntity() {\n        this.value = this.options.value;\n    }\n\n    protected getPropertyItems() {\n        return [\n            {\n                name: \"Value\",\n                editorType: this.options.editorType || \"String\",\n                required: coalesce(this.options.required, true),\n                editorParams: this.options.editorOptions\n            }\n        ]\n    }\n\n    public get value() {\n        return (this.getSaveEntity() as any).Value;\n    }\n\n    public set value(v: any) {\n        this.propertyGrid.load(\n            {\n                Value: v\n            });\n    }\n\n    public static prompt(title: string, message: string, value: string, validateValue: (string) => boolean) {\n        new PromptDialog({\n            title: title,\n            message: message,\n            value: value,\n            validateValue: v => validateValue(v)\n        }).dialogOpen();\n    }\n}", "import { Decorators, EntityGrid } from \"@serenity-is/corelib\";\nimport { Grid, GridOptions } from \"@serenity-is/sleekgrid\";\n\n@Decorators.registerClass(\"Serenity.Extensions.SelectableEntityGrid\")\nexport class SelectableEntityGrid<TItem, TOptions> extends EntityGrid<TItem, TOptions> {\n\n    protected getSlickOptions(): GridOptions {\n        var opt = super.getSlickOptions();\n        opt.enableTextSelectionOnCells = true;\n        opt.selectedCellCssClass = \"slick-row-selected\";\n        opt.enableCellNavigation = true;\n        return opt;\n    }\n\n    protected createSlickGrid(): Grid {\n        var grid = super.createSlickGrid();\n        grid.setSelectionModel(new Slick.RowSelectionModel());\n        return grid;\n    }\n}\n", "import { CascadedWidgetLink, Decorators, EditorUtils, Select2AjaxEditor, Widget } from \"@serenity-is/corelib\";\nimport { ColumnSelection, isEmptyOrNull, ListRequest, ListResponse, RetrieveColumnSelection, RetrieveRequest, RetrieveResponse, serviceCall, ServiceOptions } from \"@serenity-is/corelib/q\";\n\nexport interface ServiceEditorOptions {\n    cascadeFrom?: string;\n    cascadeField?: string;\n    cascadeValue?: any;\n}\n\n@Decorators.registerClass(\"Serenity.Extensions.ServiceEditorBase\")\nexport abstract class ServiceEditorBase<TOptions extends ServiceEditorOptions, TRow>\n    extends Select2AjaxEditor<TOptions, TRow> {\n    private cascadeLink: CascadedWidgetLink<Widget<any>>;\n\n    constructor(hidden: JQuery, options: TOptions) {\n        super(hidden, options);\n\n        this.setCascadeFrom(this.options.cascadeFrom);\n    }\n\n    private setCascadeFrom(value: string): void {\n        if (isEmptyOrNull(value)) {\n            if (this.cascadeLink) {\n                this.cascadeLink.set_parentID(null);\n                this.cascadeLink = null;\n            }\n\n            this.options.cascadeFrom = null;\n            return;\n        }\n\n        this.cascadeLink = new CascadedWidgetLink(Widget, this,\n            p => this.cascadeValue = this.getCascadeFromValue(p));\n\n        this.cascadeLink.set_parentID(value);\n        this.options.cascadeFrom = value;\n    }\n\n    public get cascadeValue(): any {\n        return this.options.cascadeValue;\n    }\n\n    public set cascadeValue(value: any) {\n        if (value !== this.options.cascadeValue) {\n            this.options.cascadeValue = value;\n            this.value = null;\n        }\n    }\n\n    public get cascadeField(): any {\n        return this.options.cascadeField || this.options.cascadeFrom;\n    }\n\n    public set cascadeField(value: any) {\n        this.options.cascadeField = value;\n    }\n\n    public get cascadeFrom(): any {\n        return this.options.cascadeFrom;\n    }\n\n    public set cascadeFrom(value: any) {\n        if (value !== this.options.cascadeFrom) {\n            this.setCascadeFrom(value);\n        }\n    }\n\n    private getCascadeFromValue(parent: Widget<any>) {\n        return EditorUtils.getValue(parent);\n    }\n\n    protected getIncludeColumns(): string[] {\n        return [];\n    }\n\n    protected getSort(): string[] {\n        return [];\n    }\n\n    public getTypeDelay(): number {\n        return 200;\n    }\n\n    private lastRequest: JQueryXHR;\n\n    public executeQueryByKey(options: ServiceOptions<RetrieveResponse<TRow>>): void {\n        var request = <RetrieveRequest>options.request;\n        request.ColumnSelection = RetrieveColumnSelection.keyOnly;\n        request.IncludeColumns = this.getIncludeColumns();\n        super.executeQueryByKey(options);\n    }\n\n    public executeQuery(options: ServiceOptions<ListResponse<TRow>>): void {\n\n        var request = <ListRequest>options.request;\n\n        request.ColumnSelection = ColumnSelection.KeyOnly;\n        request.IncludeColumns = this.getIncludeColumns();\n        request.Sort = this.getSort();\n        request.ExcludeTotalCount = true;\n\n        if (this.cascadeField) {\n            request.EqualityFilter = request.EqualityFilter || {};\n            request.EqualityFilter[this.cascadeField] = this.cascadeValue;\n        }\n\n        options.blockUI = false;\n        options.error = () => { };\n\n        if (this.lastRequest != null && this.lastRequest.readyState != XMLHttpRequest.DONE)\n            this.lastRequest.abort();\n\n        this.lastRequest = serviceCall(options);\n        this.lastRequest.then(() => this.lastRequest = null, () => this.lastRequest = null);\n    }\n}", "import { Decorators, ISetEditValue, Widget } from \"@serenity-is/corelib\";\nimport { coalesce, localText, PropertyItem } from \"@serenity-is/corelib/q\";\n\n/**\n    * This is an editor widget but it only displays a text, not edits it.\n    *  \n    */\n@Decorators.element(\"<div/>\")\n@Decorators.registerEditor('Serenity.Extensions.StaticTextBlock', [ISetEditValue])\nexport class StaticTextBlock extends Widget<StaticTextBlockOptions>\n    implements ISetEditValue {\n\n    private value: string;\n\n    constructor(container: JQuery, options: StaticTextBlockOptions) {\n        super(container, options);\n\n        // hide the caption label for this editor if in a form. ugly hack\n        if (this.options.hideLabel)\n            this.element.closest('.field').find('.caption').hide();\n\n        this.updateElementContent();\n    }\n\n    private updateElementContent() {\n        var txt = coalesce(this.options.text, this.value);\n\n        // if isLocalText is set, text is actually a local text key\n        if (this.options.isLocalText)\n            txt = localText(txt);\n\n        // don't html encode if isHtml option is true\n        if (this.options.isHtml)\n            this.element.html(txt);\n        else\n            this.element.text(txt);\n    }\n\n    /**\n        * By implementing ISetEditValue interface, we allow this editor to display its field value.\n        * But only do this when our text content is not explicitly set in options\n        */\n    public setEditValue(source: any, property: PropertyItem) {\n        if (this.options.text == null) {\n            this.value = coalesce(this.options.text, source[property.name]);\n            this.updateElementContent();\n        }\n    }\n}\n\nexport interface StaticTextBlockOptions {\n    text: string;\n    isHtml: boolean;\n    isLocalText: boolean;\n    hideLabel: boolean;\n}\n"],
  "mappings": "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",
  "names": ["require_q", "__commonJSMin", "exports", "module", "require_corelib", "__commonJSMin", "exports", "module", "Modules_exports", "__export", "BasicProgressDialog", "BulkServiceAction", "DialogUtils", "EnumSelectFormatter", "ExcelExportHelper", "GridEditorBase", "GridEditorDialog", "PdfExportHelper", "PromptDialog", "ReportDialog", "ReportHelper", "ReportPage", "SelectableEntityGrid", "ServiceEditorBase", "SingleLineTextFormatter", "StaticTextBlock", "UserPreferenceRow", "UserPreferenceService", "UserPreferenceStorage", "import_q", "UserPreferenceRow", "__name", "import_q", "UserPreferenceService", "x", "r", "s", "o", "import_corelib", "import_q", "BasicProgressDialog", "value", "opt", "__name", "__decorateClass", "import_q", "BulkServiceAction", "BasicProgressDialog", "targetCount", "action", "parallelRequests", "title", "batch", "batchSize", "keys", "value", "__name", "import_q", "ExcelExportHelper", "createToolButton", "options", "grid", "request", "sortBy", "columns", "column", "__name", "import_q", "PdfExportHelper", "toAutoTableColumns", "srcColumns", "columnStyles", "columnTitles", "src", "col", "style", "__name", "toAutoTableData", "slickGrid", "entities", "keys", "el", "row", "item", "dst", "cell", "format", "ctx", "html", "exportToPdf", "options", "g", "includeAutoTable", "request", "sortBy", "gridColumns", "x", "column", "response", "doc", "columns", "data", "reportTitle", "totalPagesExp", "pageNumbers", "autoOptions", "footer", "header", "str", "fileName", "output", "createToolButton", "includeJsPDF", "script", "import_corelib", "import_q", "EnumSelectFormatter", "ctx", "enumType", "sb", "x", "v", "name", "__name", "__decorateClass", "import_corelib", "import_q", "SingleLineTextFormatter", "ctx", "value", "text", "__name", "__decorateClass", "import_corelib", "import_q", "GridEditorBase", "container", "opt", "entity", "callback", "request", "row", "id", "items", "index", "x", "buttons", "addButton", "dlg", "dialog", "entityOrId", "item", "property", "target", "source", "p", "y", "value", "__name", "__decorateClass", "import_corelib", "GridEditorDialog", "options", "callback", "__name", "__decorateClass", "import_corelib", "import_q", "import_q", "ReportHelper", "createToolButton", "options", "__name", "execute", "opt", "ReportDialog", "options", "reportKey", "response", "target", "ext", "download", "opt", "ReportHelper", "__name", "__decorateClass", "import_corelib", "import_q", "ReportPage", "element", "field", "text", "done", "liList", "reportItems", "ix", "e", "x", "title", "matchingItems", "visibles", "nonVisibles", "ReportDialog", "__name", "__decorateClass", "UserPreferenceStorage", "key", "value", "UserPreferenceService", "response", "data", "__name", "import_corelib", "import_q", "DialogUtils", "pendingChangesConfirmation", "element", "hasPendingChanges", "e", "__name", "import_corelib", "import_q", "PromptDialog", "opt", "msg", "v", "title", "message", "value", "validateValue", "__name", "__decorateClass", "import_corelib", "SelectableEntityGrid", "opt", "grid", "__name", "__decorateClass", "import_corelib", "import_q", "ServiceEditorBase", "hidden", "options", "value", "p", "parent", "request", "__name", "__decorateClass", "import_corelib", "import_q", "StaticTextBlock", "container", "options", "txt", "source", "property", "__name", "__decorateClass"]
}