{ "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"] }