{"version":3,"file":"Serenity.Pro.App.js","sourceRoot":"","sources":["../App/Formatters/SingleLineTextFormatter.ts","../App/Wizards/WizardDialog.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"],"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 /**\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 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 this.addGroupByRemoveClickHandler(col.id, container, 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 private addGroupByRemoveClickHandler(id: string, container: JQuery, entry: JQuery) {\r\n $(\"#\" + this.gridUid + id + \"_entry >.slick-groupby-remove\")\r\n .one('click', () => {\r\n this.removeGroupBy(id, entry);\r\n });\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 columnDef.headerFilterValues = Array['from'](this.checkedValues);\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 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}"]}