{"version":3,"file":"Serenity.Pro.App.js","sourceRoot":"","sources":["../App/Formatters/SingleLineTextFormatter.ts","../App/Tools/IdleTimeout.ts","../App/Tools/UIOverrides.ts","../App/Wizards/WizardDialog.ts","../App/GridMixins/AutoColumnWidthMixin.ts","../App/GridMixins/CardViewItems.tsx","../App/GridMixins/CardViewMixin.ts","../App/GridMixins/FavoriteViewsMixin.ts","../App/GridMixins/CustomSummaryMixin.ts","../App/GridMixins/DraggableGroupingPlugin.ts","../App/GridMixins/DraggableGroupingMixin.ts","../App/GridMixins/HeaderFiltersPlugin.ts","../App/GridMixins/HeaderFiltersMixin.ts","../App/GridMixins/EntityGridDialog.ts"],"names":[],"mappings":"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","sourcesContent":["\r\nnamespace Serenity {\r\n \r\n @Decorators.registerFormatter('Serenity.SingleLineTextFormatter')\r\n export class SingleLineTextFormatter implements Slick.Formatter {\r\n format(ctx: Slick.FormatterContext) {\r\n return SingleLineTextFormatter.formatValue(ctx.value);\r\n }\r\n\r\n public static formatValue(value: string) {\r\n var text = $('
').html(value || '').text();\r\n return Q.toSingleLine(text);\r\n }\r\n }\r\n}","\r\nnamespace Serenity {\r\n\r\n export interface IdleTimeoutOptions {\r\n /** which events to consider as an activity. */\r\n activityEvents?: string;\r\n /** signout user if no activity within this duration (seconds). default is 900 (15 mins). */\r\n activityTimeout?: number;\r\n /** optional callback that is called just before signing out */\r\n beforeSignout?: () => void;\r\n /** interval for checking timer, default is 5 seconds */\r\n checkInterval?: number;\r\n /** interval for calling keep alive url in seconds, default is 300 (5 mins) */\r\n keepAliveTimer?: number;\r\n /** keep alive url */\r\n keepAliveUrl?: string;\r\n /** url used to signout user */\r\n signoutUrl?: string;\r\n /** show warning for this number of seconds */\r\n warningDuration?: number;\r\n }\r\n\r\n export class IdleTimeout {\r\n\r\n private options: IdleTimeoutOptions;\r\n private idleTimer: number;\r\n private keepAliveTimer: number;\r\n private warningTimer: number;\r\n private remainingTimer: number;\r\n\r\n constructor(options: IdleTimeoutOptions) {\r\n this.options = $.extend({}, IdleTimeout.defaults, options);\r\n\r\n localStorage.setItem('IdleTimeout:LastActivity', $.now().toString());\r\n localStorage.removeItem('IdleTimeout:Signout');\r\n\r\n var mouseX: number, mouseY: number;\r\n $('body').on(this.options.activityEvents, e => {\r\n\r\n if (e.type == 'mousemove') {\r\n\r\n if (e.clientX == mouseX && e.clientY == mouseY)\r\n return;\r\n\r\n mouseX = e.clientX;\r\n mouseY = e.clientY;\r\n }\r\n\r\n if (!this.isWarningActive()) {\r\n this.resetIdleTimer();\r\n }\r\n });\r\n\r\n if (this.options.keepAliveTimer)\r\n this.startKeepAliveTimer();\r\n\r\n this.resetIdleTimer();\r\n }\r\n\r\n protected startKeepAliveTimer() {\r\n\r\n clearTimeout(this.keepAliveTimer);\r\n\r\n var keepSessionAlive = () => {\r\n $.get(Q.resolveUrl(this.options.keepAliveUrl) + '?' + new Date().getTime());\r\n this.startKeepAliveTimer();\r\n };\r\n\r\n this.keepAliveTimer = setTimeout(keepSessionAlive, this.options.keepAliveTimer * 1000);\r\n }\r\n\r\n protected isWarningActive() {\r\n return $('#idle-timeout-warning').is(':visible');\r\n }\r\n\r\n protected startWarningTimer() {\r\n this.warningTimer = setInterval(() => this.warningTimeout(), this.options.checkInterval * 1000);\r\n }\r\n\r\n protected stopWarningTimer() {\r\n clearInterval(this.warningTimer);\r\n clearInterval(this.remainingTimer);\r\n };\r\n\r\n protected warningTimeout() {\r\n if (this.getRemainingSeconds() < 0)\r\n this.signout();\r\n }\r\n\r\n protected resetIdleTimer() {\r\n clearTimeout(this.idleTimer);\r\n localStorage.setItem('IdleTimeout:LastActivity', $.now().toString());\r\n this.idleTimeout();\r\n };\r\n\r\n protected idleTimeout() {\r\n this.checkActivityTimeout();\r\n this.idleTimer = setTimeout(() => this.idleTimeout(), this.options.checkInterval * 1000);\r\n };\r\n\r\n protected checkActivityTimeout() {\r\n\r\n var timeLimit = parseInt(localStorage.getItem('IdleTimeout:LastActivity') || $.now().toString()) +\r\n (this.options.activityTimeout - (this.options.warningDuration || 0)) * 1000;\r\n\r\n if ($.now() > timeLimit) {\r\n if (!this.options.warningDuration) {\r\n this.signout();\r\n } else {\r\n this.showWarning();\r\n this.startWarningTimer();\r\n }\r\n } else if (localStorage.getItem('IdleTimeout:Signout')) {\r\n this.signout();\r\n } else if (this.isWarningActive()) {\r\n this.closeWarning();\r\n this.stopWarningTimer();\r\n }\r\n }\r\n\r\n protected signout() {\r\n localStorage.setItem('IdleTimeout:Signout', \"1\");\r\n clearTimeout(this.keepAliveTimer);\r\n this.stopWarningTimer();\r\n this.closeWarning();\r\n this.options.beforeSignout && this.options.beforeSignout();\r\n if (this.options.signoutUrl)\r\n window.location.href = Q.resolveUrl(this.options.signoutUrl);\r\n }\r\n\r\n protected showWarning() {\r\n var warningDialog = $('#idle-timeout-warning');\r\n if (!warningDialog.length) {\r\n warningDialog = $(`
\r\n
\r\n
\r\n
\r\n \r\n

${Q.text(\"Controls.IdleTimeout.WarningTitle\")}

\r\n
\r\n
\r\n

${Q.text(\"Controls.IdleTimeout.WarningMessage\")}

\r\n

${Q.text(\"Controls.IdleTimeout.CountdownMessage\")}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
`).appendTo(document.body);\r\n\r\n $('#idle-timeout-warning-signout').on('click', () => this.signout());\r\n warningDialog.on('hide.bs.modal', () => {\r\n clearTimeout(this.warningTimer);\r\n clearTimeout(this.remainingTimer);\r\n this.resetIdleTimer();\r\n });\r\n }\r\n\r\n warningDialog['modal']('show');\r\n this.countdownDisplay();\r\n }\r\n\r\n protected closeWarning() {\r\n var warning = $('#idle-timeout-warning').off('hide.bs.modal');\r\n if (warning.length && warning.data() && warning.data()['bs.modal'] && warning.data()['bs.modal'].isShown) {\r\n warning.removeClass('fade');\r\n warning['modal']('hide');\r\n warning.remove();\r\n }\r\n }\r\n\r\n protected getRemainingSeconds() {\r\n var timeLimit = parseInt(localStorage.getItem('IdleTimeout:LastActivity') || $.now().toString()) +\r\n (this.options.activityTimeout * 1000);\r\n return Math.ceil(((timeLimit - $.now()) / 1000));\r\n }\r\n\r\n protected countdownDisplay() {\r\n clearTimeout(this.remainingTimer);\r\n var update = () => {\r\n var remainingSeconds = Math.max(this.getRemainingSeconds(), 1);\r\n var percentLeft = 100 * Math.max(1, remainingSeconds) / (this.options.warningDuration || 1);\r\n $('#idle-timeout-progress').css('width', percentLeft + '%');\r\n $('#idle-timeout-seconds').text(remainingSeconds);\r\n };\r\n this.remainingTimer = setInterval(update, 500);\r\n update();\r\n };\r\n\r\n static defaults: IdleTimeoutOptions = {\r\n activityEvents: 'click keyup mouseup mousemove scroll touchend touchmove wheel mousewheel',\r\n activityTimeout: 900,\r\n checkInterval: 5,\r\n keepAliveTimer: 300,\r\n keepAliveUrl: '~/Account/KeepAlive',\r\n signoutUrl: '~/Account/Signout',\r\n warningDuration: 60,\r\n }\r\n }\r\n}\r\n","namespace Serenity {\r\n\r\n export function setupUIOverrides() {\r\n\r\n Serenity.EntityGrid.prototype['getButtons'] = (function (old) {\r\n return function () {\r\n\r\n var buttons = old.call(this) as Serenity.ToolButton[];\r\n\r\n var addButton = Q.tryFirst(buttons, x => x.cssClass === \"add-button\");\r\n if (addButton)\r\n addButton.icon = \"fa-plus-circle text-green\";\r\n\r\n var refreshButton = Q.tryFirst(buttons, x => x.cssClass === \"refresh-button\");\r\n if (refreshButton)\r\n refreshButton.icon = \"fa-refresh text-blue\";\r\n\r\n var pickerButton = Q.tryFirst(buttons, x => x.cssClass === \"column-picker-button\");\r\n if (pickerButton)\r\n pickerButton.icon = \"fa-th-list text-blue\";\r\n\r\n var excelButton = Q.tryFirst(buttons, x => x.cssClass === \"export-xlsx-button\");\r\n if (excelButton)\r\n excelButton.icon = \"fa-file-excel-o\";\r\n\r\n return buttons;\r\n };\r\n })(Serenity.EntityGrid.prototype['getButtons']);\r\n\r\n Serenity.EntityDialog.prototype['getToolbarButtons'] = (function (old) {\r\n return function () {\r\n\r\n var buttons = old.call(this) as Serenity.ToolButton[];\r\n\r\n var saveButton = Q.tryFirst(buttons, x => x.cssClass === \"save-and-close-button\");\r\n if (saveButton)\r\n saveButton.icon = \"fa-floppy-o text-purple\";\r\n\r\n var applyButton = Q.tryFirst(buttons, x => x.cssClass === \"apply-changes-button\");\r\n if (applyButton)\r\n applyButton.icon = \"fa-check-circle text-purple\";\r\n\r\n var deleteButton = Q.tryFirst(buttons, x => x.cssClass === \"delete-button\");\r\n if (deleteButton)\r\n deleteButton.icon = \"fa-trash-o text-red\";\r\n\r\n var cloneButton = Q.tryFirst(buttons, x => x.cssClass === \"clone-button\");\r\n if (cloneButton)\r\n cloneButton.icon = \"fa-clone\";\r\n\r\n return buttons;\r\n };\r\n })(Serenity.EntityDialog.prototype['getToolbarButtons']);\r\n\r\n Serenity.EntityDialog.prototype['updateInterface'] = (function (old) {\r\n return function () {\r\n\r\n old.call(this);\r\n\r\n if (this.saveAndCloseButton) {\r\n this.saveAndCloseButton.find('.button-inner')\r\n .html(\" \" +\r\n Q.htmlEncode(Q.text((this.isNew() ? 'Controls.EntityDialog.SaveButton' :\r\n 'Controls.EntityDialog.UpdateButton'))));\r\n }\r\n };\r\n })(Serenity.EntityDialog.prototype['updateInterface']);\r\n\r\n $.datepicker.setDefaults({\r\n buttonImage: null,\r\n buttonImageOnly: false,\r\n buttonText: ''\r\n });\r\n\r\n Serenity.Toolbar.prototype['createButton'] = (function (old) {\r\n return function (container: JQuery, b: Serenity.ToolButton) {\r\n if (b.separator)\r\n container = $('
').appendTo(container.parent());\r\n else\r\n container = container.parent().children().last();\r\n\r\n old.call(this, container, b);\r\n\r\n if (b.separator)\r\n container.children().first().remove();\r\n }\r\n })(Serenity.Toolbar.prototype['createButton']);\r\n\r\n Serenity.ColumnPickerDialog.prototype['createLI'] = (function (old) {\r\n return function (col: Slick.Column) {\r\n var allowHide = this.allowHide(col);\r\n return $(\"\\n
  • \\n \\u2630\\n \" + Q.htmlEncode(this.getTitle(col)) + \"\\n \" + (allowHide ? \"\" : '') + \"\\n \\n
  • \");\r\n };\r\n })(Serenity.ColumnPickerDialog.prototype['createLI']);\r\n\r\n Serenity.ColumnPickerDialog.prototype['getTemplate'] = (function (old) {\r\n return function () {\r\n var template = old.call(this);\r\n return template.replace('fa-list', 'fa-eye-slash');\r\n };\r\n })(Serenity.ColumnPickerDialog.prototype['getTemplate']);\r\n\r\n Serenity.DataGrid.defaultRowHeight = 27;\n Serenity.DataGrid.defaultHeaderHeight = 27;\r\n }\r\n}","\r\nnamespace Serenity {\r\n\r\n /**\r\n * A dialog/panel base class that easily generates a wizard UI from tabs in a form definition (e.g. Form.cs)\r\n */\r\n export abstract class WizardDialog extends Serenity.TemplatedDialog {\r\n\r\n private wizardGrid: Serenity.PropertyGrid;\r\n\r\n /**\r\n * Creates a new wizard dialog\r\n * @param opt options, might be used by derived classes\r\n */\r\n constructor(opt?: TOptions) {\r\n super(opt);\r\n\r\n this.element.children().addClass(\"wizard-horz\");\r\n\r\n this.wizardGrid = new PropertyGrid(this.byId(\"WizardGrid\"),\r\n this.getPropertyGridOptions());\r\n\r\n this.wizardGrid.element.children(\".property-tabs\").children('li').each((i, li) => {\r\n var $li = $(li);\r\n var h = $li.children('a').html();\r\n $li.html('').attr('data-step', i + 1);\r\n $('').text(i + 1).appendTo($li);\r\n $('').html(h).appendTo($li);\r\n $('').appendTo($li);\r\n });\r\n\r\n this.byId(\"CancelButton\").click((e) => this.confirmCancel(e));\r\n\r\n this.byId(\"BackButton\").click(() => {\n this.moveToStep(this.step - 1);\n });\n\n this.byId(\"NextButton\").click(() => {\n if (!this.validateForm())\n return false;\n\n this.moveToStep(this.step + 1);\n });\n\n this.wizardGrid.element.children(\".property-tabs\")\n .on(\"click\", \"li\", e => {\n var step = $(e.currentTarget).data('step');\n\n if (step > this.step)\n return;\n\n this.moveToStep(step);\n });\r\n\r\n this.wizardGrid.load(this.getInitialEntity());\r\n\r\n this.element.on('dialogbeforeclose panelbeforeclose', e => {\r\n if (!Serenity.WX.hasOriginalEvent(e))\r\n return;\r\n\r\n this.confirmCancel(e);\r\n });\r\n }\r\n\r\n /**\r\n * gets property grid options\r\n */\r\n protected getPropertyGridOptions(): PropertyGridOptions {\r\n return {\r\n idPrefix: this.idPrefix,\r\n mode: PropertyGridMode.insert,\r\n items: this.getPropertyItems(),\r\n localTextPrefix: this.getLocalTextPrefix(),\r\n useCategories: true\r\n };\r\n }\r\n\r\n /**\r\n * gets form key to use to load property items / tabs\r\n */\r\n protected getFormKey(): string {\r\n return null;\r\n }\r\n\r\n /**\r\n * gets local text prefix for labels\r\n */\r\n protected getLocalTextPrefix(): string {\r\n return \"\";\r\n }\r\n\r\n /**\r\n * gets list of property items to shown on form, uses form key to load items by default\r\n */\r\n protected getPropertyItems(): Serenity.PropertyItem[] {\r\n var formKey = this.getFormKey();\r\n if (formKey)\r\n return Q.getForm(formKey);\r\n\r\n return [];\r\n }\r\n\r\n /**\r\n * gets initial entity to load onto form, override these to customize initial form values\r\n */\r\n protected getInitialEntity(): TEntity {\r\n return {} as TEntity;\r\n }\r\n\r\n // gets maximum number of steps from\r\n protected get maxSteps() {\r\n return this.wizardGrid.element\r\n .children(\".property-tabs\")\r\n .children(\"li\")\r\n .length;\r\n }\r\n\r\n /**\r\n * moves to a step, by calling one of next, back or finish methods based on target step\r\n * @param toStep the target step to move to\r\n */\r\n protected moveToStep(toStep: number) {\r\n if (toStep == this.step || toStep < 1 || toStep > this.maxSteps + 1)\r\n return;\r\n\r\n if (toStep >= this.maxSteps + 1) {\r\n this.finish();\r\n return;\r\n }\r\n\r\n (toStep < this.step ? this.back : this.next).call(this, toStep);\r\n }\r\n\r\n private _step: number = 1;\r\n\r\n // gets current step\r\n protected get step(): number {\r\n return this._step;\r\n }\r\n\r\n // sets current step directly, skipping any validation\r\n protected set step(value: number) {\r\n this.getStepLink(this._step).removeClass(\"in active\");\r\n this.getStepPanel(this._step).removeClass(\"in active\");\r\n this.getStepLink(value).addClass(\"in active\");\r\n this.getStepPanel(value).addClass(\"in active\")\r\n .find(\".require-layout\").triggerHandler(\"layout\");\r\n var s: number;\r\n for (s = value; s <= this._step; s++)\r\n this.getStepLink(s).removeClass(\"complete\").find(\"span.badge\").removeClass(\"badge-success\");\r\n for (s = this._step; s < value; s++)\r\n this.getStepLink(s).addClass(\"complete\").find(\"span.badge\").addClass(\"badge-success\");\r\n\r\n this._step = value;\r\n\r\n this.byId(\"BackButton\").toggleClass('disabled', this._step <= 1);\r\n this.byId(\"NextButton\").children('.txt').text(Q.text(\"Site.WizardDialog.\" +\r\n (this._step == this.maxSteps ? \"Finish\" : \"Next\") + \"Button\"));\r\n }\r\n\r\n /**\r\n * called to reset the form, and go back to first step\r\n */\r\n protected reset() {\r\n this.step = 1;\r\n this.wizardGrid.load(this.getInitialEntity());\r\n }\r\n\r\n /**\r\n * is called when user clicks the Finish button (next button on last step)\r\n */\r\n protected finish() {\r\n this.dialogClose();\r\n }\r\n\r\n /**\r\n * next method is called when user tries to go forward\r\n * @param toStep the step user is trying to move to, usually one step ahead\r\n */\r\n protected next(toStep: number) {\r\n this.step = toStep;\r\n }\r\n\r\n /**\r\n * back method is called when user tries to go backward\r\n * @param toStep the step user is trying to move to, usually one step back but can also be multiple\r\n */\r\n protected back(toStep: number) {\r\n this.step = toStep;\r\n }\r\n\r\n private getStepLink(step: number) {\r\n return this.wizardGrid.element\r\n .children(\".property-tabs\")\r\n .children(\"li\").eq(step - 1);\r\n }\r\n\r\n private getStepPanel(step: number) {\r\n return this.wizardGrid.element\r\n .children(\".property-panes\")\r\n .children().eq(step - 1)\r\n }\r\n\r\n /**\r\n * make sure derived classes use WizardDialog template,\r\n * if they don't define one of their own\r\n */\r\n protected getFallbackTemplate() {\r\n return `\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    `;\r\n }\r\n\r\n /**\r\n * gets cancel confirmation message, return null to disable confirmation\r\n */\r\n protected getCancelMessage() {\r\n return Q.text(\"Site.WizardDialog.CancelMessage\");\r\n }\r\n\r\n /**\r\n * confirms when user tries to cancel or close the wizard\r\n * @param e\r\n */\r\n protected confirmCancel(e: JQueryEventObject) {\r\n var cancelMessage = this.getCancelMessage();\r\n if (!cancelMessage) {\r\n e.preventDefault();\r\n this.dialogClose();\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n Q.confirm(cancelMessage,\r\n () => {\r\n this.dialogClose();\r\n });\r\n }\r\n\r\n /** gets save entity from form, optionally from a limited list of steps (tabs)\r\n * @param steps the list of steps to read data from, pass null to get all\r\n */\r\n protected getSaveEntity(steps?: number[]): TEntity {\r\n var entity = {} as TEntity;\r\n this.wizardGrid.save(entity);\r\n\r\n if (steps != null) {\r\n var maxSteps = this.maxSteps;\r\n for (var i = 1; i <= maxSteps; i++) {\r\n if (steps.indexOf(i) >= 0)\r\n continue;\r\n\r\n var panel = this.getStepPanel(i);\r\n panel.find('.field').each((z, el) => {\r\n var field = $(el).attr('class').split(' ')[1];\r\n if (field)\r\n delete entity[field];\r\n });\r\n }\r\n }\r\n\r\n return entity;\r\n }\r\n\r\n // gets value of compact steps option\r\n protected get compactSteps() {\r\n return this.element.children().hasClass(\"compact-steps\");\r\n }\r\n\r\n // sets value of compact steps option, when it is on, inactive step titles only show\r\n // numbers and gets visible on hover. this is better there are many steps to fit\r\n protected set compactSteps(value: boolean) {\r\n this.element.children().toggleClass(\"compact-steps\", value);\r\n }\r\n }\r\n}\r\n","\r\nnamespace Serenity {\r\n\r\n export interface AutoColumnWidthMixinOptions {\r\n grid: Serenity.DataGrid;\r\n /** Disable auto size on load behavior, default is false, user can stil auto size by double click */\r\n disabled?: boolean;\r\n /** True to just auto size once on load, not on every load, like after changing pages, sorting etc, default is false */\r\n autoSizeAllJustOnce?: boolean;\r\n /** Disable auto size on load behavior if user manually resizes a column, default is true */\r\n disableIfUserResize?: boolean;\r\n /** If column has an explicit width set in Form.cs, use that width on auto size, \r\n * doesn't effect manually triggered auto size by double click, default is false */\r\n useExplicitWidths?: boolean;\r\n /** Set to true if headers shouldn't affect auto width, default is false.\r\n * If passed a number, header are considered for auto width but only up to that \r\n * number, e.g. if you pass 200, and header width is 300, 200 will be used */\r\n ignoreHeaders?: boolean | number;\r\n /** Maximum rows to scan in data source, default is infinite */\r\n maxRows?: number;\r\n /** Maximum auto column width, default value is 400 */\r\n maxWidth?: number;\r\n /** Minimum auto column width, default value is 30 */\r\n minWidth?: number;\r\n }\r\n\r\n /**\r\n * A mixin that can be applied to a DataGrid for auto size column width functionality\r\n */\r\n export class AutoColumnWidthMixin extends Serenity.Widget {\r\n\r\n private slickGrid: Slick.Grid;\r\n private $container: JQuery;\r\n private _disabled: boolean;\r\n private autoSizing: number = 0;\r\n private markupReadyOnce: boolean;\r\n private oldMarkupReady: () => void;\r\n private oldPersistSettings: (flags?: Serenity.GridPersistanceFlags) => void;\r\n private oldGetCurrentSettings: (flags?: Serenity.GridPersistanceFlags) => Serenity.PersistedGridSettings;\r\n private oldRestoreSettings: (settings?: Serenity.PersistedGridSettings, flags?: Serenity.GridPersistanceFlags) => void;\r\n public disabled: boolean;\r\n\r\n private columnResizeHandler = () => {\r\n if (!this.autoSizing && Q.coalesce(this.options.disableIfUserResize, true))\n this.disabled = true;\n }\r\n\r\n constructor(options: AutoColumnWidthMixinOptions) {\r\n super(options.grid.element, options);\r\n\r\n if (options.disabled != null)\r\n this.disabled = !!options.disabled;\r\n\r\n this.slickGrid = options.grid.slickGrid;\r\n this.$container = $((this.slickGrid as any).getContainerNode());\r\n this.$container.on('dblclick.' + this.uniqueName, '.slick-resizable-handle', (e) => this.resizeHandleClick(e));\r\n this.slickGrid.onColumnsResized.subscribe(this.columnResizeHandler);\n var self = this;\n\n this.oldMarkupReady = options.grid['markupReady'];\n options.grid['markupReady'] = function () {\n self.oldMarkupReady && self.oldMarkupReady.call(this);\n if (!self.disabled && (!self.markupReadyOnce || !self.options.autoSizeAllJustOnce))\n self.autoSizeAll(self.disabled != null ? false : null);\n self.markupReadyOnce = true;\n };\n\n this.oldPersistSettings = options.grid['persistSettings'];\n options.grid['persistSettings'] = function (flags?: Serenity.GridPersistanceFlags) {\n if (self.autoSizing)\n return;\n self.oldPersistSettings.call(this, flags);\n };\n\n this.oldGetCurrentSettings = options.grid['getCurrentSettings'];\n options.grid['getCurrentSettings'] = function (flags?: Serenity.GridPersistanceFlags): Serenity.PersistedGridSettings {\n flags = flags || this.gridPersistanceFlags();\n flags.columnWidths = Q.coalesce(flags.columnWidths, !!this.disabled);\n return self.oldGetCurrentSettings.call(this, flags);\n }\n\n this.oldRestoreSettings = options.grid['restoreSettings'];\n options.grid['restoreSettings'] = function (settings?: Serenity.PersistedGridSettings, flags?: Serenity.GridPersistanceFlags) {\n if (settings == null)\n settings = this.getPersistedSettings();\n\n flags = flags || this.gridPersistanceFlags();\n\n if (settings != null &&\n settings.columns &&\n (flags.columnWidths || Q.any(settings.columns, x => x.width != null)))\n self.disabled = true;\n\n self.oldRestoreSettings.call(this, settings, flags);\n }\n\n if (!this.disabled)\n this.autoSizeAll();\n }\n\r\n destroy() {\r\n if (this.options && this.options.grid) {\r\n this.options.grid.element.off('.' + this.uniqueName);\r\n this.options.grid['markupReady'] = this.oldMarkupReady;\r\n }\r\n\r\n this.slickGrid && this.slickGrid.onColumnsResized.unsubscribe(this.columnResizeHandler);\r\n\r\n this.options = null;\r\n this.slickGrid = null;\r\n this.$container = null;\r\n super.destroy();\r\n }\r\n\r\n\r\n private resizeHandleClick(e: JQueryEventObject) {\r\n if (e.ctrlKey) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.autoSizeAll(false);\r\n this.disabled = false;\r\n return;\r\n }\r\n\r\n var $header = $(e.currentTarget).closest('.slick-header-column');\r\n var columnDef = $header.data('column') as Slick.Column;\r\n\r\n if (!columnDef || !columnDef.resizable)\r\n return;\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.autoSizeColumn($header, columnDef);\r\n }\r\n\r\n private getAutoColumnWidth($header: JQuery, columnDef: Slick.Column) {\r\n var colIndex = this.slickGrid.getColumnIndex(columnDef.id);\r\n\r\n var autoWidth = this.getMaxColumnWidth(columnDef, colIndex);\r\n\r\n if (typeof this.options.ignoreHeaders == \"number\") {\r\n autoWidth = Math.max(Math.min(this.options.ignoreHeaders, getElementWidth($header[0])), autoWidth);\r\n }\r\n else if (!this.options.ignoreHeaders) {\r\n autoWidth = Math.max(getElementWidth($header[0]), autoWidth);\r\n }\r\n\r\n autoWidth = (autoWidth || 0) + 1;\r\n\r\n if (columnDef.maxWidth > 0)\r\n autoWidth = Math.min(autoWidth, columnDef.maxWidth);\r\n else\r\n autoWidth = Math.min(autoWidth, this.options.maxWidth || 400);\r\n\r\n if (columnDef.minWidth > 0)\r\n autoWidth = Math.max(autoWidth, columnDef.minWidth);\r\n else\r\n autoWidth = Math.max(autoWidth, this.options.minWidth || 30);\r\n\r\n return autoWidth;\r\n }\r\n\r\n private autoSizeColumn($header: JQuery, columnDef: Slick.Column) {\r\n var autoWidth = this.getAutoColumnWidth($header, columnDef);\r\n\r\n if (autoWidth !== columnDef.width) {\r\n this.autoSizing++;\r\n try {\r\n columnDef.width = autoWidth;\r\n this.slickGrid.setColumns(this.slickGrid.getColumns());\r\n this.slickGrid.onColumnsResized.notify();\r\n }\r\n finally {\r\n this.autoSizing--;\r\n }\r\n }\r\n }\r\n\r\n private queueAutoSize: number = 0;\r\n\r\n public autoSizeAll(useExplicitWidths?: boolean) {\r\n if (!this.$container.is(':visible')) {\r\n\r\n if (this.queueAutoSize <= 0) {\r\n this.queueAutoSize++;\r\n LazyLoadHelper.executeOnceWhenShown(this.$container, () => this.autoSizeAll(useExplicitWidths));\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (this.queueAutoSize > 0) {\r\n this.queueAutoSize--;\r\n }\r\n\r\n this.autoSizing++;\r\n try {\r\n\r\n var $headers = this.$container.find(\".slick-header-column\");\r\n useExplicitWidths = Q.coalesce(useExplicitWidths, this.options.useExplicitWidths);\r\n $headers.each((index, el) => {\r\n var columnDef = $(el).data('column') as Slick.Column;\r\n if (!columnDef)\r\n return;\r\n var autoWidth = (useExplicitWidths && columnDef.sourceItem && columnDef.sourceItem.width > 0 && columnDef.sourceItem.widthSet) ?\r\n columnDef.sourceItem.width : this.getAutoColumnWidth($(el), columnDef);\r\n columnDef.width = autoWidth;\r\n });\r\n\r\n this.slickGrid.setColumns(this.slickGrid.getColumns());\r\n this.slickGrid.onColumnsResized.notify();\r\n }\r\n finally {\r\n this.autoSizing--;\r\n }\r\n }\r\n\r\n private createRow(columnDef: Slick.Column) {\r\n var rowEl = $('
    ');\r\n var gridCanvas = this.slickGrid.getCanvasNode();\r\n $(gridCanvas).append(rowEl);\r\n return rowEl;\r\n }\r\n\r\n private getMaxColumnWidth(columnDef: Slick.Column, colIndex: number) {\r\n var rowEl = this.createRow(columnDef);\r\n var maxAllowedWidth = columnDef.maxWidth > 0 ? columnDef.maxWidth : this.options.maxWidth;\r\n try {\r\n var cell = rowEl.children()[0];\r\n\r\n var length = this.slickGrid.getDataLength();\r\n if (this.options.maxRows != null &&\r\n this.options.maxRows < length)\r\n length = this.options.maxRows;\r\n\r\n var maxWidth = 0;\r\n var offset = 0;\r\n for (var i = 0; i < length; i++) {\r\n var item = this.slickGrid.getDataItem(i);\r\n\r\n if (columnDef.formatter) {\r\n try {\r\n var html = columnDef.formatter(-1, colIndex, item[columnDef.field], columnDef, item);\r\n cell.innerHTML = html;\r\n }\r\n catch {\r\n cell.innerText = Q.coalesce(item[columnDef.field], '');\r\n }\r\n\r\n var child = cell.childNodes[0] as HTMLElement;\r\n if (child && child.tagName == \"INPUT\" &&\r\n (child as HTMLInputElement).type != \"checkbox\") {\r\n var cs = getComputedStyle(child);\r\n offset = (parseFloat(cs.borderLeftWidth) || 0) +\r\n (parseFloat(cs.borderRightWidth) || 0) +\r\n (parseFloat(cs.paddingLeft) || 0) +\r\n (parseFloat(cs.paddingRight) || 0);\r\n cell.innerText = (child as HTMLInputElement).value;\r\n }\r\n }\r\n else\r\n cell.innerText = Q.coalesce(item[columnDef.field], '');\r\n\r\n var width = cell.offsetWidth + offset;\r\n if (width > maxWidth)\r\n maxWidth = width;\r\n\r\n if (maxAllowedWidth > 0 && width >= maxAllowedWidth)\r\n break;\r\n }\r\n\r\n return maxWidth || 0;\r\n }\r\n finally {\r\n rowEl.remove();\r\n }\r\n }\r\n }\r\n\r\n function getElementWidth(element: HTMLElement) {\r\n var width, clone = element.cloneNode(true) as HTMLElement;\r\n clone.style.cssText = 'position: absolute; visibility: hidden; right: auto; text-overflow: initial; white-space: nowrap;';\r\n element.parentNode.insertBefore(clone, element);\r\n width = clone.offsetWidth;\r\n clone.parentNode.removeChild(clone);\r\n return width;\r\n }\r\n\r\n\r\n}","\r\nnamespace Serenity {\r\n\r\n export interface CardViewItemsProps {\r\n items: TItem[];\r\n renderItem: (item: TItem, index: number) => React.ReactNode;\r\n }\r\n\r\n export class CardViewItems extends React.Component> {\r\n render(): React.ReactNode {\r\n return (\r\n
    \r\n {this.props.items.map((item, index) =>\r\n
    \r\n {this.props.renderItem(item, index)}\r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n }\r\n}","\r\n// thanks a lot to Brainweber Inc. for sponsoring this feature and letting us share it with community\r\n\r\nnamespace Serenity {\r\n\r\n export type CardViewType = \"card\" | \"grid\";\r\n\r\n /**\r\n * A mixin that can be applied to a DataGrid for card view functionality\r\n */\r\n export class CardViewMixin {\r\n\r\n private dataGrid: DataGrid;\r\n private getId: (item: TItem) => any;\r\n private cardContainer: JQuery;\r\n\r\n constructor(private options: CardViewMixinOptions) {\r\n var dg = this.dataGrid = options.grid;\r\n var idProperty = (dg as any).getIdProperty();\r\n var getId = this.getId = (item: TItem) => (item as any)[idProperty];\r\n\r\n var btnGroup = $(`\r\n
    \r\n \r\n \r\n
    `)\r\n .prependTo(dg.element.find('.grid-title'));\r\n\r\n this.cardContainer = $('
    ')\r\n .insertAfter(dg.element.children('.grid-container'));\r\n\r\n btnGroup.find('input').change((e) => this.switchView($(e.target).val()));\r\n\r\n this.resizeCardView();\r\n\r\n dg.element.bind('layout', () => this.resizeCardView());\r\n\r\n (dg.view as any).onDataChanged.subscribe(() => {\r\n this.updateCardItems();\r\n });\r\n\r\n var oldCurrentSettings = (dg as any).getCurrentSettings;\r\n (dg as any).getCurrentSettings = function (flag: GridPersistanceFlags) {\r\n var settings = oldCurrentSettings.apply(dg, [flag]);\r\n settings['viewType'] = btnGroup.find('input:checked').val();\r\n return settings;\r\n };\r\n\r\n var oldRestoreSettings = (dg as any).restoreSettings;\r\n (dg as any).restoreSettings = function (settings?: PersistedGridSettings, flags?: GridPersistanceFlags) {\r\n oldRestoreSettings.apply(dg, [settings, flags]);\r\n\r\n if (settings == null) {\r\n var storage = this.getPersistanceStorage();\r\n if (storage == null)\r\n return;\r\n\r\n var json = Q.trimToNull(storage.getItem(this.getPersistanceKey()));\r\n if (!json)\r\n return;\r\n\r\n settings = JSON.parse(json);\r\n }\r\n var viewType = (settings as any).viewType || 'list';\r\n var currentViewType = btnGroup.find('input:checked').val() || 'list';\r\n if (viewType != currentViewType) {\r\n btnGroup.find('input').eq(viewType == 'card' ? 1 : 0).click();\r\n }\r\n };\r\n }\r\n\r\n private switchView(viewType: CardViewType) {\r\n this.resizeCardView();\r\n var card = viewType == 'card';\r\n this.dataGrid.element.children('.card-container').toggle(card);\r\n this.dataGrid.element.children('.grid-container').toggle(!card);\r\n\r\n if (card)\r\n this.updateCardItems();\r\n\r\n (this.dataGrid as any).persistSettings();\r\n }\r\n\r\n private updateCardItems() {\r\n ReactDOM.render(React.createElement(CardViewItems, {\r\n items: this.dataGrid.getItems(),\r\n renderItem: this.options.renderItem\r\n }), this.cardContainer[0]);\r\n }\r\n\r\n private resizeCardView() {\r\n var gc = this.dataGrid.element.children('.grid-container');\r\n var width = this.dataGrid.element.width();\r\n var height = gc.height();\r\n this.dataGrid.element.children('.card-container').css({\r\n width: width + 'px',\r\n height: height + 'px'\r\n });\r\n }\r\n }\r\n\r\n export interface CardViewMixinOptions {\r\n grid: Serenity.DataGrid;\r\n renderItem: (item: TItem, index: number) => React.ReactNode;\r\n }\r\n\r\n Q.initFullHeightGridPage = function (gridDiv) {\r\n $('body').addClass('full-height-page');\r\n gridDiv.addClass('responsive-height');\r\n var layout = function () {\r\n var inPageContent = gridDiv.parent().hasClass('page-content') ||\r\n gridDiv.parent().is('section.content');\r\n if (inPageContent) {\r\n gridDiv.css('height', '1px').css('overflow', 'hidden');\r\n }\r\n var cc = gridDiv.children('.card-container');\r\n if (cc.length && cc.is(':visible')) {\r\n cc.hide();\r\n gridDiv.children('.grid-container').show();\r\n try {\r\n Q.layoutFillHeight(gridDiv);\r\n gridDiv.triggerHandler('layout');\r\n }\r\n finally {\r\n gridDiv.children('.grid-container').hide();\r\n cc.show();\r\n }\r\n }\r\n else {\r\n Q.layoutFillHeight(gridDiv);\r\n if (inPageContent) {\r\n gridDiv.css('overflow', '');\r\n }\r\n gridDiv.triggerHandler('layout');\r\n }\r\n };\r\n if ($('body').hasClass('has-layout-event')) {\r\n $('body').bind('layout', layout);\r\n }\r\n else if ((window as any).Metronic) {\r\n (window as any).Metronic.addResizeHandler(layout);\r\n }\r\n else {\r\n $(window).resize(layout);\r\n }\r\n layout();\r\n Q.Router.resolve();\r\n }\r\n}","\r\n// thanks a lot to Brainweber Inc. for sponsoring this feature and letting us share it with community\r\n\r\nnamespace Serenity {\r\n\r\n /**\r\n * A mixin that can be applied to a DataGrid for favorite views functionality\r\n */\r\n export class FavoriteViewsMixin {\r\n\r\n private dataGrid: DataGrid;\r\n private getId: (item: TItem) => any;\r\n private ul: JQuery;\r\n\r\n constructor(private options: FavoriteViewsMixinOptions) {\r\n var dg = this.dataGrid = options.grid;\r\n var idProperty = (dg as any).getIdProperty();\r\n var getId = this.getId = (item: TItem) => (item as any)[idProperty];\r\n\r\n var dropdown = $(`\r\n
    \r\n \r\n
      \r\n
    • \r\n
      ${Q.text(\"Site.FavoriteViewsMixin.SaveView\")}
      \r\n
      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n`)\r\n .prependTo(dg.element.find(\".grid-title\"));\r\n\r\n dropdown.on('shown.bs.dropdown', e => {\r\n dropdown.find('input[type=text]').focus();\r\n });\r\n\r\n var viewName = dropdown.find('li.save input[type=text]');\r\n\r\n dropdown.find('button.save-button').click(() => {\r\n var name = Q.trimToNull(viewName.val());\r\n if (!name) {\r\n Q.notifyWarning(Q.text(\"Site.FavoriteViewsMixin.EmptyNameError\"));\r\n return;\r\n }\r\n\r\n var favorites = this.getFavorites();\r\n favorites[name] = (dg as any).getCurrentSettings();\r\n this.saveFavorites(favorites);\r\n Q.notifySuccess(Q.format(Q.text(\"Site.FavoriteViewsMixin.SaveSuccessMessage\"), name));\r\n viewName.val('');\r\n this.populateFavorites();\r\n });\r\n\r\n this.ul = dropdown.children(\"ul\");\r\n this.ul.on('click', 'i.fa-trash-o', e => {\r\n var name = $(e.target).closest('li').children('a').text();\r\n var favorites = this.getFavorites();\r\n delete favorites[name];\r\n this.saveFavorites(favorites);\r\n this.populateFavorites();\r\n Q.notifyWarning(Q.format(Q.text(\"Site.FavoriteViewsMixin.DeleteSuccessMessage\"), name));\r\n });\r\n\r\n this.ul.on('click', 'a', e => {\r\n var name = $(e.target).text();\r\n var favorites = this.getFavorites();\r\n var settings = favorites[name];\r\n if (settings) {\r\n (dg as any).restoreSettings(settings);\r\n dg.refresh();\r\n Q.notifySuccess(Q.format(Q.text(\"Site.FavoriteViewsMixin.LoadedViewMessage\"), name));\r\n }\r\n });\r\n\r\n this.populateFavorites();\r\n }\r\n\r\n private populateFavorites() {\r\n var favorites = this.getFavorites();\r\n\r\n var saveLI = this.ul.children('.save');\r\n this.ul.children().not(saveLI).remove();\r\n\r\n var keys = Object.keys(favorites).sort();\r\n if (keys.length) {\r\n for (var k of keys) {\r\n var li = $('
  • ')\r\n .insertBefore(saveLI)\r\n .children('a')\r\n .text(k)\r\n .end();\r\n\r\n $('')\r\n .attr('title', Q.text(\"Site.FavoriteViewsMixin.DeleteButtonHint\"))\r\n .appendTo(li);\r\n }\r\n\r\n $('
  • ').insertBefore(saveLI);\r\n }\r\n }\r\n\r\n private saveFavorites(favorites: object) {\r\n var storage = (this.dataGrid as any).getPersistanceStorage() as Serenity.SettingStorage;\r\n var key = \"Views:\" + (this.dataGrid as any).getPersistanceKey();\r\n storage.setItem(key, JSON.stringify(favorites));\r\n }\r\n\r\n private getFavorites() {\r\n var storage = (this.dataGrid as any).getPersistanceStorage() as Serenity.SettingStorage;\r\n var key = \"Views:\" + (this.dataGrid as any).getPersistanceKey();\r\n return JSON.parse(storage.getItem(key) || \"{}\") || {};\r\n }\r\n }\r\n\r\n export interface FavoriteViewsMixinOptions {\r\n // data grid object\r\n grid: Serenity.DataGrid;\r\n }\r\n}","namespace Slick {\r\n export interface Column {\r\n summaryType?: Serenity.SummaryType;\r\n }\r\n}\r\n\r\nnamespace Serenity {\r\n export interface CustomSummaryMixinOptions {\r\n grid: Serenity.DataGrid;\r\n }\r\n\r\n function toAggregator(summaryType: SummaryType): any {\r\n switch (summaryType) {\r\n case SummaryType.Sum: return Slick.Aggregators.Sum;\r\n case SummaryType.Avg: return Slick.Aggregators.Avg;\r\n case SummaryType.Max: return Slick.Aggregators.Max;\r\n case SummaryType.Min: return Slick.Aggregators.Min;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n export class CustomSummaryMixin {\r\n \r\n constructor(options: CustomSummaryMixinOptions) {\r\n var dg = options.grid;\r\n\r\n var getDefaultAggregators = () => {\r\n var columns = dg['allColumns'];\r\n var aggregators: any[] = [];\r\n for (var x of columns) {\r\n \r\n if (x.sourceItem == null)\r\n continue;\r\n \r\n if (x.sourceItem.summaryType != null &&\r\n x.sourceItem.summaryType != SummaryType.Disabled) {\r\n \r\n var aggregator = toAggregator(x.sourceItem.summaryType);\r\n if (aggregator == null)\r\n continue;\r\n\r\n x.summaryType = x.sourceItem.summaryType;\r\n aggregators.push(new aggregator(x.field));\r\n }\r\n }\r\n\r\n return aggregators;\r\n };\r\n\r\n\r\n dg.view.setSummaryOptions({\r\n aggregators: getDefaultAggregators()\r\n });\r\n\r\n var aggregatesPopup = $(`
      \r\n
    • Sum
    • \r\n
    • Average
    • \r\n
    • Min
    • \r\n
    • Max
    • \r\n
    `).appendTo(document.body)\r\n .click(e => {\r\n if (!$(e.target).is(\"li\"))\r\n return;\r\n\r\n var col = aggregatesPopup.data(\"column\") as Slick.Column;\r\n if (col == null || !col.id)\r\n return;\r\n\r\n var column = Q.tryFirst(dg['allColumns'] as Slick.Column[], x => x.id == col.id);\r\n if (!column)\r\n return;\r\n\r\n if (column.sourceItem == null ||\r\n column.sourceItem.summaryType == null ||\r\n column.sourceItem.summaryType == SummaryType.Disabled)\r\n return;\r\n\r\n var agg = Q.toId($(e.target).data('agg'));\r\n if (agg === column.summaryType)\r\n return;\r\n\r\n column.summaryType = agg;\r\n\r\n var aggregators = dg['allColumns']\r\n .filter(x => x.summaryType)\r\n .map(x => {\r\n var aggregator = toAggregator(x.summaryType)\r\n if (aggregator == null)\r\n return null;\r\n\r\n return new aggregator(x.field);\r\n }).filter(x => x != null);\r\n\r\n dg.view.setSummaryOptions({\r\n aggregators: aggregators\r\n });\r\n\r\n var grouping = (dg.view as any).getGrouping();\r\n for (var i = 0; i < grouping.length; i++)\r\n grouping[i].aggregators = aggregators;\r\n\r\n dg.view.setGrouping(grouping); \r\n dg.slickGrid.invalidate();\r\n });\r\n\r\n dg.element.on('click', '.slick-footerrow-column', e => { \r\n e.preventDefault();\r\n\r\n var col = $(e.currentTarget).data('column');\r\n if (!col || !col.id)\r\n return;\r\n\r\n var column = Q.tryFirst(dg['allColumns'] as Slick.Column[], x => x.id == col.id);\r\n if (!column)\r\n return;\r\n\r\n if (!column ||\r\n !column.sourceItem ||\r\n column.sourceItem.summaryType == null ||\r\n column.sourceItem.summaryType == SummaryType.Disabled)\r\n return;\r\n\r\n aggregatesPopup.data('column', column)\r\n .show()\r\n .css('top', (e.pageY - aggregatesPopup.height()) + 'px')\r\n .css('left', e.pageX + 'px')\r\n .children('li')\r\n .removeClass('active')\r\n .end()\r\n .children('li[data-agg=' + column.summaryType + ']')\r\n .addClass('active');\r\n\r\n $(document.body).off('click.aggregatesMenu' + dg['uniqueName']);\r\n\r\n window.setTimeout(() => $(document.body)\r\n .on(\"click.aggregatesMenu\" + dg['uniqueName'], () => {\r\n aggregatesPopup.hide();\r\n $(document.body).off('click.aggregatesMenu' + dg['uniqueName']);\r\n }), 1);\r\n });\r\n\r\n var oldCurrentSettings = (dg as any).getCurrentSettings;\r\n (dg as any).getCurrentSettings = function (flags: GridPersistanceFlags) {\r\n var settings = oldCurrentSettings.apply(dg, [flags]);\r\n return settings;\r\n };\r\n\r\n var oldRestoreSettings = (dg as any).restoreSettings;\r\n (dg as any).restoreSettings = function (settings?: PersistedGridSettings, \r\n flags?: GridPersistanceFlags) {\r\n oldRestoreSettings.apply(dg, [settings, flags]);\r\n };\r\n }\r\n }\r\n}","declare namespace Slick {\r\n interface Column {\r\n grouping?: false | GroupInfo;\r\n }\r\n}\r\n\r\nnamespace Slick.Plugins {\r\n \r\n export interface DraggableGroupingOptions {\r\n deleteIconCssClass?: string;\r\n deleteIconImage?: string;\r\n dropPlaceHolderText?: string;\r\n getGroupingFor?: (column: Column) => GroupInfo;\r\n getAllColumns?: () => Slick.Column[];\r\n }\r\n\r\n /**\r\n * Based on plugin at https://github.com/muthukumarse/Slickgrid\r\n */\r\n export class DraggableGrouping {\r\n \r\n private grid: Grid;\r\n private gridUid: string;\r\n private dataView: RemoteView;\r\n private dropbox: JQuery;\r\n private dropboxPlaceholder: JQuery;\r\n private expandAll: JQuery;\r\n private collapseAll: JQuery;\r\n private options: DraggableGroupingOptions;\r\n private columnsGroupBy: Slick.Column[];\r\n public onGroupChanged = new Slick.Event();\r\n\r\n constructor(options?: DraggableGroupingOptions) {\r\n var defaults: DraggableGroupingOptions = {\r\n };\r\n\r\n this.options = $.extend(true, {}, defaults, options);\r\n }\r\n\r\n public init(grid: Slick.Grid) {\r\n this.grid = grid;\r\n this.gridUid = grid['getUID']();\r\n \r\n this.dropbox = $(grid['getGroupingPanel']());\r\n var dropPlaceHolderText = this.options.dropPlaceHolderText || \r\n Q.tryGetText(\"Site.DraggableGroupingMixin.DropPlaceholder\") ||\r\n \"Drag a column header here to group by that column\";\r\n\r\n this.dropbox.html(\"
    \" + \r\n dropPlaceHolderText + \"
    \" + \r\n `
    ` + \r\n `
    `);\r\n\r\n this.dropboxPlaceholder = this.dropbox.find(\".slick-dropped-placeholder\");\r\n this.expandAll = this.dropbox.find(\".slick-group-expand-all\");\r\n this.collapseAll = this.dropbox.find(\".slick-group-collapse-all\");\r\n this.setupColumnDropbox();\r\n\r\n var cols = this.getColumns();\r\n for (var i = 0; i < cols.length; i++) {\r\n var col = cols[i];\r\n grid['updateColumnHeader'](col.id);\r\n }\r\n\r\n this.columnsGroupBy = [];\r\n }\r\n\r\n private getColumns(): Slick.Column[] {\r\n return (this.options.getAllColumns && this.options.getAllColumns()) || \r\n this.grid.getColumns();\r\n }\r\n\r\n public destroy() {\r\n this.onGroupChanged.clear();\r\n }\r\n\r\n private setupColumnDropbox() {\r\n var _self = this;\r\n this.dropbox.droppable({\r\n activeClass: \"ui-state-default\",\r\n hoverClass: \"ui-state-hover\",\r\n accept: \":not(.ui-sortable-helper)\",\r\n deactivate: (event, ui) => {\r\n this.dropbox.removeClass(\"slick-header-column-denied\");\r\n },\r\n drop: function(event, ui) {\r\n _self.handleGroupByDrop(this, \r\n ui.draggable.attr('id').replace(_self.gridUid, \"\"));\r\n },\r\n over: (event, ui) => {\r\n var id = (ui.draggable).attr('id').replace(this.gridUid, \"\");\r\n this.getColumns().forEach((e, i, a) => {\r\n if (e.id == id) {\r\n if (e.grouping !== false) {\r\n this.dropbox.addClass(\"slick-header-column-denied\");\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.dropbox.sortable({\r\n items: \"div.slick-dropped-grouping\",\r\n cursor: \"default\",\r\n tolerance: \"pointer\",\r\n helper: \"clone\",\r\n update: (event, ui) => {\r\n var sortArray = $(event.target).sortable('toArray', {\r\n attribute: 'data-id'\r\n }),\r\n newGroupingOrder = [];\r\n for (var i = 0, l = sortArray.length; i < l; i++) {\r\n for (var a = 0, b = this.columnsGroupBy.length; a < b; a++) {\r\n if (this.columnsGroupBy[a].id == sortArray[i]) {\r\n newGroupingOrder.push(this.columnsGroupBy[a]);\r\n break;\r\n }\r\n }\r\n }\r\n this.columnsGroupBy = newGroupingOrder;\r\n this.updateGroupBy();\r\n }\r\n });\r\n\r\n this.expandAll.on('click', (e) => {\r\n (this.grid.getData() as any).expandAllGroups();\r\n });\r\n\r\n this.collapseAll.on('click', (e) => {\r\n (this.grid.getData() as any).collapseAllGroups();\r\n });\r\n }\r\n\r\n public getGroupingFor(column: Column): GroupInfo {\r\n var g = null;\r\n\r\n if (this.options.getGroupingFor) {\r\n g = this.options.getGroupingFor(column);\r\n }\r\n \r\n if (g === false)\r\n return g;\r\n\r\n return $.extend({\r\n getter: column.field || column.id,\r\n formatter: function (g: Group) {\r\n var text;\r\n if (column.formatter) {\r\n try {\r\n text = column.formatter(-1, -1, g.value, column, { [column.field]: g });\r\n }\r\n catch (e) {\r\n text = Q.htmlEncode(g.value);\r\n }\r\n }\r\n else\r\n text = Q.htmlEncode(g.value);\r\n\r\n return (column.name || column.field || column.id) + \r\n \": \" + text + \" (\" + \r\n g.count + \" items)\";\r\n },\r\n collapsed: true\r\n }, g);\r\n }\r\n\r\n handleGroupByDrop(container: JQuery, columnid: string) {\r\n var columnAllowed = true;\r\n this.columnsGroupBy.forEach(function(clmn, i, a) {\r\n if (clmn.id == columnid) {\r\n columnAllowed = false;\r\n }\r\n });\r\n\r\n var gridColumns = this.getColumns();\r\n\r\n if (!columnAllowed)\r\n return;\r\n\r\n gridColumns.forEach((col, i, a) => {\r\n if (col.id !== columnid || col.grouping === false)\r\n return;\r\n\r\n if (col.grouping == null || $.isEmptyObject(col.grouping)) {\r\n col.grouping = this.getGroupingFor(col);\r\n if (col.grouping === false)\r\n return;\r\n }\r\n\r\n var entry = $(\"
    \");\r\n \r\n var groupText = $(\"
    \" + \r\n col.name + \"
    \")\r\n\r\n groupText.appendTo(entry);\r\n \r\n var groupRemoveIcon = $(\"
     
    \");\r\n if (this.options.deleteIconCssClass) \r\n groupRemoveIcon.addClass(this.options.deleteIconCssClass);\r\n\r\n if (this.options.deleteIconImage) \r\n groupRemoveIcon.css(\"background\", \"url(\" + this.options.deleteIconImage + \") no-repeat center right\");\r\n\r\n if (!this.options.deleteIconCssClass && !this.options.deleteIconImage) \r\n groupRemoveIcon.addClass('slick-groupby-remove-image');\r\n\r\n groupRemoveIcon.appendTo(entry);\r\n\r\n $(\"
    \").appendTo(entry);\r\n entry.appendTo(container);\r\n \r\n this.addColumnGroupBy(col);\r\n groupRemoveIcon.one('click', () => this.removeGroupBy(col.id, entry));\r\n });\r\n\r\n this.grid.invalidate();\r\n }\r\n\r\n private addColumnGroupBy(column: Column) {\r\n this.columnsGroupBy.push(column);\r\n this.updateGroupBy();\r\n }\r\n\r\n public setDroppedGroups(idList: string[]) {\r\n if (!idList || !idList.length) {\r\n this.columnsGroupBy = [];\r\n this.dropbox.find(\".slick-dropped-grouping\").remove();\r\n }\r\n else {\r\n for (var i = 0; i < idList.length; i++) {\r\n this.handleGroupByDrop(this.dropbox, idList[i]);\r\n }\r\n }\r\n\r\n this.updateInterface();\r\n\r\n }\r\n\r\n private removeGroupBy(id: string, entry: JQuery) {\r\n entry.remove();\r\n var gridColumns = this.getColumns();\r\n\r\n var idx;\r\n while ((idx = Q.indexOf(this.columnsGroupBy, x => x.id == id)) >= 0)\r\n this.columnsGroupBy.splice(idx, 1);\r\n \r\n this.updateGroupBy();\r\n }\r\n\r\n private updateInterface() {\r\n var hasGrouping = !!(this.columnsGroupBy && this.columnsGroupBy.length);\r\n this.collapseAll.toggle(hasGrouping);\r\n this.expandAll.toggle(hasGrouping);\r\n this.dropboxPlaceholder.toggle(!hasGrouping);\r\n }\r\n\r\n private updateGroupBy() {\r\n this.updateInterface();\r\n\r\n if (this.columnsGroupBy.length == 0) {\r\n (this.grid.getData() as any).setGrouping([]);\r\n this.onGroupChanged.notify({ groupColumns: [] });\r\n this.grid.invalidate();\r\n return;\r\n }\r\n \r\n var groupingArray: any[] = [];\r\n this.columnsGroupBy.forEach(function(element, index, array) {\r\n groupingArray.push(element.grouping);\r\n });\r\n\r\n (this.grid.getData() as any).setGrouping(groupingArray);\r\n this.grid.invalidate();\r\n this.onGroupChanged.notify({ groupColumns: groupingArray})\r\n }\r\n\r\n public static setupColumnReorder(grid: Slick.Grid, $headers: JQuery, \r\n setupColumnResize: () => void, trigger: (ev: any, p: any) => void) {\r\n $headers.filter(\":ui-sortable\").sortable(\"destroy\");\r\n var $headerDraggableGroupBy = $(grid['getGroupingPanel']());\r\n var columns = grid.getColumns();\r\n var uid = grid['getUID']();\r\n $headers.sortable({\r\n distance: 3,\r\n cursor: \"default\",\r\n tolerance: \"intersection\",\r\n helper: \"clone\",\r\n placeholder: \"slick-sortable-placeholder ui-state-default slick-header-column\",\r\n forcePlaceholderSize: true,\r\n appendTo: \"body\",\r\n start: function(e, ui) {\r\n $(ui.helper).addClass(\"slick-header-column-active\");\r\n },\r\n beforeStop: function(e, ui) {\r\n $(ui.helper).removeClass(\"slick-header-column-active\");\r\n var hasDroppedColumn = $headerDraggableGroupBy\r\n .find(\".slick-dropped-grouping\").length;\r\n if (hasDroppedColumn > 0){\r\n $headerDraggableGroupBy.find(\".slick-dropped-placeholder\").hide();\r\n $headerDraggableGroupBy.find(\".slick-dropped-grouping\").show(); \r\n } \r\n },\r\n stop: function(e) {\r\n if (!grid['getEditorLock']().commitCurrentEdit()) {\r\n $(this).sortable(\"cancel\");\r\n return;\r\n }\r\n \r\n var reorderedIds = $headers.sortable(\"toArray\");\r\n var reorderedColumns = [];\r\n for (var i = 0; i < reorderedIds.length; i++) {\r\n reorderedColumns.push(columns[grid.getColumnIndex(\r\n reorderedIds[i].replace(uid, \"\"))]);\r\n }\r\n grid.setColumns(reorderedColumns);\r\n trigger(grid.onColumnsReordered, {});\r\n e.stopPropagation();\r\n setupColumnResize();\r\n }\r\n });\r\n }\r\n }\r\n}","namespace Serenity {\r\n export interface GridPersistanceFlags {\r\n groupColumns?: boolean;\r\n }\r\n\r\n export interface PersistedGridSettings {\r\n groupColumns?: string[];\r\n }\r\n \r\n export interface DraggableGroupingMixinOptions {\r\n grid: Serenity.DataGrid;\r\n }\r\n\r\n function sortBy(field: string, reverse?: boolean, primer?: (value: any) => any) {\r\n \r\n\t var key = function (x: any) {\r\n return primer ? primer(x[field]) : x[field]\r\n };\r\n\t\r\n\t return function (a: any, b: any) {\r\n\t var A = key(a), B = key(b);\r\n\t return (A < B ? -1 : (A > B ? 1 : 0)) * [1,-1][+!!reverse];\r\n\t }\r\n\t};\r\n\r\n export class DraggableGroupingMixin {\r\n \r\n public readonly plugin: Slick.Plugins.DraggableGrouping;\r\n\r\n constructor(options: DraggableGroupingMixinOptions) {\r\n var dg = options.grid;\r\n\r\n var plugin = this.plugin = new Slick.Plugins.DraggableGrouping({\r\n getAllColumns: () => (dg as any).allColumns\r\n });\r\n\r\n dg.slickGrid.registerPlugin(plugin);\r\n\r\n plugin.onGroupChanged.subscribe(() => {\r\n (dg as any).persistSettings(null);\r\n });\r\n\r\n var oldCurrentSettings = (dg as any).getCurrentSettings;\r\n (dg as any).getCurrentSettings = function (flags: GridPersistanceFlags) {\r\n var settings = oldCurrentSettings.apply(dg, [flags]);\r\n\r\n if (flags == null || flags.groupColumns == null || flags.groupColumns) {\r\n var grouping = (dg.view as any).getGrouping() as Slick.GroupInfo[] || [];\r\n settings['groupColumns'] = grouping.map(x => x.getter)\r\n .filter(x => x != null && typeof x == \"string\");\r\n }\r\n\r\n return settings;\r\n };\r\n\r\n function loadGroupCols(groupColsToLoad: string[]) { \r\n if (groupColsToLoad == null)\r\n return;\r\n \r\n var columns = (dg as any).allColumns as Slick.Column[];\r\n\r\n var groupCols = groupColsToLoad\r\n .map(x => Q.tryFirst(columns, z => z.id == x))\r\n .filter(x => x != null);\r\n \r\n var groupings = groupCols.map((e: Slick.Column) => {\r\n if (e['grouping'] == null)\r\n e['grouping'] = plugin.getGroupingFor(e);\r\n\r\n return e['grouping'];\r\n });\r\n\r\n dg.view.setGrouping(groupings as any);\r\n plugin.setDroppedGroups(groupCols.map(x => x.id));\r\n dg.slickGrid.invalidate();\r\n };\r\n\r\n function getDefaultGroupCols() {\r\n var colsWithOrder = (dg as any).allColumns.filter((x: Slick.Column) => x.sourceItem != null &&\r\n x.sourceItem.groupOrder != null) as Slick.Column[];\r\n if (colsWithOrder.length) {\r\n return colsWithOrder.sort(sortBy('groupOrder')).map(x => x.id);\r\n }\r\n return null;\r\n }\r\n\r\n var oldRestoreSettings = (dg as any).restoreSettings;\r\n (dg as any).restoreSettings = function (settings?: PersistedGridSettings, flags?: GridPersistanceFlags) {\r\n oldRestoreSettings.apply(dg, [settings, flags]);\r\n\r\n if (!(flags == null || flags.groupColumns == null || flags.groupColumns))\r\n return;\r\n\r\n var groupColsToLoad: string[] = null;\r\n\r\n if (settings == null) {\r\n var storage = this.getPersistanceStorage();\r\n if (storage != null) {\r\n var json = Q.trimToNull(storage.getItem(this.getPersistanceKey()));\r\n if (json) {\r\n groupColsToLoad = (JSON.parse(json) || {}).groupColumns;\r\n }\r\n }\r\n }\r\n else\r\n groupColsToLoad = settings.groupColumns;\r\n\r\n if (groupColsToLoad == null) {\r\n groupColsToLoad = getDefaultGroupCols();\r\n }\r\n\r\n loadGroupCols(groupColsToLoad);\r\n \r\n };\r\n }\r\n }\r\n}","\r\nnamespace Serenity {\r\n export const enum HeaderFilterType {\r\n disabled = 0,\r\n value = 1,\r\n text = 2\r\n }\r\n}\r\n\r\ndeclare namespace Slick {\r\n export interface Column {\r\n headerFilterType?: Serenity.HeaderFilterType;\r\n headerFilterValues?: object[];\r\n }\r\n}\r\n\r\nnamespace Slick.Plugins {\r\n\r\n /*\r\n Based on SlickGrid Header Menu Plugin (https://github.com/mleibman/SlickGrid/blob/master/plugins/slick.headermenu.js)\r\n Based on SlickGrid Spreadsheet Plugins (https://github.com/danny-sg/slickgrid-spreadsheet-plugins/blob/master/ext.headerfilter.js)\r\n (Can't be used at the same time as the header menu plugin as it implements the dropdown in the same way)\r\n */\r\n\r\n export interface HeaderFiltersOptions {\r\n buttonImage?: string;\r\n useColumnFormatter?: boolean;\r\n getFilterValues?: (column: Slick.Column, callback: (values: object[], texts?: string[]) => void) => void;\r\n getFilterType?: (column: Slick.Column) => Serenity.HeaderFilterType;\r\n }\r\n\r\n export class HeaderFilters {\r\n\r\n private grid: Slick.Grid;\r\n private menu: JQuery;\r\n private searchInput: JQuery;\r\n private handler: Slick.EventHandler;\r\n private options: HeaderFiltersOptions;\r\n private checkedValues : any = new window['Set']();\r\n private filterValues: object[];\r\n private filterTexts: string[];\r\n public onFilterApplied = new Slick.Event();\r\n public onCommand = new Slick.Event();\r\n\r\n constructor(options: HeaderFiltersOptions) {\r\n this.handler = new Slick.EventHandler();\r\n\r\n var defaults: HeaderFiltersOptions = {\r\n buttonImage: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEQAACxEBf2RfkQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAACeSURBVDhPvdItDsIwGIfxAoZNAQaDmOEgXAIzsRvgCArNCRBcYAmeO+AQHGBuCWqOhYTP521SQsZI2yzhn/xE3+RxVU3WRoSJoz70OpjiiMxijzH0WhhhgzOeP+RIEOA9E6e4oBqdIFGIr0k8xA43mKjADLXR5wY44IEr1rBGZltIWGIuB9f9P1zgDu+whxW8Q1kXS8T65Tn5x6IypV7aOzNezxwrTQAAAABJRU5ErkJggg==\",\r\n useColumnFormatter: true,\r\n getFilterValues: null\r\n };\r\n\r\n this.options = $.extend(true, {}, defaults, options);\r\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\r\n }\r\n \r\n init(g: Slick.Grid) {\r\n \r\n this.grid = g;\r\n this.handler.subscribe(g.onHeaderCellRendered, this.handleHeaderCellRendered.bind(this))\r\n .subscribe(g.onBeforeHeaderCellDestroy, this.handleBeforeHeaderCellDestroy.bind(this))\r\n .subscribe(g.onClick, this.handleBodyMouseDown.bind(this))\r\n .subscribe(g.onColumnsResized, this.columnsResized.bind(this));\r\n\r\n g.setColumns(g.getColumns());\r\n\r\n $(document.body).bind(\"mousedown\", this.handleBodyMouseDown = this.handleBodyMouseDown.bind(this));\r\n }\r\n\r\n destroy() {\r\n this.handler.unsubscribeAll();\r\n $(document.body).unbind(\"mousedown\", this.handleBodyMouseDown);\r\n }\r\n\r\n getFilterType(column: Slick.Column) {\r\n if (column.headerFilterType != null)\r\n return column.headerFilterType;\r\n\r\n if (this.options.getFilterType != null) {\r\n column.headerFilterType = this.options.getFilterType(column);\r\n if (column.headerFilterType != null)\r\n return column.headerFilterType;\r\n }\r\n\r\n if (column.headerFilterType == null)\r\n column.headerFilterType = Serenity.HeaderFilterType.value;\r\n\r\n return column.headerFilterType;\r\n }\r\n\r\n private handleBodyMouseDown(e: any) {\r\n if (this.menu && this.menu[0] != e.target && !$.contains(this.menu[0], e.target)) {\r\n this.hideMenu();\r\n }\r\n }\r\n\r\n private hideMenu() {\r\n if (this.menu) {\r\n this.menu.remove();\r\n this.menu = null;\r\n }\r\n }\r\n\r\n private handleHeaderCellRendered(e: any, args: any) {\r\n var column = args.column as Column;\r\n\r\n var filterType = this.getFilterType(column);\r\n if (filterType === Serenity.HeaderFilterType.disabled)\r\n return false;\r\n\r\n var $el = $(\"
    \")\r\n .addClass(\"slick-header-menubutton\")\r\n .data(\"column\", column);\r\n\r\n if (this.options.buttonImage) {\r\n $el.css(\"background-image\", \"url(\" + this.options.buttonImage + \")\");\r\n }\r\n\r\n $(args.node).addClass('has-header-menubutton');\r\n $el.on(\"click\", e => {\r\n e.stopPropagation();\r\n this.showFilter(e);\r\n }).appendTo(args.node);\r\n }\r\n\r\n private handleBeforeHeaderCellDestroy(e: any, args: any) {\r\n $(args.node)\r\n .find(\".slick-header-menubutton\")\r\n .remove();\r\n }\r\n\r\n private addMenuItem(menu: JQuery, columnDef: Slick.Column, title: string, command: string, image: string) {\r\n var $item = $(\"
    \")\r\n .data(\"command\", command)\r\n .data(\"column\", columnDef)\r\n .bind(\"click\", this.handleMenuItemClick)\r\n .appendTo(menu);\r\n\r\n var $icon = $(\"
    \")\r\n .appendTo($item);\r\n\r\n if (image) {\r\n $icon.css(\"background-image\", \"url(\" + image + \")\");\r\n }\r\n\r\n $(\"\")\r\n .text(title)\r\n .appendTo($item);\r\n }\r\n\r\n private addSearchInput(menu: JQuery, columnDef: Slick.Column) {\r\n return $(\"\")\r\n .data(\"column\", columnDef)\r\n .bind(\"keyup\", (e) => {\r\n this.updateFilterValues(columnDef, () => {});\r\n })\r\n .appendTo(menu);\r\n }\r\n\r\n private updateFilterItems(columnDef: Slick.Column) {\r\n var filterOptions = \"\";\r\n\r\n this.checkedValues = new window['Set'](columnDef.headerFilterValues || []);\r\n\r\n for (var i = 0; i < this.filterValues.length; i++) {\r\n var filtered = this.checkedValues.has(this.filterValues[i]);\r\n filterOptions += \"\";\r\n }\r\n\r\n var $filter = this.menu.find('.filter');\r\n $filter.empty().append($(filterOptions));\r\n\r\n $(':checkbox', $filter).bind('click', e => {\r\n this.onCheckboxClick($(e.target));\r\n });\r\n }\r\n\r\n private getFilterText(item: any, column: Column): string {\r\n var value = item[column.field];\r\n\r\n if (this.options.useColumnFormatter && column && column.formatter) {\r\n try {\r\n var html = column.formatter(-1, -1, value, column, item);\r\n \r\n if (value == null && html === '') {\r\n return (Q.tryGetText(\"Site.HeaderFiltersMixin.Null\") || \"(null)\");\r\n }\r\n\r\n return html;\r\n }\r\n catch (ex) {\r\n }\r\n }\r\n\r\n if (value == null)\r\n return (Q.tryGetText(\"Site.HeaderFiltersMixin.Null\") || \"(null)\");\r\n\r\n return Q.htmlEncode(value);\r\n }\r\n\r\n private showFilter(e: any) {\r\n var $menuButton = $(e.target);\r\n var columnDef = $menuButton.data(\"column\") as Column;\r\n\r\n this.checkedValues = new window['Set'](columnDef.headerFilterValues || []);\r\n\r\n if (!this.menu)\r\n this.menu = $(\"
    \").appendTo(document.body).hide();\r\n else\r\n this.menu.empty();\r\n\r\n this.searchInput = this.addSearchInput(this.menu, columnDef);\r\n\r\n var filterOptions = \"\";\r\n\r\n var $filter = $(\"
    \")\r\n .appendTo(this.menu);\r\n\r\n $('')\r\n .appendTo(this.menu)\r\n .bind('click', ev => {\r\n if (Array['from']) {\r\n columnDef.headerFilterValues = Array['from'](this.checkedValues);\r\n }\r\n else {\r\n columnDef.headerFilterValues = [];\r\n this.checkedValues && this.checkedValues.forEach((x: any) => columnDef.headerFilterValues.push(x));\r\n }\r\n this.setButtonImage($menuButton, columnDef.headerFilterValues.length > 0);\r\n this.handleApply(ev, columnDef);\r\n });\r\n\r\n $('')\r\n .appendTo(this.menu)\r\n .bind('click', ev => {\r\n if (columnDef.headerFilterValues)\r\n columnDef.headerFilterValues.length = 0;\r\n this.setButtonImage($menuButton, false);\r\n this.handleApply(ev, columnDef);\r\n });\r\n\r\n $('')\r\n .appendTo(this.menu)\r\n .bind('click', e => this.hideMenu());\r\n\r\n $(':checkbox', $filter).bind('click', (e) => {\r\n this.onCheckboxClick($(e.target));\r\n });\r\n\r\n this.updateFilterValues(columnDef, () => {\r\n this.menu.show();\r\n $filter.css('height', null);\r\n var menuHeight = this.menu.height();\r\n var buttonHeight = $(e.target).height();\r\n\r\n var offset = $(e.target).offset();\r\n var left = offset.left - this.menu.width() + $(e.target).width() - 8;\r\n\r\n var menuTop = offset.top + buttonHeight;\r\n\r\n var windowScrollTop = $(window).scrollTop();\r\n var bottomBoundary = $(window).height() + windowScrollTop;\r\n var contentWrapperTop = (parseInt($('div.content-wrapper').css('padding-top'), 10) || 0);\r\n\r\n if (menuTop + menuHeight > bottomBoundary &&\r\n bottomBoundary - menuTop + contentWrapperTop < menuTop - windowScrollTop) {\r\n menuTop -= (menuHeight + buttonHeight + 8);\r\n\r\n if (menuTop < windowScrollTop)\r\n menuTop = windowScrollTop;\r\n }\r\n\r\n var extraHeight = menuTop + menuHeight - bottomBoundary;\r\n\r\n if (extraHeight > 0) {\r\n $filter.css('height', ($filter.height() - extraHeight));\r\n }\r\n\r\n this.menu.css(\"top\", menuTop).css(\"left\", (left > 0 ? left : 0));\r\n });\r\n }\r\n\r\n private columnsResized() {\r\n this.hideMenu();\r\n }\r\n\r\n private onCheckboxClick($checkbox: JQuery) {\r\n var index = $checkbox.val();\r\n var $filter = $checkbox.parent().parent();\r\n\r\n if ($checkbox.val() < 0) {\r\n if ($checkbox.prop('checked')) {\r\n $(':checkbox', $filter).prop('checked', true);\r\n this.checkedValues = new window['Set'](this.filterValues || []);\r\n } else {\r\n $(':checkbox', $filter).prop('checked', false);\r\n this.checkedValues.clear();\r\n }\r\n } else {\r\n var value = this.filterValues[index];\r\n var has = this.checkedValues.has(value);\r\n\r\n if ($checkbox.prop('checked') && !has) {\r\n this.checkedValues.add(value);\r\n }\r\n else if (has) {\r\n this.checkedValues.delete(value);\r\n }\r\n }\r\n }\r\n\r\n private setButtonImage($el: JQuery, filtered: boolean) {\r\n $el.toggleClass('is-filtered', filtered);\r\n }\r\n\r\n private handleApply(e: any, columnDef: Slick.Column) {\r\n this.hideMenu();\r\n\r\n this.onFilterApplied.notify({ \r\n \"grid\": this.grid, \r\n \"column\": columnDef \r\n }, e, this);\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n private containsFilter(filter: string): ((text: string) => boolean) {\r\n if (filter == null && filter.length == 0)\r\n return v => true;\r\n\r\n var lowercaseFilter = Q.htmlEncode(filter).toLowerCase();\r\n\r\n return (text: string) => {\r\n text = Q.coalesce(text, '').toString().replace(/<[^>]+>/g, '').toLowerCase();\r\n return text.indexOf(lowercaseFilter) >= 0;\r\n };\r\n }\r\n\r\n public getFilterValue(item: any, column: Slick.Column) {\r\n var value = item[column.field];\r\n if (this.options.useColumnFormatter &&\r\n column.formatter != null &&\r\n column.headerFilterType == Serenity.HeaderFilterType.text) {\r\n return (this.getFilterText(item, column)\r\n .replace(/<[^>]+>/g, ''));\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private sortFilterValues() {\r\n var idx: number[] = [];\r\n for (var i = 0; i < this.filterValues.length; i++) {\r\n idx[i] = i;\r\n }\r\n idx.sort((x, y) => {\r\n var A = this.filterValues[x];\r\n var B = this.filterValues[y];\r\n return (A < B ? -1 : (A > B ? 1 : 0));\r\n });\r\n var newFilterValues = [];\r\n var newFilterTexts = [];\r\n for (var i = 0; i < idx.length; i++) {\r\n newFilterValues.push(this.filterValues[i]);\r\n newFilterTexts.push(this.filterTexts[i]);\r\n }\r\n this.filterValues = newFilterValues;\r\n this.filterTexts = newFilterTexts;\r\n }\r\n\r\n private updateFilterValues(column: Column, done: () => void) {\r\n if (this.options.getFilterValues != null) {\r\n this.options.getFilterValues(column, (values: object[], texts: string[]) => {\r\n if (values == null) {\r\n this.updateFilterValuesFromData(column);\r\n this.updateFilterItems(column);\r\n done();\r\n }\r\n else {\r\n this.filterValues = [];\r\n this.filterTexts = [];\r\n\r\n texts = texts || values.map(x => {\r\n var item: any = {};\r\n item[column.field] = x;\r\n return this.getFilterText(item, column);\r\n });\r\n\r\n var filter = this.containsFilter(this.searchInput.val());\r\n this.filterValues = values.filter((x, i) => {\r\n if (filter(texts[i])) {\r\n this.filterTexts.push(texts[i]);\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n this.sortFilterValues();\r\n this.updateFilterItems(column);\r\n done();\r\n }\r\n });\r\n }\r\n else {\r\n this.updateFilterValuesFromData(column);\r\n this.updateFilterItems(column);\r\n done();\r\n }\r\n }\r\n\r\n private updateFilterValuesFromData(column: Slick.Column) {\r\n\r\n this.filterValues = [];\r\n this.filterTexts = [];\r\n var dataView = ((this.grid.getData() as any) as Slick.RemoteView);\r\n \r\n var items: any[];\r\n if (this.checkedValues && this.checkedValues.size) {\r\n items = dataView.getItems();\r\n }\r\n else {\r\n items = [];\r\n for (var i = 0; i < dataView.getLength(); i++) {\r\n items.push(dataView.getItem(i));\r\n }\r\n }\r\n\r\n var seen = new window['Set']();\r\n var searchText = this.searchInput.val();\r\n var searchFilter = this.containsFilter(searchText);\r\n for (var item of items) {\r\n var value = this.getFilterValue(item, column);\r\n if (!seen.has(value)) {\r\n var text = this.getFilterText(item, column);\r\n if (searchFilter(text)) {\r\n seen.add(value);\r\n this.filterValues.push(value);\r\n this.filterTexts.push(text);\r\n }\r\n }\r\n }\r\n \r\n this.sortFilterValues();\r\n }\r\n\r\n private handleMenuItemClick(e: any) {\r\n var command = $(this).data(\"command\");\r\n var columnDef = $(this).data(\"column\");\r\n\r\n this.hideMenu();\r\n\r\n this.onCommand.notify({\r\n \"grid\": this,\r\n \"column\": columnDef,\r\n \"command\": command\r\n }, e, this);\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n}","\r\nnamespace Serenity {\r\n \r\n export interface HeadersFiltersMixinOptions {\r\n grid: Serenity.DataGrid;\r\n filterByText?: boolean;\r\n }\r\n\r\n /**\r\n * A mixin that can be applied to a DataGrid for column filters functionality\r\n */\r\n export class HeaderFiltersMixin {\r\n\r\n private filterByText: boolean;\r\n\r\n constructor(options: HeadersFiltersMixinOptions) {\r\n \r\n var skipColumnFilters: Slick.Column = null;\r\n var cache: any = {};\r\n\r\n if (options.filterByText == null) {\r\n this.filterByText = !options.grid.view.url || \r\n !options.grid.view['getPagingInfo']().rowsPerPage;\r\n }\r\n else\r\n this.filterByText = !!options.filterByText;\r\n\r\n var filterPlugin = new Slick.Plugins.HeaderFilters({\r\n getFilterType: (col: Slick.Column) => {\r\n if (this.filterByText)\r\n return HeaderFilterType.text;\r\n\r\n if (col.sortable != null && !col.sortable)\r\n return HeaderFilterType.disabled;\r\n\r\n if (col.sourceItem != null && \r\n col.sourceItem.notFilterable != null &&\r\n col.sourceItem.notFilterable)\r\n return HeaderFilterType.disabled;\r\n\r\n return HeaderFilterType.value;\r\n },\r\n getFilterValues: (col: Slick.Column, done: (vals: any[]) => void) => {\r\n if (col.headerFilterType == HeaderFilterType.text)\r\n return done(null);\r\n\r\n skipColumnFilters = col;\r\n try {\r\n if (!(options.grid as any).onViewSubmit()) {\r\n done([]);\r\n return;\r\n }\r\n }\r\n finally {\r\n skipColumnFilters = null;\r\n }\r\n\r\n var req = Q.deepClone(options.grid.view.params) as ListRequest;\r\n req.DistinctFields = [col.field];\r\n req.Skip = 0;\r\n req.Take = 0;\r\n var cacheKey = $.toJSON(req);\r\n var cached = cache[cacheKey];\r\n if (cached && cached.expires > new Date().getTime())\r\n done(cached.value);\r\n else {\r\n Q.serviceCall({\r\n request: req,\r\n url: options.grid.view.url,\r\n onSuccess: (response: ListResponse) => {\r\n cache[cacheKey] = {\r\n value: response.Values,\r\n expires: new Date().getTime() + 1000 * 30\r\n };\r\n done(response.Values);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n filterPlugin.onFilterApplied.subscribe((e, data) => {\r\n var column = data.column as Slick.Column;\r\n if (column && column.headerFilterType == HeaderFilterType.text)\r\n options.grid.view.setItems(options.grid.view.getItems(), true);\r\n else\r\n options.grid.refresh();\r\n });\r\n\r\n options.grid.slickGrid.registerPlugin(filterPlugin);\r\n\r\n var me = this;\r\n\r\n var oldOnViewSubmit = (options.grid as any).onViewSubmit;\r\n (options.grid as any).onViewSubmit = function () {\r\n if (!oldOnViewSubmit.call(this))\r\n return false;\r\n\r\n var cols = this.slickGrid.getColumns() as Slick.Column[];\r\n var request = (this.view.params as ListRequest);\r\n for (var col of cols) {\r\n if (col === skipColumnFilters ||\r\n col.headerFilterType == HeaderFilterType.text)\r\n continue;\r\n\r\n var vals = col.headerFilterValues;\r\n if (vals && vals.length) {\r\n var nonNull = vals.filter((z: any) => z != null);\r\n var criteria = [[col.field], 'in', [nonNull]];\r\n if (nonNull.length !== vals.length) {\r\n if (nonNull.length > 0)\r\n criteria = Serenity.Criteria.or(['is null', [col.field]], criteria);\r\n else\r\n criteria = ['is null', [col.field]];\r\n }\r\n\r\n request.Criteria = Serenity.Criteria.and(request.Criteria, criteria);\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n var oldOnViewFilter = (options.grid as any).onViewFilter;\r\n (options.grid as any).onViewFilter = function (item: any) {\r\n if (!oldOnViewFilter.apply(this, arguments))\r\n return false;\r\n\r\n var cols = this.slickGrid.getColumns() as Slick.Column[];\r\n for (var col of cols) {\r\n if (col.headerFilterType != HeaderFilterType.text)\r\n continue;\r\n\r\n var vals = col.headerFilterValues;\r\n if (vals && vals.length) {\r\n var filterValue = filterPlugin.getFilterValue(item, col);\r\n if (vals.indexOf(filterValue) < 0)\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n }\r\n }\r\n}"," \r\nnamespace Serenity {\r\n\r\n /** Auto save types */\r\n export const enum AutoSaveOption {\r\n /** Never auto save */\r\n Never = 0,\r\n /** Automatically save pending changes without asking */\r\n Auto = 1,\r\n /** Ask for confirmation from user to save pending changes */\r\n Confirm = 2\r\n }\r\n\r\n @Serenity.Decorators.registerClass('Serenity.EntityGridDialog', [Serenity['IEditDialog']])\r\n export class EntityGridDialog extends Serenity.EntityGrid {\r\n\r\n protected tabs: JQuery;\r\n protected validator: JQueryValidation.Validator;\r\n protected idPrefix: string;\r\n protected dialogPane: JQuery;\r\n protected entity: TItem;\r\n protected entityId: any;\r\n protected propertyGrid: PropertyGrid;\r\n\r\n protected isDialogOpen: boolean;\r\n protected saveAndCloseButton: JQuery;\r\n protected applyChangesButton: JQuery;\r\n protected deleteButton: JQuery;\r\n protected undeleteButton: JQuery;\r\n protected cloneButton: JQuery;\r\n\r\n protected localizationGrid: PropertyGrid;\r\n protected localizationButton: JQuery;\r\n protected localizationPendingValue: any;\r\n protected localizationLastValue: any;\r\n protected loadedState: string;\r\n protected triedAutoSaveForCurrentEntity: boolean;\r\n\r\n constructor(container: JQuery, opt?: TOptions) {\r\n super(container, opt);\r\n\r\n this.element.on('ondatachange.' + this.uniqueName, () => {\r\n this.subDialogDataChange();\r\n });\r\n\r\n this.element.on('handleroute.' + this.uniqueName, (e, arg) => {\r\n if (arg.handled)\r\n return;\r\n\r\n if (!arg.route && this.isDialogOpen) {\r\n this.dialogClose();\r\n }\r\n });\r\n\r\n $(window).on('resize.' + this.uniqueName, () => {\r\n this.arrange();\r\n });\r\n }\r\n\r\n protected createSlickGrid() {\r\n var slickGrid = super.createSlickGrid();\r\n\r\n this.idPrefix = this.uniqueName + '_DLG_';\r\n\r\n this.element.addClass('s-GridWithDialog');\r\n\r\n this.dialogPane = $(`
    `)\r\n .appendTo(this.slickContainer);\r\n\r\n var widgetMarkup = this.getTemplate().replace(new RegExp('~_', 'g'), this.idPrefix);\r\n this.dialogPane.html(widgetMarkup);\r\n\r\n this.initValidator();\r\n this.initTabs();\r\n this.initPropertyGrid();\r\n this.initLocalizationGrid();\r\n return slickGrid;\r\n }\r\n\r\n public destroy(): void {\r\n\r\n $(window).off('resize.' + this.uniqueName);\r\n\r\n if (this.propertyGrid) {\r\n this.propertyGrid.destroy();\r\n this.propertyGrid = null;\r\n }\r\n\r\n if (this.localizationGrid) {\r\n this.localizationGrid.destroy();\r\n this.localizationGrid = null;\r\n }\r\n this.undeleteButton = null;\r\n this.applyChangesButton = null;\r\n this.deleteButton = null;\r\n this.saveAndCloseButton = null;\r\n this.tabs && this.tabs.tabs('destroy');\r\n this.tabs = null;\r\n this.validator && this.byId('Form').remove();\r\n this.validator = null;\r\n super.destroy();\r\n }\r\n\r\n protected getItemCssClass(item: TItem, index: number) {\r\n var klass = super.getItemCssClass(item, index);\r\n\r\n if (this.isDialogOpen && this.entityId == item[this.getIdProperty()]) {\r\n return (klass || \"\") + \" editing-item\";\r\n }\r\n\r\n return klass;\r\n }\r\n\r\n getSaveState() {\r\n try {\r\n return $.toJSON(this.getSaveEntity());\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n protected hasPendingChanges() {\r\n return this.getSaveState() != this.loadedState;\r\n }\r\n\r\n protected autoSaveOnSwitch(): AutoSaveOption {\r\n return AutoSaveOption.Never;\r\n }\r\n\r\n protected autoSaveOnClose(): AutoSaveOption {\r\n return AutoSaveOption.Never;\r\n }\r\n\r\n protected checkPendingChangesOnSwitch(entityOrId: any, proceed: () => void) {\r\n if (this.isDialogOpen &&\r\n (typeof entityOrId == \"number\" || typeof entityOrId == \"string\")) {\r\n\r\n if (entityOrId == this.entityId)\r\n return;\r\n\r\n if (this.autoSaveOnSwitch() && this.hasPendingChanges()) {\r\n\r\n if (this.autoSaveOnSwitch() == AutoSaveOption.Confirm || this.triedAutoSaveForCurrentEntity) {\r\n Q.confirm(Q.text(\"Site.Dialogs.PendingChangesConfirmation\"),\r\n () => {\r\n this.save(response => {\r\n proceed();\r\n });\r\n },\r\n {\r\n onNo: () => {\r\n this.loadResponse({});\r\n proceed();\r\n }\r\n });\r\n }\r\n else {\r\n this.triedAutoSaveForCurrentEntity = true;\r\n this.save(response => {\r\n proceed();\r\n });\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n proceed();\r\n }\r\n\r\n protected editItem(entityOrId: any) {\r\n this.checkPendingChangesOnSwitch(entityOrId, () => {\r\n super.editItem(entityOrId);\r\n });\r\n }\r\n\r\n protected createEntityDialog(itemType: string, callback?: (dlg: Widget) => void): Widget {\r\n if (itemType == this.getItemType()) {\r\n callback && callback(this);\r\n return this;\r\n }\r\n\r\n return super.createEntityDialog(itemType, callback);\r\n }\r\n\r\n protected layout() {\r\n super.layout();\r\n }\r\n\r\n protected byId(id: string): JQuery {\r\n return $('#' + this.idPrefix + id);\r\n }\r\n\r\n private getDefaultTemplateName(): string {\r\n return Serenity.TemplatedDialog.prototype['getDefaultTemplateName'].call(this);\r\n }\r\n\r\n protected getTemplateName(): string {\r\n return Serenity.TemplatedDialog.prototype['getTemplateName'].call(this);\r\n }\r\n\r\n protected getFallbackTemplate(): string {\r\n return `
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    `;\r\n }\r\n\r\n protected getTemplate(): string {\r\n return Serenity.TemplatedDialog.prototype['getTemplate'].call(this);\r\n }\r\n\r\n protected getValidatorOptions(): JQueryValidation.ValidationOptions {\r\n return {};\r\n }\r\n\r\n protected initValidator(): void {\r\n var form = this.byId('Form');\r\n if (form.length > 0) {\r\n var valOptions = this.getValidatorOptions();\r\n this.validator = form.validate(Q.validateOptions(valOptions));\r\n }\r\n }\r\n\r\n protected resetValidation() {\r\n this.validator && (this.validator as any).resetAll();\r\n }\r\n\r\n protected validateForm() {\r\n return this.validator == null || !!this.validator.form();\r\n }\r\n\r\n public dialogOpen(): void {\r\n if (!this.isDialogOpen) {\r\n this.element.toggleClass(\"dialog-open\", true);\r\n this.isDialogOpen = true;\r\n this.updateInterface();\r\n this.layout();\r\n this.onDialogOpen();\r\n\r\n Q.Router.dialog(this.element, this.dialogPane, () => this.getEditHash());\r\n this.dialogPane.triggerHandler('panelopen');\r\n }\r\n }\r\n\r\n protected getEditHash() {\r\n if (this.entityId)\r\n return 'edit/' + this.entityId.toString();\r\n else\r\n return 'new';\r\n }\r\n\r\n protected onDialogOpen(): void {\r\n if (!$(document.body).hasClass('mobile-device'))\r\n $(':input', this.dialogPane).not('button').eq(0).focus();\r\n\r\n this.arrange();\r\n this.tabs && this.tabs.tabs('option', 'active', 0);\r\n }\r\n\r\n protected arrange(): void {\r\n if (window.innerWidth < 768) {\r\n this.dialogPane.children('.panel-titlebar')\r\n .prependTo(this.element);\r\n }\r\n else {\r\n this.element.children('.panel-titlebar')\r\n .prependTo(this.dialogPane);\r\n }\r\n\r\n this.dialogPane.find('.require-layout').filter(':visible').each(function (i, e) {\r\n $(e).triggerHandler('layout');\r\n });\r\n }\r\n\r\n protected onDialogClose() {\r\n $(document).trigger('click');\r\n\r\n if (($ as any).qtip) {\r\n $(document.body).children('.qtip').each(function (index, el) {\r\n ($(el) as any).qtip('hide');\r\n });\r\n }\r\n }\r\n\r\n protected getDialogTitle() {\r\n return \"\";\r\n }\r\n\r\n public dialogClose(): void {\r\n if (this.isDialogOpen) {\r\n this.triedAutoSaveForCurrentEntity = false;\r\n this.element.toggleClass(\"dialog-open\", false);\r\n this.isDialogOpen = false;\r\n this.updateInterface();\r\n this.layout();\r\n this.onDialogClose();\r\n this.dialogPane.triggerHandler('panelclose');\r\n }\r\n }\r\n\r\n public get dialogTitle(): string {\r\n return this.element.data('dialogtitle');\r\n }\r\n\r\n public set dialogTitle(value: string) {\r\n var oldTitle = this.dialogTitle;\r\n this.element.data('dialogtitle', value);\r\n if (oldTitle != this.dialogTitle) {\r\n this.setupDialogTitle();\r\n this.arrange();\r\n }\r\n }\r\n\r\n protected setupDialogTitle(): void {\r\n var value = Q.coalesce(this.dialogTitle, this.getDialogTitle());\r\n var pt = this.dialogPane.children('.panel-titlebar')\r\n .add(this.element.children('.panel-titlebar'));\r\n if (Q.isEmptyOrNull(value)) {\r\n pt.remove();\r\n }\r\n else {\r\n if (!pt.length) {\r\n pt = $(\"
    \")\r\n .prependTo(this.dialogPane);\r\n }\r\n pt.children('.panel-titlebar-text').text(value);\r\n if (!pt.children('.panel-titlebar-close').length) {\r\n $('')\r\n .prependTo(pt)\r\n .click(e => {\r\n if (this.autoSaveOnClose() && this.hasPendingChanges()) {\r\n e.preventDefault();\r\n\r\n if (this.autoSaveOnClose() == AutoSaveOption.Confirm || this.triedAutoSaveForCurrentEntity) {\r\n Q.confirm(Q.text(\"Site.Dialogs.PendingChangesConfirmation\"),\r\n () => this.saveAndCloseButton.click(),\r\n {\r\n onNo: () => {\r\n this.dialogClose();\r\n }\r\n });\r\n }\r\n else {\r\n this.triedAutoSaveForCurrentEntity = true;\r\n this.saveAndCloseButton.click();\r\n }\r\n }\r\n else\r\n this.dialogClose();\r\n });\r\n }\r\n }\r\n }\r\n\r\n protected initTabs(): void {\r\n var tabsDiv = this.byId('Tabs');\r\n if (tabsDiv.length === 0) {\r\n return;\r\n }\r\n this.tabs = tabsDiv.tabs({});\r\n this.tabs.bind('tabsactivate', () => this.arrange());\r\n }\r\n\r\n protected get_entity(): TItem {\r\n return this.entity;\r\n }\r\n\r\n protected set_entity(entity: any): void {\r\n this.entity = entity || new Object();\r\n }\r\n\r\n protected get_entityId(): any {\r\n return this.entityId;\r\n }\r\n\r\n protected set_entityId(value: any) {\r\n this.entityId = value;\r\n }\r\n\r\n protected getEntityNameFieldValue(): any {\r\n return Q.coalesce(this.get_entity()[this.getNameProperty()], '').toString();\r\n }\r\n\r\n protected getEntityTitle(): string {\r\n if (!this.isEditMode()) {\r\n return Q.format(Q.text('Controls.EntityDialog.NewRecordTitle'), this.getEntitySingular());\r\n }\r\n else {\r\n var title = Q.coalesce(this.getEntityNameFieldValue(), '');\r\n return Q.format(Q.text('Controls.EntityDialog.EditRecordTitle'),\r\n this.getEntitySingular(), (Q.isEmptyOrNull(title) ? '' : (' (' + title + ')')));\r\n }\r\n }\r\n\r\n protected updateTitle(): void {\r\n this.dialogTitle = this.getEntityTitle();\r\n }\r\n\r\n protected isCloneMode(): boolean {\r\n return false;\r\n }\r\n\r\n protected isEditMode(): boolean {\r\n return this.get_entityId() != null && !this.isCloneMode();\r\n }\r\n\r\n protected isDeleted(): boolean {\r\n if (this.get_entityId() == null) {\r\n return false;\r\n }\r\n\r\n var isDeletedProperty = this.getIsDeletedProperty();\r\n if (isDeletedProperty) {\r\n return !!this.get_entity()[isDeletedProperty];\r\n }\r\n\r\n var value = this.get_entity()[this.getIsActiveProperty()];\r\n if (value == null) {\r\n return false;\r\n }\r\n\r\n return value < 0;\r\n }\r\n\r\n protected isNew(): boolean {\r\n return this.get_entityId() == null;\r\n }\r\n\r\n protected isNewOrDeleted(): boolean {\r\n return this.isNew() || this.isDeleted();\r\n }\r\n\r\n protected getDeleteOptions(callback: (response: DeleteResponse) => void): ServiceOptions {\r\n return {};\r\n }\r\n\r\n protected deleteHandler(options: ServiceOptions, callback: (response: DeleteResponse) => void): void {\r\n Q.serviceCall(options);\r\n }\r\n\r\n protected doDelete(callback: (response: DeleteResponse) => void): void {\r\n var self = this;\r\n\r\n var request: DeleteRequest = {\r\n EntityId: this.get_entityId()\r\n };\r\n\r\n var baseOptions: Q.ServiceOptions = {\r\n service: this.getService() + '/Delete',\r\n request: request,\r\n onSuccess: response => {\r\n self.onDeleteSuccess(response);\r\n if (callback != null) {\r\n callback(response);\r\n }\r\n self.element.triggerHandler('ondatachange', [{\r\n entityId: request.EntityId,\r\n entity: this.entity,\r\n type: 'delete'\r\n }]);\r\n }\r\n };\r\n\r\n var thisOptions = this.getDeleteOptions(callback);\r\n var finalOptions = $.extend(baseOptions, thisOptions);\r\n\r\n this.deleteHandler(finalOptions, callback);\r\n }\r\n\r\n protected onDeleteSuccess(response: DeleteResponse): void {\r\n }\r\n\r\n protected attrs(attrType: { new(...args: any[]): TAttr }): TAttr[] {\r\n return (ss as any).getAttributes((ss as any).getInstanceType(this), attrType, true);\r\n }\r\n\r\n protected getEntityType(): string {\r\n\r\n var name = super.getEntityType();\r\n if (Q.endsWith(name, 'Grid')) {\r\n this['entityType'] = name = name.substr(0, name.length - 4);\r\n }\r\n\r\n return name;\r\n }\r\n\r\n private formKey: string;\r\n\r\n protected getFormKey(): string {\r\n if (this.formKey != null)\r\n return this.formKey;\r\n\r\n var attributes = this.attrs(FormKeyAttribute);\r\n\r\n if (attributes.length >= 1)\r\n return (this.formKey = attributes[0].value);\r\n\r\n return (this.formKey = this.getEntityType());\r\n }\r\n\r\n private entitySingular: string;\r\n\r\n protected getEntitySingular(): string {\r\n if (this.entitySingular != null)\r\n return this.entitySingular;\r\n\r\n var attributes = this.attrs(ItemNameAttribute);\r\n\r\n if (attributes.length >= 1) {\r\n this.entitySingular = attributes[0].value;\r\n this.entitySingular = Q.LT.getDefault(this.entitySingular, this.entitySingular);\r\n }\r\n else {\r\n var es = Q.tryGetText(this.getLocalTextDbPrefix() + 'EntitySingular');\r\n if (es == null)\r\n es = this.getEntityType();\r\n this.entitySingular = es;\r\n }\r\n\r\n return this.entitySingular;\r\n }\r\n\r\n private nameProperty: string;\r\n\r\n protected getNameProperty(): string {\r\n if (this.nameProperty != null)\r\n return this.nameProperty;\r\n\r\n var attributes = this.attrs(NamePropertyAttribute);\r\n\r\n if (attributes.length >= 1)\r\n this.nameProperty = attributes[0].value;\r\n else\r\n this.nameProperty = 'Name';\r\n\r\n return this.nameProperty;\r\n }\r\n\r\n protected getIsDeletedProperty(): string {\r\n return null;\r\n }\r\n\r\n load(entityOrId: any, done: () => void, fail: (ex: ss.Exception) => void): void {\r\n\r\n var action = () => {\r\n\r\n if (entityOrId == null) {\r\n this.loadResponse({});\r\n done && done();\r\n return;\r\n }\r\n\r\n var scriptType = typeof (entityOrId);\r\n if (scriptType === 'string' || scriptType === 'number') {\r\n var entityId = entityOrId;\r\n\r\n this.loadById(entityId, function (response) {\r\n if (done)\r\n window.setTimeout(done, 0);\r\n }, null);\r\n\r\n return;\r\n }\r\n\r\n var entity = entityOrId || new Object();\r\n this.loadResponse({ Entity: entity });\r\n done && done();\r\n };\r\n\r\n if (fail == null) {\r\n action();\r\n return;\r\n }\r\n\r\n try {\r\n action();\r\n }\r\n catch (ex1) {\r\n var ex = (ss.Exception as any).wrap(ex1);\r\n fail(ex);\r\n }\r\n }\r\n\r\n loadNewAndOpenDialog(): void {\r\n this.loadResponse({});\r\n this.dialogOpen();\r\n }\r\n\r\n loadEntityAndOpenDialog(entity: TItem, asPanel?: boolean): void {\r\n this.loadResponse({ Entity: entity });\r\n this.dialogOpen();\r\n }\r\n\r\n protected loadResponse(data: any): void {\r\n var oldEntityId = this.entityId;\r\n data = data || {};\r\n this.onLoadingData(data);\r\n var entity = data.Entity || new Object();\r\n this.beforeLoadEntity(entity);\r\n this.loadEntity(entity);\r\n this.set_entity(entity);\r\n this.afterLoadEntity();\r\n if (this.isDialogOpen && oldEntityId != this.entityId)\r\n Q.Router.replaceLast(this.getEditHash(), true);\r\n\r\n if (this.autoSaveOnClose() ||\r\n this.autoSaveOnSwitch()) {\r\n this.triedAutoSaveForCurrentEntity = false;\r\n this.loadedState = this.getSaveState();\r\n }\r\n }\r\n\r\n protected loadEntity(entity: TItem): void {\r\n var idField = this.getIdProperty();\r\n\r\n if (idField != null)\r\n this.set_entityId(entity[idField]);\r\n\r\n this.set_entity(entity);\r\n\r\n if (this.propertyGrid != null) {\r\n this.propertyGrid.set_mode((this.isEditMode() ?\r\n PropertyGridMode.update : PropertyGridMode.insert));\r\n this.propertyGrid.load(entity);\r\n }\r\n }\r\n\r\n protected beforeLoadEntity(entity: TItem): void {\r\n this.localizationPendingValue = null;\r\n this.localizationLastValue = null;\r\n }\r\n\r\n protected afterLoadEntity(): void {\r\n this.updateInterface();\r\n this.updateTitle();\r\n this.slickGrid.invalidate();\r\n }\r\n\r\n public loadByIdAndOpenDialog(entityId: any) {\r\n this.loadById(entityId,\r\n response => window.setTimeout(() => this.dialogOpen(), 0),\r\n () => {\r\n if (!this.element.is(':visible')) {\r\n this.element.remove();\r\n }\r\n });\r\n }\r\n\r\n protected onLoadingData(data: RetrieveResponse): void {\r\n }\r\n\r\n protected getLoadByIdOptions(id: any, callback: (response: RetrieveResponse) => void): ServiceOptions> {\r\n return {};\r\n }\r\n\r\n protected getLoadByIdRequest(id: any): RetrieveRequest {\r\n var request: RetrieveRequest = {};\r\n request.EntityId = id;\r\n return request;\r\n }\r\n\r\n protected reloadById(): void {\r\n this.loadById(this.get_entityId());\r\n }\r\n\r\n loadById(id: any, callback?: (response: RetrieveResponse) => void, fail?: () => void) {\r\n var baseOptions: Q.ServiceOptions> = {\r\n service: this.getService() + '/Retrieve',\r\n blockUI: true,\r\n request: this.getLoadByIdRequest(id),\r\n onSuccess: response => {\r\n this.loadResponse(response);\r\n callback && callback(response);\r\n },\r\n onCleanup: () => {\r\n if (this.validator != null) {\r\n Q.validatorAbortHandler(this.validator);\r\n }\r\n }\r\n };\r\n\r\n var thisOptions = this.getLoadByIdOptions(id, callback);\r\n var finalOptions = $.extend(baseOptions, thisOptions);\r\n this.loadByIdHandler(finalOptions, callback, fail);\r\n }\r\n\r\n protected loadByIdHandler(options: ServiceOptions>, callback: (response: RetrieveResponse) => void, fail: () => void): void {\r\n var request = Q.serviceCall(options);\r\n fail && request.fail(fail);\r\n }\r\n\r\n protected initLocalizationGrid(): void {\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return;\r\n }\r\n var pgOptions = this.getPropertyGridOptions();\r\n this.initLocalizationGridCommon(pgOptions);\r\n }\r\n\r\n protected initLocalizationGridCommon(pgOptions: PropertyGridOptions) {\r\n var pgDiv = this.byId('PropertyGrid');\r\n\r\n if (!Q.any(pgOptions.items, x => x.localizable === true))\r\n return;\r\n\r\n var localGridDiv = $('
    ')\r\n .attr('id', this.idPrefix + 'LocalizationGrid')\r\n .hide().insertAfter(pgDiv);\r\n\r\n pgOptions.idPrefix = this.idPrefix + 'Localization_';\r\n\r\n var items: PropertyItem[] = [];\r\n for (var item1 of pgOptions.items) {\r\n var langs = null;\r\n\r\n if (item1.localizable === true) {\r\n var copy = $.extend({}, item1) as any;\r\n copy.oneWay = true;\r\n copy.readOnly = true;\r\n copy.required = false;\r\n copy.defaultValue = null;\r\n items.push(copy);\r\n\r\n if (langs == null)\r\n langs = this.getLangs();\r\n\r\n for (var lang of langs) {\r\n copy = $.extend({}, item1);\r\n copy.name = lang[0] + '$' + copy.name;\r\n copy.title = lang[1];\r\n copy.cssClass = [copy.cssClass, 'translation'].join(' ');\r\n copy.insertable = true;\r\n copy.updatable = true;\r\n copy.oneWay = false;\r\n copy.required = false;\r\n copy.localizable = false;\r\n copy.defaultValue = null;\r\n items.push(copy);\r\n }\r\n }\r\n }\r\n\r\n pgOptions.items = items;\r\n\r\n this.localizationGrid = (new Serenity.PropertyGrid(localGridDiv, pgOptions)).init(null);\r\n localGridDiv.addClass('s-LocalizationGrid');\r\n }\r\n\r\n protected isLocalizationMode(): boolean {\r\n return this.localizationButton != null && this.localizationButton.hasClass('pressed');\r\n }\r\n\r\n protected isLocalizationModeAndChanged(): boolean {\r\n if (!this.isLocalizationMode()) {\r\n return false;\r\n }\r\n\r\n var newValue = this.getLocalizationGridValue();\r\n return $.toJSON(this.localizationLastValue) != $.toJSON(newValue);\r\n }\r\n\r\n protected localizationButtonClick(): void {\r\n if (this.isLocalizationMode() && !this.validateForm()) {\r\n return;\r\n }\r\n\r\n if (this.isLocalizationModeAndChanged()) {\r\n var newValue = this.getLocalizationGridValue();\r\n this.localizationLastValue = newValue;\r\n this.localizationPendingValue = newValue;\r\n }\r\n\r\n this.localizationButton.toggleClass('pressed');\r\n this.updateInterface();\r\n if (this.isLocalizationMode()) {\r\n this.loadLocalization();\r\n }\r\n }\r\n\r\n protected getLanguages(): any[] {\r\n if (Serenity.EntityDialog.defaultLanguageList != null)\r\n return Serenity.EntityDialog.defaultLanguageList() || [];\r\n\r\n return [];\r\n }\r\n\r\n // for compatibility with older getLanguages methods written in Saltaralle\r\n private getLangs(): any {\r\n\r\n var langsTuple = this.getLanguages();\r\n var langs = (ss as any).safeCast(langsTuple, Array);\r\n if (langs == null || langs.length === 0 ||\r\n langs[0] == null || !Q.isArray(langs[0])) {\r\n langs = Array.prototype.slice.call(langsTuple.map(function (x: any) {\r\n return [x.item1, x.item2];\r\n }));\r\n }\r\n\r\n return langs;\r\n }\r\n\r\n protected loadLocalization(): void {\r\n if (this.localizationLastValue == null && this.isNew()) {\r\n this.localizationGrid.load({});\r\n this.setLocalizationGridCurrentValues();\r\n this.localizationLastValue = this.getLocalizationGridValue();\r\n return;\r\n }\r\n\r\n if (this.localizationLastValue != null) {\r\n this.localizationGrid.load(this.localizationLastValue);\r\n this.setLocalizationGridCurrentValues();\r\n return;\r\n }\r\n\r\n var opt = >{\r\n service: this.getService() + '/Retrieve',\r\n blockUI: true,\r\n request: {\r\n EntityId: this.get_entityId(),\r\n ColumnSelection: 'keyOnly',\r\n IncludeColumns: ['Localizations']\r\n },\r\n onSuccess: response => {\r\n var copy = $.extend(new Object(), this.get_entity());\r\n if (response.Localizations) {\r\n for (var language of Object.keys(response.Localizations)) {\r\n var entity = response.Localizations[language];\r\n for (var key of Object.keys(entity)) {\r\n copy[language + '$' + key] = entity[key];\r\n }\r\n }\r\n }\r\n\r\n this.localizationGrid.load(copy);\r\n this.setLocalizationGridCurrentValues();\r\n this.localizationPendingValue = null;\r\n this.localizationLastValue = this.getLocalizationGridValue();\r\n }\r\n };\r\n\r\n Q.serviceCall(opt);\r\n }\r\n\r\n protected setLocalizationGridCurrentValues(): void {\r\n var valueByName = {};\r\n\r\n this.localizationGrid.enumerateItems((item, widget) => {\r\n if (item.name.indexOf('$') < 0 && widget.element.is(':input')) {\r\n valueByName[item.name] = this.byId(item.name).val();\r\n widget.element.val(valueByName[item.name]);\r\n }\r\n });\r\n\r\n this.localizationGrid.enumerateItems((item1, widget1) => {\r\n var idx = item1.name.indexOf('$');\r\n if (idx >= 0 && widget1.element.is(':input')) {\r\n var hint = valueByName[item1.name.substr(idx + 1)];\r\n if (hint != null && hint.length > 0) {\r\n widget1.element.attr('title', hint).attr('placeholder', hint);\r\n }\r\n }\r\n });\r\n }\r\n\r\n protected getLocalizationGridValue(): any {\r\n var value = {};\r\n this.localizationGrid.save(value);\r\n\r\n for (var k of Object.keys(value)) {\r\n if (k.indexOf('$') < 0) {\r\n delete value[k];\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n protected getPendingLocalizations(): any {\r\n if (this.localizationPendingValue == null) {\r\n return null;\r\n }\r\n\r\n var result: Q.Dictionary = {};\r\n var idField = this.getIdProperty();\r\n var langs = this.getLangs();\r\n\r\n for (var pair of langs) {\r\n var language = pair[0];\r\n var entity: any = {};\r\n\r\n if (idField != null) {\r\n entity[idField] = this.get_entityId();\r\n }\r\n\r\n var prefix = language + '$';\r\n\r\n for (var k of Object.keys(this.localizationPendingValue)) {\r\n if (Q.startsWith(k, prefix))\r\n entity[k.substr(prefix.length)] = this.localizationPendingValue[k];\r\n }\r\n\r\n result[language] = entity;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n protected initPropertyGrid(): void {\r\n var pgDiv = this.byId('PropertyGrid');\r\n if (pgDiv.length <= 0) {\r\n return;\r\n }\r\n var pgOptions = this.getPropertyGridOptions();\r\n this.propertyGrid = (new Serenity.PropertyGrid(pgDiv, pgOptions)).init(null);\r\n if (this.element.closest('.ui-dialog').hasClass('s-Flexify')) {\r\n this.propertyGrid.element.children('.categories').flexHeightOnly(1);\r\n }\r\n }\r\n\r\n protected getFormPropertyItems() {\r\n var formKey = this.getFormKey();\r\n return Q.getForm(formKey);\r\n }\r\n\r\n protected getPropertyGridOptions(): PropertyGridOptions {\r\n return {\r\n idPrefix: this.idPrefix,\r\n items: this.getFormPropertyItems(),\r\n mode: PropertyGridMode.insert,\r\n localTextPrefix: 'Forms.' + this.getFormKey() + '.',\r\n useCategories: true\r\n };\r\n }\r\n\r\n protected validateBeforeSave(): boolean {\r\n return true;\r\n }\r\n\r\n protected getSaveOptions(callback: (response: SaveResponse) => void): ServiceOptions {\r\n\r\n var opt: Q.ServiceOptions = {};\r\n\r\n opt.service = this.getService() + '/' + (this.isEditMode() ? 'Update' : 'Create'),\r\n\r\n opt.onSuccess = response => {\r\n this.triedAutoSaveForCurrentEntity = false;\r\n this.onSaveSuccess(response);\r\n\r\n callback && callback(response);\r\n\r\n var typ = (this.isEditMode() ? 'update' : 'create');\r\n\r\n var ent = opt.request == null ? null : opt.request.Entity;\r\n var eid: any = this.isEditMode() ? this.get_entityId() :\r\n (response == null ? null : response.EntityId);\r\n\r\n var dci = {\r\n type: typ,\r\n entity: ent,\r\n entityId: eid\r\n };\r\n\r\n this.element.triggerHandler('ondatachange', [dci]);\r\n };\r\n\r\n opt.onCleanup = () => {\r\n this.validator && Q.validatorAbortHandler(this.validator);\r\n };\r\n\r\n opt.request = this.getSaveRequest();\r\n\r\n return opt;\r\n }\r\n\r\n protected getSaveEntity(): TItem {\r\n\r\n var entity: TItem = new Object() as any;\r\n\r\n if (this.propertyGrid != null) {\r\n this.propertyGrid.save(entity);\r\n }\r\n\r\n if (this.isEditMode()) {\r\n var idField = this.getIdProperty();\r\n if (idField != null && entity[idField] == null) {\r\n entity[idField] = this.get_entityId();\r\n }\r\n }\r\n\r\n return entity;\r\n }\r\n\r\n protected getSaveRequest(): SaveRequest {\r\n\r\n var entity = this.getSaveEntity();\r\n var req: SaveRequest = {};\r\n req.Entity = entity;\r\n\r\n if (this.isEditMode()) {\r\n var idField = this.getIdProperty();\r\n if (idField != null) {\r\n req.EntityId = this.get_entityId();\r\n }\r\n }\r\n\r\n if (this.localizationPendingValue != null) {\r\n req.Localizations = this.getPendingLocalizations();\r\n }\r\n\r\n return req;\r\n }\r\n\r\n protected onSaveSuccess(response: SaveResponse): void {\r\n }\r\n\r\n protected save_submitHandler(callback: (response: SaveResponse) => void): void {\r\n var options = this.getSaveOptions(callback);\r\n this.saveHandler(options, callback);\r\n }\r\n\r\n protected save(callback?: (response: SaveResponse) => void): void | boolean {\r\n return Serenity.ValidationHelper.submit(this.byId('Form'),\r\n () => this.validateBeforeSave(),\r\n () => this.save_submitHandler(callback));\r\n }\r\n\r\n protected saveHandler(options: ServiceOptions,\r\n callback: (response: SaveResponse) => void): void {\r\n Q.serviceCall(options);\r\n }\r\n\r\n protected createToolbar(buttons: ToolButton[]) {\r\n\r\n super.createToolbar(buttons);\r\n\r\n if (!this.toolbar)\r\n return;\r\n\r\n this.saveAndCloseButton = this.toolbar.findButton('save-and-close-button').hide();\r\n this.saveAndCloseButton.prev('.separator').addClass('dialog-button-separator');\r\n this.applyChangesButton = this.toolbar.findButton('apply-changes-button').hide();\r\n this.deleteButton = this.toolbar.findButton('delete-button').hide();\r\n this.undeleteButton = this.toolbar.findButton('undo-delete-button').hide();\r\n this.cloneButton = this.toolbar.findButton('clone-button').hide();\r\n this.localizationButton = this.toolbar.findButton('localization-button').hide();\r\n }\r\n\r\n protected showSaveSuccessMessage(response: SaveResponse): void {\r\n Q.notifySuccess(Q.text('Controls.EntityDialog.SaveSuccessMessage'), '', null);\r\n }\r\n\r\n protected getButtons(): ToolButton[] {\r\n\r\n var list = super.getButtons();\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.SaveButton'),\r\n cssClass: 'save-and-close-button dialog-button',\r\n hotkey: 'alt+s',\r\n separator: true,\r\n onClick: () => {\r\n this.save(response => {\r\n this.dialogClose();\r\n });\r\n }\r\n });\r\n\r\n list.push({\r\n title: '',\r\n hint: Q.text('Controls.EntityDialog.ApplyChangesButton'),\r\n cssClass: 'apply-changes-button dialog-button',\r\n hotkey: 'alt+a',\r\n onClick: () => {\r\n this.save(response1 => {\r\n\r\n if (this.isEditMode()) {\r\n var id1 = response1.EntityId;\r\n if (id1 == null) {\r\n id1 = this.get_entityId();\r\n }\r\n this.loadById(id1);\r\n }\r\n else {\r\n this.loadById(response1.EntityId);\r\n }\r\n\r\n this.showSaveSuccessMessage(response1);\r\n });\r\n }\r\n });\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.DeleteButton'),\r\n cssClass: 'delete-button dialog-button',\r\n hotkey: 'alt+x',\r\n onClick: () => {\r\n Q.confirm(Q.text('Controls.EntityDialog.DeleteConfirmation'), () => {\r\n this.doDelete(() => this.dialogClose());\r\n });\r\n }\r\n });\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.UndeleteButton'),\r\n cssClass: 'undo-delete-button dialog-button',\r\n onClick: () => {\r\n if (this.isDeleted()) {\r\n Q.confirm(Q.text('Controls.EntityDialog.UndeleteConfirmation'), () => {\r\n this.undelete(() => this.loadById(this.get_entityId()));\r\n });\r\n }\r\n }\r\n });\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.LocalizationButton'),\r\n cssClass: 'localization-button dialog-button',\r\n onClick: () => this.localizationButtonClick()\r\n });\r\n\r\n list.push({\r\n title: Q.text('Controls.EntityDialog.CloneButton'),\r\n cssClass: 'clone-button dialog-button',\r\n onClick: () => {\r\n\r\n if (!this.isEditMode()) {\r\n return;\r\n }\r\n\r\n var cloneEntity = this.getCloningEntity();\r\n\r\n Serenity.Widget.create({\r\n type: (ss as any).getInstanceType(this),\r\n init: w => Serenity.SubDialogHelper.bubbleDataChange(\r\n Serenity.SubDialogHelper.cascade(w, this.element), this, true)\r\n .loadEntityAndOpenDialog(cloneEntity, null)\r\n });\r\n }\r\n });\r\n\r\n return list;\r\n }\r\n\r\n protected getCloningEntity(): TItem {\r\n\r\n var clone: TItem = new Object() as any;\r\n clone = $.extend(clone, this.get_entity());\r\n\r\n var idField = this.getIdProperty();\r\n if (!Q.isEmptyOrNull(idField)) {\r\n delete clone[idField];\r\n }\r\n\r\n var isActiveField = this.getIsActiveProperty();\r\n if (!Q.isEmptyOrNull(isActiveField)) {\r\n delete clone[isActiveField];\r\n }\r\n\r\n var isDeletedField = this.getIsDeletedProperty();\r\n if (!Q.isEmptyOrNull(isDeletedField)) {\r\n delete clone[isDeletedField];\r\n }\r\n\r\n return clone;\r\n }\r\n\r\n protected updateInterface(): void {\r\n\r\n var isOpen = this.isDialogOpen;\r\n var isDeleted = this.isDeleted();\r\n var isLocalizationMode = this.isLocalizationMode();\r\n\r\n if (this.tabs != null) {\r\n Serenity.TabsExtensions.setDisabled(this.tabs, 'Log', !isOpen || this.isNewOrDeleted());\r\n }\r\n\r\n if (this.propertyGrid != null) {\r\n this.propertyGrid.element.toggle(isOpen && !isLocalizationMode);\r\n }\r\n\r\n if (this.localizationGrid != null) {\r\n this.localizationGrid.element.toggle(isOpen && isLocalizationMode);\r\n }\r\n\r\n if (this.localizationButton != null) {\r\n this.localizationButton.toggle(this.localizationGrid != null);\r\n this.localizationButton.find('.button-inner')\r\n .text((this.isLocalizationMode() ?\r\n Q.text('Controls.EntityDialog.LocalizationBack') :\r\n Q.text('Controls.EntityDialog.LocalizationButton')));\r\n }\r\n\r\n if (isLocalizationMode && isOpen) {\r\n\r\n if (this.toolbar != null)\r\n this.toolbar.findButton('tool-button')\r\n .not('.localization-hidden')\r\n .addClass('.localization-hidden').hide();\r\n\r\n this.localizationButton && this.localizationButton.show();\r\n\r\n return;\r\n }\r\n\r\n this.toolbar.findButton('localization-hidden')\r\n .removeClass('localization-hidden').show();\r\n\r\n this.deleteButton && this.deleteButton.toggle(isOpen && this.isEditMode() && !isDeleted);\r\n this.undeleteButton && this.undeleteButton.toggle(isOpen && this.isEditMode() && isDeleted);\r\n\r\n if (this.saveAndCloseButton) {\r\n this.saveAndCloseButton.toggle(isOpen && !isDeleted);\r\n this.saveAndCloseButton.find('.button-inner')\r\n .text(Q.text((this.isNew() ? 'Controls.EntityDialog.SaveButton' :\r\n 'Controls.EntityDialog.UpdateButton')));\r\n }\r\n\r\n this.applyChangesButton && this.applyChangesButton.toggle(isOpen && !isDeleted);\r\n this.cloneButton && this.cloneButton.toggle(false);\r\n }\r\n\r\n protected getUndeleteOptions(callback?: (response: UndeleteResponse) => void): ServiceOptions {\r\n return {}\r\n }\r\n\r\n protected undeleteHandler(options: ServiceOptions, callback: (response: UndeleteResponse) => void): void {\r\n Q.serviceCall(options);\r\n }\r\n\r\n protected undelete(callback?: (response: UndeleteResponse) => void): void {\r\n var baseOptions: Q.ServiceOptions = {};\r\n baseOptions.service = this.getService() + '/Undelete';\r\n\r\n var request: UndeleteRequest = {};\r\n request.EntityId = this.get_entityId();\r\n\r\n baseOptions.request = request;\r\n baseOptions.onSuccess = response => {\r\n callback && callback(response);\r\n this.element.triggerHandler('ondatachange', [{\r\n entityId: this.get_entityId(),\r\n entity: this.entity,\r\n type: 'undelete'\r\n }]);\r\n };\r\n\r\n var thisOptions = this.getUndeleteOptions(callback);\r\n var finalOptions = $.extend(baseOptions, thisOptions);\r\n this.undeleteHandler(finalOptions, callback);\r\n }\r\n }\r\n}"]}