{"version":3,"file":"kendo.pivot.fieldmenu.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendopivot","fieldmenu","js","this","$","undefined$1","kendo","window","ui","keys","encode","htmlEncode","MENU","NS","KEYBOARD_NS","PIVOT_SETTING_TARGET_V2","Widget","DOT","COLUMN_FIELDS","FILTER_ITEM","ARIA_LABEL","EXPANSIONPANEL","PivotFieldMenuV2","extend","init","element","options","fn","call","_dataSource","_layout","notify","events","name","animation","expand","effects","duration","collapse","hide","reverse","filter","filterable","sortable","messages","apply","sortAscending","sortDescending","filterFields","include","clear","reset","moveToColumns","moveToRows","movePrevious","moveNext","filterOperatorsDropDownLabel","filterValueTextBoxLabel","operators","contains","doesnotcontain","startswith","endswith","eq","neq","destroy","menu","off","_applyProxy","_resetIncludes","wrapper","treeView","setDataSource","dataSource","_createExpanders","that","expanderOptions","expanded","headerClass","wrapperClass","useBareTemplate","find","title","icon","_getSettingTargets","columnsSettingTarget","parent","data","measuresSettingTarget","rowsSettingTarget","_createTreeView","_includesCache","TreeView","autoBind","_treeViewDataSource","dataTextField","template","ref","item","caption","check","e","dataItem","sender","node","uniqueName","checkboxes","checkChildren","PivotDataSourceV2","create","MENUTEMPLATEV2","ns","renderAll","setting","applyStylesFromKendoAttributes","on","ev","nextFocusable","key","keyCode","focusableElementsSelector","allFocusable","isMenuCurrentlyFocused","_activeElement","currentlyFocused","parents","closest","last","TAB","shiftKey","index","length","removeClass","is","trigger","_moveHover","preventDefault","stopImmediatePropagation","ENTER","target","orientation","showOn","closeOnClick","open","_menuOpen","bind","close","_closeMenu","activate","_activateMenu","deactivate","_deactivateMenu","copyAnchorStyles","_checkActiveProxy","focusedElement","firstItem","first","_initFilterForm","_attachFilterHandlers","_clickHandler","_click","chip","configuratorElement","attr","activeElement","_filterOperator","hasClass","HierarchicalDataSource","schema","model","id","hasChildren","parseInt","childrenCardinality","transport","read","catalog","cube","restrictions","fetchOptions","get","nodes","cubeSchema","members","currentMember","_getFilterStorage","findFilters","member","checked","values","idx","filters","operator","indexOf","map","ftr","value","inArray","checkNodesLocal","success","catalogName","cubeName","command","memberUniqueName","replace","treeOp","levelUniqueName","connection","discover","then","checkNodes","_storeFilterForm","_filterStorage","_filterValue","val","_clearFilterStorage","currentTarget","_sort","_move","_applyIncludesProxy","_applyIncludes","_resetIncludesProxy","_includesHandler","newExpression","view","nonCheckedNodes","removeFilters","logic","nodeIds","push","field","includeLocalExpression","resultExpression","checkedNodes","rootChecked","existingExpression","splice","join","includeExpression","_preventRefresh","checkbox","prop","_checkboxChange","filterForm","filterProxy","_filter","DropDownList","popup","appendTo","document","body","_filterForm","_updateFilterAriaLabel","_reset","selectedOperator","selectedOperatorName","convert","expression","toRemove","removeFilterByValue","_setFilterForm","filterOperator","select","_collapseItems","items","each","ind","el","nextAll","dir","expressions","sort","removeExpr","action","currentMemberIndex","_moveToColumns","_moveToRows","_changeOrder","_updateDisabledState","currentSettingTarget","targetLabel","prev","text","addClass","children","remove","add","move","event","filterBox","schemaCube","_hovered","memberType","toLowerCase","show","_oldCurrentmember","PivotFieldMenu","info","ok","cancel","MENUTEMPLATE","_select","_createWindow","_clearFilters","PivotDataSource","includeWindow","WINDOWTEMPLATE","_closeWindow","Window","visible","resizable","_windowOpen","schemaMembers","done","fail","error","dataBound","progress","not","kendoWindow","center","fields","type","parseFloat","Boolean","parseJSON","result","operatorInUse","isLocal","split","checkState","level","html","renderButton","themeColor","Object","op","MOVE_OPERATIONS_TEMPLATE","MENU_TEMPLATE_FILTERABLE_PARTIAL","LABELMENUTEMPLATE","MENU_TEMPLATE_SORTABLE_PARTIAL","plugin","jQuery"],"sources":["kendo.pivot.fieldmenu.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.pivotgrid.js'), require('kendo.menu.js'), require('kendo.window.js'), require('kendo.treeview.js'), require('kendo.dropdownlist.js'), require('kendo.icons.js'), require('kendo.expansionpanel.js'), require('kendo.html.button.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.pivotgrid', 'kendo.menu', 'kendo.window', 'kendo.treeview', 'kendo.dropdownlist', 'kendo.icons', 'kendo.expansionpanel', 'kendo.html.button'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendopivot = global.kendopivot || {}, global.kendopivot.fieldmenu = global.kendopivot.fieldmenu || {}, global.kendopivot.fieldmenu.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"pivot.fieldmenu\",\n name: \"PivotFieldMenu\",\n category: \"web\",\n description: \"The PivotFieldMenu widget allows the user to filter on fields displayed in PivotGrid\",\n depends: [ \"menu\", \"window\", \"treeview\", \"treeview.draganddrop\", \"dropdownlist\", \"icons\", 'expansionpanel', 'html.button' ],\n advanced: true\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo;\n var ui = kendo.ui;\n var keys = kendo.keys;\n var encode = kendo.htmlEncode;\n var MENU = \"kendoContextMenu\";\n var NS = \".kendoPivotFieldMenu\";\n var KEYBOARD_NS = \".kendoPivotFieldMenuKeyboard\";\n var PIVOT_SETTING_TARGET_V2 = \"kendoPivotSettingTargetV2\";\n var Widget = ui.Widget;\n var DOT = \".\";\n var CHIP_LIST = \"k-chip-list\";\n var ROW_FIELDS = \"k-row-fields\";\n var COLUMN_FIELDS = \"k-column-fields\";\n var FILTER_ITEM = \"k-filter-item\";\n var ARIA_LABEL = \"aria-label\",\n EXPANSIONPANEL = \"kendoExpansionPanel\";\n\n var PivotFieldMenuV2 = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this._dataSource();\n\n this._layout();\n\n kendo.notify(this);\n },\n\n events: [],\n\n options: {\n name: \"PivotFieldMenuV2\",\n animation: {\n expand: {\n effects: \"expand:vertical\",\n duration: 200\n },\n collapse: {\n duration: 200,\n effects: \"expand:vertical\",\n hide: true,\n reverse: true\n }\n },\n filter: null,\n filterable: true,\n sortable: true,\n messages: {\n apply: \"Apply\",\n sortAscending: \"Sort Ascending\",\n sortDescending: \"Sort Descending\",\n filterFields: \"Fields Filter\",\n filter: \"Filter\",\n include: \"Include Fields...\",\n clear: \"Clear\",\n reset: \"Reset\",\n moveToColumns: \"Move to Columns\",\n moveToRows: \"Move to Rows\",\n movePrevious: \"Move previous\",\n moveNext: \"Move next\",\n filterOperatorsDropDownLabel: \"Region Filter Operators\",\n filterValueTextBoxLabel: \"Region Filter Value\",\n operators: {\n contains: \"Contains\",\n doesnotcontain: \"Does not contain\",\n startswith: \"Starts with\",\n endswith: \"Ends with\",\n eq: \"Is equal to\",\n neq: \"Is not equal to\"\n }\n }\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n if (this.menu) {\n this.menu.element.off(NS);\n this.menu.element.off(KEYBOARD_NS);\n this.menu.destroy();\n this.menu = null;\n this._applyProxy = this._resetIncludes = null;\n }\n\n if (this.wrapper) {\n this.wrapper.off(KEYBOARD_NS);\n }\n\n if (this.treeView) {\n this.treeView.destroy();\n this.treeView = null;\n }\n\n this.wrapper = null;\n this.element = null;\n },\n\n setDataSource: function(dataSource) {\n this.options.dataSource = dataSource;\n\n this._dataSource();\n },\n\n _createExpanders: function() {\n var that = this;\n var options = that.options;\n var expanderOptions = {\n expanded: false,\n headerClass: \"k-columnmenu-item\",\n wrapperClass: \"k-item\",\n useBareTemplate: true\n };\n\n that.wrapper.find(\".k-columns-item\")[EXPANSIONPANEL]($.extend(true, {}, expanderOptions,{\n title: kendo.ui.icon(\"grid-layout\") + '' + encode(options.messages.include) + ''\n }));\n that.wrapper.find(\".k-column-menu-filter\")[EXPANSIONPANEL]($.extend(true, {}, expanderOptions,{\n title: kendo.ui.icon(\"filter\") + '' + encode(options.messages.filterFields) + ''\n }));\n },\n\n _getSettingTargets: function() {\n this.columnsSettingTarget = this.element.parent().find(DOT + COLUMN_FIELDS).eq(0).data(PIVOT_SETTING_TARGET_V2);\n this.measuresSettingTarget = this.element.parent().find(DOT + COLUMN_FIELDS).eq(1).data(PIVOT_SETTING_TARGET_V2);\n this.rowsSettingTarget = this.element.parent().find(DOT + ROW_FIELDS).data(PIVOT_SETTING_TARGET_V2);\n },\n\n _createTreeView: function(element) {\n var that = this;\n\n that._includesCache = {};\n\n that.treeView = new ui.TreeView(element, {\n autoBind: false,\n dataSource: that._treeViewDataSource(),\n dataTextField: \"caption\",\n template: function (ref) {\n var item = ref.item;\n\n return (\"\" + (encode(item.caption || item.name)));\n },\n check: function(e) {\n /* The result can be observed in the DevTools(F12) console of the browser. */\n var dataItem = e.sender.dataItem(e.node);\n if (that._includesCache[dataItem.uniqueName]) {\n delete that._includesCache[dataItem.uniqueName];\n } else {\n that._includesCache[dataItem.uniqueName] = e.node;\n }\n },\n checkboxes: {\n checkChildren: true\n }\n });\n },\n\n _dataSource: function() {\n this.dataSource = kendo.data.PivotDataSourceV2.create(this.options.dataSource);\n },\n\n _layout: function() {\n var that = this;\n var options = that.options;\n\n that.wrapper = $(kendo.template(MENUTEMPLATEV2)({\n ns: kendo.ns,\n filterable: options.filterable,\n sortable: options.sortable,\n messages: options.messages,\n renderAll: options.setting !== \"measures\"\n }));\n\n kendo.applyStylesFromKendoAttributes(that.wrapper, [\"overflow\"]);\n that._createExpanders();\n\n that.wrapper.on(\"keydown\" + KEYBOARD_NS, function(ev) {\n var key = ev.keyCode;\n var menu = that.menu;\n var focusableElementsSelector = \".k-columnmenu-item:visible,.k-treeview:visible,button.k-button:visible,.k-picker:visible,.k-input input.k-input-inner:visible\";\n var allFocusable = that.menu.element.find(focusableElementsSelector);\n var isMenuCurrentlyFocused = kendo._activeElement() == that.menu.element[0];\n var currentlyFocused = $(kendo._activeElement()).parents(\".k-pivotgrid-column-menu\")[0] == that.menu.element[0] ? $(kendo._activeElement()).closest(focusableElementsSelector) : that.menu.element.find(\".k-focus:not(.k-expander):not(.k-treeview-item)\").last();\n var nextFocusable;\n\n if (key == keys.TAB) {\n if (ev.shiftKey) {\n nextFocusable = allFocusable.eq(currentlyFocused[0] ? (allFocusable.index(currentlyFocused) + allFocusable.length - 1) % allFocusable.length : 0);\n } else {\n nextFocusable = allFocusable.eq(currentlyFocused[0] ? (allFocusable.index(currentlyFocused) + 1) % allFocusable.length : 0);\n }\n\n menu.element.find(\".k-focus\").removeClass(\"k-focus\");\n if (nextFocusable.is(\".k-item\")) {\n if (!isMenuCurrentlyFocused) {\n menu.element.trigger(\"focus\");\n }\n\n // fix for the incorrectly focused popup element instead of first item\n // due to custom templates used\n menu.element.find(\".k-focus\").removeClass(\"k-focus\");\n menu._moveHover(currentlyFocused, nextFocusable);\n } else {\n nextFocusable.trigger(\"focus\");\n }\n\n ev.preventDefault();\n ev.stopImmediatePropagation();\n } else if (key == keys.ENTER) {\n currentlyFocused.trigger(\"click\");\n ev.preventDefault();\n ev.stopImmediatePropagation();\n }\n });\n\n that.menu = that.wrapper[MENU]({\n filter: options.filter,\n target: that.element,\n orientation: \"vertical\",\n showOn: \"click\",\n closeOnClick: false,\n open: this._menuOpen.bind(this),\n close: this._closeMenu.bind(this),\n activate: this._activateMenu.bind(this),\n deactivate: this._deactivateMenu.bind(this),\n copyAnchorStyles: false\n }).data(MENU);\n\n that.menu.element.off(\"blur.kendoMenu\", \"[tabindex]\", that.menu._checkActiveProxy);\n // fix to focus the first item instead of the popup element\n that.menu.element.on(\"focus\" + KEYBOARD_NS, function(ev) {\n var focusedElement = $((\"#\" + (that.menu._ariaId)));\n if (focusedElement.is(\".k-pivotgrid-column-menu-popup\")) {\n if (that.menu.element.find(\".k-columnmenu-item:visible\").length) {\n var firstItem = that.menu.element.find(\".k-columnmenu-item:visible\").first();\n that.menu._moveHover(focusedElement, firstItem);\n }\n }\n });\n\n if (options.filterable) {\n that._initFilterForm();\n that._attachFilterHandlers();\n that._createTreeView(that.wrapper.find(\".k-treeview\"));\n }\n\n that._clickHandler = that._click.bind(that);\n that.wrapper.on(\"click\", \".k-item:not([role='treeitem'])\", that._clickHandler);\n },\n\n _activateMenu: function(e) {\n var that = this;\n if (that.menu.element.find(\".k-columnmenu-item:visible\").length) {\n var firstItem = that.menu.element.find(\".k-columnmenu-item:visible\").first();\n that.menu._moveHover([], firstItem);\n }\n },\n\n _deactivateMenu: function(e) {\n var that = this,\n chip = that.menu.target.find(\"[tabindex=0]\"),\n configuratorElement = that.element.parent();\n\n if (!chip.length) {\n chip = configuratorElement.find((\".k-chip:contains(\\\"\" + (that.currentMember) + \"\\\")\"));\n chip.attr(\"tabindex\", 0);\n }\n\n // focus the chip instead of the chiplist\n chip.trigger(\"focus\");\n },\n\n _closeMenu: function(e) {\n var that = this;\n var activeElement = $(kendo._activeElement());\n\n if (!that.options.filterable) {\n return;\n }\n\n if (activeElement[0] === this._filterOperator.wrapper[0] || activeElement.closest(\".k-treeview\")[0] === that.treeView.wrapper[0] ||\n activeElement.hasClass(\"k-button-includes-reset\")) {\n e.preventDefault();\n }\n },\n\n _treeViewDataSource: function() {\n var that = this;\n\n return kendo.data.HierarchicalDataSource.create({\n schema: {\n model: {\n id: \"uniqueName\",\n hasChildren: function(item) {\n return parseInt(item.childrenCardinality, 10) > 0;\n }\n }\n },\n transport: {\n read: function(options) {\n var node = that.treeView.dataSource.get(options.data.uniqueName);\n var name = options.data.uniqueName;\n var nodes = [];\n var filter;\n var skipCheck;\n var catalog;\n var cube;\n var restrictions;\n var fetchOptions;\n\n if (that.dataSource.cubeSchema) {\n if (!name) {\n nodes = that.dataSource.cubeSchema.members(that.currentMember + \".[(ALL)]\");\n } else {\n nodes = that.dataSource.cubeSchema.members(that.currentMember);\n }\n\n filter = that.dataSource.filter();\n skipCheck = that._getFilterStorage(that.currentMember) && findFilters({ filter: filter, member: that.currentMember }).length == 1;\n\n if (skipCheck && !name) {\n nodes[0].checked = true;\n } else {\n checkNodesLocal(that.dataSource.filter(), that.currentMember, nodes);\n }\n options.success(nodes);\n } else {\n catalog = that.dataSource.transport.catalog();\n cube = that.dataSource.transport.cube();\n restrictions = {\n catalogName: catalog,\n cubeName: cube\n };\n fetchOptions = {\n command: 'schemaMembers'\n };\n\n if (!name) {\n restrictions.levelUniqueName = that.currentMember + \".[(ALL)]\";\n } else {\n restrictions.memberUniqueName = node.uniqueName.replace(/\\&/g, \"&\");\n restrictions.treeOp = 1;\n }\n\n fetchOptions.connection = {\n catalog: catalog,\n cube: cube\n };\n\n fetchOptions.restrictions = restrictions;\n that.dataSource.discover(fetchOptions).then(\n function(data) {\n if (!node || node.checked) {\n checkNodes(that.dataSource.filter(), that.currentMember, data);\n }\n\n options.success(data);\n });\n }\n }\n }\n });\n },\n\n _storeFilterForm: function(member) {\n var that = this;\n\n if (!that._filterStorage) {\n that._filterStorage = {};\n }\n\n that._filterStorage[member] = {\n value: that._filterValue.val(),\n operator: that._filterOperator.value()\n };\n },\n\n _getFilterStorage: function(member) {\n if (!this._filterStorage || !this._filterStorage[member]) {\n return null;\n }\n return this._filterStorage[member];\n },\n\n _clearFilterStorage: function(member) {\n this._filterStorage[member] = null;\n },\n\n _click: function(e) {\n var item = $(e.currentTarget).closest(\":not(path,svg)\");\n\n if (item.hasClass(\"k-columnmenu-item\") && item.find(\".k-i-sort-asc-small,.k-svg-i-sort-asc-small\").length) {\n this._sort(\"asc\");\n }\n\n if (item.hasClass(\"k-columnmenu-item\") && item.find(\".k-i-sort-desc-small,.k-svg-i-sort-desc-small\").length) {\n this._sort(\"desc\");\n }\n\n if (item.hasClass(\"k-columnmenu-item\") && item.find(\".k-i-columns,.k-svg-i-columns\").length) {\n this._move(\"columns\");\n }\n\n if (item.hasClass(\"k-columnmenu-item\") && item.find(\".k-i-rows,.k-svg-i-rows\").length) {\n this._move(\"rows\");\n }\n\n if (item.hasClass(\"k-columnmenu-item\") && item.find(\".k-i-arrow-left,.k-svg-i-arrow-left\").length) {\n this._move(\"previous\");\n }\n\n if (item.hasClass(\"k-columnmenu-item\") && item.find(\".k-i-arrow-right,.k-svg-i-arrow-right\").length) {\n this._move(\"next\");\n }\n },\n\n _attachFilterHandlers: function() {\n this._applyIncludesProxy = this._applyIncludes.bind(this);\n this._resetIncludesProxy = this._resetIncludes.bind(this);\n\n this.menu.element\n .on(\"click\" + NS, \".k-button-includes-reset\", this._resetIncludesProxy)\n .on(\"click\" + NS, \".k-button-includes-apply\", this._applyIncludesProxy);\n },\n\n _includesHandler: function(e) {\n e.preventDefault();\n if ($(e.target).closest(\":not(path,svg)\").hasClass(\"k-button-includes-reset\")) {\n this._resetIncludes();\n } else {\n this._applyIncludes();\n }\n },\n\n _applyIncludes: function(e) {\n e.preventDefault();\n var view = this.treeView.dataSource.view();\n var filter = this.dataSource.filter();\n var newExpression;\n if (this.dataSource.cubeSchema) {\n newExpression = includeLocalExpression(view, filter, this.currentMember);\n } else {\n newExpression = includeExpression(view, filter, this.currentMember);\n }\n this._includesCache = {};\n\n if (newExpression) {\n this.dataSource._preventRefresh = true;\n this.dataSource.filter(newExpression);\n this.menu.close();\n }\n },\n\n _resetIncludes: function(e) {\n e.preventDefault();\n\n var that = this;\n var checkbox;\n\n for (var item in that._includesCache) {\n checkbox = $(that._includesCache[item]).find(\".k-checkbox\");\n checkbox.prop(\"checked\", !checkbox.prop(\"checked\"));\n that.treeView._checkboxChange({ target: checkbox });\n delete that._includesCache[item];\n }\n },\n\n _initFilterForm: function() {\n var filterForm = this.menu.element.find(\".kendo-grid-filter-menu-container\");\n var filterProxy = this._filter.bind(this);\n\n this._filterOperator = new kendo.ui.DropDownList(filterForm.find(\"select\"), { popup: { appendTo: document.body } });\n this._filterValue = filterForm.find(\"input.k-input-inner\");\n this._filterForm = filterForm;\n this._updateFilterAriaLabel();\n\n filterForm\n .on(\"click\" + NS, \".k-button-filter\", filterProxy)\n .on(\"click\" + NS, \".k-button-filter-clear\", this._reset.bind(this));\n },\n\n _updateFilterAriaLabel: function() {\n var selectedOperator = this._filterOperator.value();\n var selectedOperatorName = this.options.messages.operators[selectedOperator];\n\n this._filterForm.find(\"select\").attr(ARIA_LABEL, selectedOperatorName);\n },\n\n _filter: function(e) {\n var that = this;\n var value = convert(that._filterValue.val(), that.dataSource, that.currentMember);\n var filter = that.dataSource.filter();\n\n e.preventDefault();\n\n if (value === \"\") {\n that.menu.close();\n return;\n }\n\n var expression = {\n field: that.currentMember,\n operator: that._filterOperator.value(),\n value: value\n };\n if (filter) {\n removeFilterByValue(filter, that._getFilterStorage(that.currentMember));\n } else {\n filter = { logic: 'and', filters: [] };\n }\n\n that._storeFilterForm(that.currentMember);\n filter.filters.push(expression);\n\n that.dataSource._preventRefresh = true;\n that.dataSource.filter(filter);\n that.menu.close();\n },\n\n _reset: function(e) {\n var that = this;\n var filter = that.dataSource.filter();\n removeFilters(filter, that.currentMember);\n\n e.preventDefault();\n\n if (!filter.filters[0]) {\n filter = {};\n }\n\n that.dataSource._preventRefresh = true;\n that.dataSource.filter(filter);\n that._clearFilterStorage(that.currentMember);\n that._setFilterForm(null);\n that.menu.close();\n },\n\n _setFilterForm: function(expression) {\n var filterOperator = this._filterOperator;\n var operator = \"\";\n var value = \"\";\n\n if (expression) {\n operator = expression.operator;\n value = expression.value;\n }\n\n filterOperator.value(operator);\n if (!filterOperator.value()) {\n filterOperator.select(0);\n }\n\n this._filterValue.val(value);\n },\n\n _collapseItems: function(items) {\n items.find(\".k-expander-indicator span\").each(function (ind,el) { return kendo.ui.icon($(el), { icon: \"chevron-up\" }); });\n\n items.nextAll().hide();\n },\n\n _sort: function(dir) {\n var field = this.currentMember;\n var expressions = (this.dataSource.sort() || []);\n\n expressions = removeExpr(expressions, field);\n expressions.push({\n field: field,\n dir: dir\n });\n\n this.dataSource._preventRefresh = true;\n this.dataSource.sort(expressions);\n this.menu.close();\n },\n\n _move: function(action) {\n var that = this,\n index = that.currentMemberIndex;\n\n switch (action) {\n case \"columns\":\n that._moveToColumns();\n break;\n case \"rows\":\n that._moveToRows();\n break;\n case \"previous\":\n that._changeOrder(--index);\n break;\n case \"next\":\n that._changeOrder(++index);\n break;\n }\n\n that.menu.close();\n },\n\n _updateDisabledState: function() {\n var that = this,\n menu = that.menu.element,\n target = that.currentSettingTarget.element,\n targetLabel = target.prev().text();\n\n menu.find(\".k-columnmenu-item.k-disabled\").removeClass(\"k-disabled\");\n\n if (that.currentMemberIndex === 0) {\n menu.find('[data-move=\"previous\"]').closest(\".k-columnmenu-item\").addClass(\"k-disabled\");\n }\n\n if (that.currentMemberIndex === target.children().length - 1) {\n menu.find('[data-move=\"next\"]').closest(\".k-columnmenu-item\").addClass(\"k-disabled\");\n }\n\n if (targetLabel === \"Columns\") {\n menu.find('[data-move=\"columns\"]').closest(\".k-columnmenu-item\").addClass(\"k-disabled\");\n }\n\n if (targetLabel === \"Rows\") {\n menu.find('[data-move=\"rows\"]').closest(\".k-columnmenu-item\").addClass(\"k-disabled\");\n }\n },\n\n _moveToColumns: function() {\n var that = this,\n currentMember = that.currentMember;\n\n that.rowsSettingTarget.remove(currentMember);\n that.columnsSettingTarget.add(currentMember);\n },\n\n _moveToRows: function() {\n var that = this,\n currentMember = that.currentMember;\n\n that.columnsSettingTarget.remove(currentMember);\n that.rowsSettingTarget.add(currentMember);\n },\n\n _changeOrder: function(index) {\n var that = this,\n currentMember = that.currentMember;\n\n this.currentSettingTarget.move(currentMember, index);\n },\n\n _menuOpen: function(e) {\n if (!e.event) {\n return;\n }\n\n var that = this;\n var schemaCube = that.dataSource.cubeSchema;\n var filterBox;\n var member = $(e.event.target).closest(\".k-chip\");\n that.currentMember = member.text();\n that.currentMemberIndex = member.index();\n that.currentSettingTarget = member.closest(DOT + CHIP_LIST).data(PIVOT_SETTING_TARGET_V2);\n that.menu.popup._hovered = true;\n\n that._getSettingTargets();\n that._updateDisabledState();\n\n if (that.options.filterable) {\n that._setFilterForm(that._getFilterStorage(that.currentMember));\n filterBox = that.wrapper.find(\".k-columnmenu-item-wrapper\").last();\n if (schemaCube && schemaCube.memberType(that.currentMember).toLowerCase() !== \"string\") {\n filterBox.hide();\n } else {\n filterBox.show();\n }\n if (that.currentMember !== that._oldCurrentmember) {\n if (that._oldCurrentmember) {\n that._collapseItems(that.menu.element.find(\".k-item.k-expander\"));\n }\n that._oldCurrentmember = that.currentMember;\n that._includesCache = {};\n this.treeView.dataSource.read();\n }\n }\n },\n });\n\n var PivotFieldMenu = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this._dataSource();\n\n this._layout();\n\n kendo.notify(this);\n },\n\n events: [],\n\n options: {\n name: \"PivotFieldMenu\",\n filter: null,\n filterable: true,\n sortable: true,\n messages: {\n info: \"Show items with value that:\",\n sortAscending: \"Sort Ascending\",\n sortDescending: \"Sort Descending\",\n filterFields: \"Fields Filter\",\n filter: \"Filter\",\n include: \"Include Fields...\",\n title: \"Fields to include\",\n clear: \"Clear\",\n ok: \"OK\",\n cancel: \"Cancel\",\n operators: {\n contains: \"Contains\",\n doesnotcontain: \"Does not contain\",\n startswith: \"Starts with\",\n endswith: \"Ends with\",\n eq: \"Is equal to\",\n neq: \"Is not equal to\"\n }\n }\n },\n\n _layout: function() {\n var options = this.options;\n\n this.wrapper = $(kendo.template(MENUTEMPLATE)({\n ns: kendo.ns,\n filterable: options.filterable,\n sortable: options.sortable,\n messages: options.messages\n }));\n\n this.menu = this.wrapper[MENU]({\n filter: options.filter,\n target: this.element,\n orientation: \"vertical\",\n showOn: \"click\",\n closeOnClick: false,\n open: this._menuOpen.bind(this),\n select: this._select.bind(this),\n copyAnchorStyles: false\n }).data(MENU);\n\n this._createWindow();\n\n if (options.filterable) {\n this._initFilterForm();\n }\n },\n\n _initFilterForm: function() {\n var filterForm = this.menu.element.find(\".\" + FILTER_ITEM);\n var filterProxy = this._filter.bind(this);\n\n this._filterOperator = new kendo.ui.DropDownList(filterForm.find(\"select\"));\n this._filterValue = filterForm.find(\"input.k-input-inner\");\n this._updateFilterAriaLabel();\n\n filterForm\n .on(\"submit\" + NS, filterProxy)\n .on(\"click\" + NS, \".k-button-filter\", filterProxy)\n .on(\"click\" + NS, \".k-button-clear\", this._reset.bind(this));\n },\n\n _setFilterForm: function(expression) {\n var filterOperator = this._filterOperator;\n var operator = \"\";\n var value = \"\";\n\n if (expression) {\n operator = expression.operator;\n value = expression.value;\n }\n\n filterOperator.value(operator);\n if (!filterOperator.value()) {\n filterOperator.select(0);\n }\n\n this._filterValue.val(value);\n },\n\n _clearFilters: function(member) {\n var filter = this.dataSource.filter() || {};\n var expressions;\n var idx = 0;\n var length;\n\n filter.filters = filter.filters || [];\n expressions = findFilters({ filter: filter, member: member });\n\n for (length = expressions.length; idx < length; idx++) {\n filter.filters.splice(filter.filters.indexOf(expressions[idx]), 1);\n }\n\n return filter;\n },\n\n _filter: function(e) {\n var that = this;\n var value = convert(that._filterValue.val(), that.dataSource, that.currentMember);\n\n e.preventDefault();\n\n if (value === \"\") {\n that.menu.close();\n return;\n }\n\n var expression = {\n field: that.currentMember,\n operator: that._filterOperator.value(),\n value: value\n };\n var filter = that._clearFilters(that.currentMember);\n\n filter.filters.push(expression);\n\n that.dataSource.filter(filter);\n that.menu.close();\n },\n\n _updateFilterAriaLabel: function() {\n var filterForm = this.menu.element.find(\".\" + FILTER_ITEM);\n var selectedOperator = this._filterOperator.value();\n var selectedOperatorName = this.options.messages.operators[selectedOperator];\n\n filterForm.find(\"select\").attr(ARIA_LABEL, selectedOperatorName);\n },\n\n _reset: function(e) {\n var that = this;\n var filter = that._clearFilters(that.currentMember);\n\n e.preventDefault();\n\n if (!filter.filters[0]) {\n filter = {};\n }\n\n that.dataSource.filter(filter);\n that._setFilterForm(null);\n that.menu.close();\n },\n\n _sort: function(dir) {\n var field = this.currentMember;\n var expressions = (this.dataSource.sort() || []);\n\n expressions = removeExpr(expressions, field);\n expressions.push({\n field: field,\n dir: dir\n });\n\n this.dataSource.sort(expressions);\n this.menu.close();\n },\n\n setDataSource: function(dataSource) {\n this.options.dataSource = dataSource;\n\n this._dataSource();\n },\n\n _dataSource: function() {\n this.dataSource = kendo.data.PivotDataSource.create(this.options.dataSource);\n },\n\n _createWindow: function() {\n var messages = this.options.messages;\n\n this.includeWindow = $(kendo.template(WINDOWTEMPLATE)({\n messages: messages\n }))\n .on(\"click\" + NS, \".k-button-ok\", this._applyIncludes.bind(this))\n .on(\"click\" + NS, \".k-button-cancel\", this._closeWindow.bind(this));\n\n this.includeWindow = new ui.Window(this.includeWindow, {\n title: messages.title,\n visible: false,\n resizable: false,\n open: this._windowOpen.bind(this)\n });\n },\n\n _applyIncludes: function(e) {\n var checkedNodes = [];\n var resultExpression;\n var view = this.treeView.dataSource.view();\n var rootChecked = view[0].checked;\n var filter = this.dataSource.filter();\n var existingExpression = findFilters({ filter: filter, member: this.currentMember, operator: \"in\" })[0];\n\n nodeIds(view, checkedNodes, true);\n\n if (existingExpression) {\n if (rootChecked) {\n filter.filters.splice(filter.filters.indexOf(existingExpression), 1);\n if (!filter.filters.length) {\n filter = {};\n }\n } else {\n existingExpression.value = checkedNodes.join(\",\");\n }\n\n resultExpression = filter;\n }\n\n if (checkedNodes.length) {\n if (!resultExpression && !rootChecked) {\n resultExpression = {\n field: this.currentMember,\n operator: \"in\",\n value: checkedNodes.join(\",\")\n };\n\n if (filter) {\n filter.filters.push(resultExpression);\n resultExpression = filter;\n }\n }\n }\n\n if (resultExpression) {\n this.dataSource.filter(resultExpression);\n }\n\n this._closeWindow(e);\n },\n\n _closeWindow: function(e) {\n e.preventDefault();\n\n this.includeWindow.close();\n },\n\n _treeViewDataSource: function() {\n var that = this;\n\n return kendo.data.HierarchicalDataSource.create({\n schema: {\n model: {\n id: \"uniqueName\",\n hasChildren: function(item) {\n return parseInt(item.childrenCardinality, 10) > 0;\n }\n }\n },\n transport: {\n read: function(options) {\n var restrictions = {};\n var node = that.treeView.dataSource.get(options.data.uniqueName);\n var name = options.data.uniqueName;\n\n if (!name) {\n restrictions.levelUniqueName = that.currentMember + \".[(ALL)]\";\n } else {\n restrictions.memberUniqueName = node.uniqueName.replace(/\\&/g, \"&\");\n restrictions.treeOp = 1;\n }\n\n that.dataSource\n .schemaMembers(restrictions)\n .done(function(data) {\n checkNodes(that.dataSource.filter(), that.currentMember, data);\n\n options.success(data);\n })\n .fail(options.error);\n }\n }\n });\n },\n\n _createTreeView: function(element) {\n var that = this;\n\n that.treeView = new ui.TreeView(element, {\n autoBind: false,\n dataSource: that._treeViewDataSource(),\n dataTextField: \"caption\",\n template: function (ref) {\n var item = ref.item;\n\n return (\"\" + (encode(item.caption || item.name)));\n },\n checkboxes: {\n checkChildren: true\n },\n dataBound: function() {\n ui.progress(that.includeWindow.element, false);\n }\n });\n },\n\n _menuOpen: function(e) {\n if (!e.event) {\n return;\n }\n\n var attr = kendo.attr(\"name\");\n\n this.currentMember = $(e.event.target).closest(\"[\" + attr + \"]\").attr(attr);\n\n if (this.options.filterable) {\n this._setFilterForm(findFilters({ filter: this.dataSource.filter(), member: this.currentMember })[0]);\n }\n },\n\n _select: function(e) {\n var item = $(e.item);\n\n $(\".k-pivot-filter-window\").not(this.includeWindow.element).kendoWindow(\"close\");\n\n if (item.hasClass(\"k-include-item\")) {\n this.includeWindow.center().open();\n } else if (item.hasClass(\"k-sort-asc\")) {\n this._sort(\"asc\");\n } else if (item.hasClass(\"k-sort-desc\")) {\n this._sort(\"desc\");\n } else if (item.hasClass(FILTER_ITEM)) {\n this._updateFilterAriaLabel();\n }\n },\n\n _windowOpen: function() {\n if (!this.treeView) {\n this._createTreeView(this.includeWindow.element.find(\".k-treeview\"));\n }\n\n ui.progress(this.includeWindow.element, true);\n this.treeView.dataSource.read();\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n if (this.menu) {\n this.menu.destroy();\n this.menu = null;\n }\n\n if (this.treeView) {\n this.treeView.destroy();\n this.treeView = null;\n }\n\n if (this.includeWindow) {\n this.includeWindow.destroy();\n this.includeWindow = null;\n }\n\n this.wrapper = null;\n this.element = null;\n }\n });\n\n function convert(value, dataSource, currentMember) {\n var schema = dataSource.options.schema;\n var field = ((schema.model || {}).fields || {})[currentMember];\n\n if (field) {\n if (field.type === \"number\") {\n value = parseFloat(value);\n } else if (field.type === \"boolean\") {\n value = Boolean($.parseJSON(value));\n }\n }\n\n return value;\n }\n\n function removeExpr(expressions, name) {\n var result = [];\n\n for (var idx = 0, length = expressions.length; idx < length; idx++) {\n if (expressions[idx].field !== name) {\n result.push(expressions[idx]);\n }\n }\n\n return result;\n }\n\n function removeFilterByValue(filter, toRemove) {\n if (!toRemove) {\n return;\n }\n\n filter = filter.filters;\n\n var idx = 0;\n var length = filter.length;\n\n for (idx = length - 1; idx >= 0; idx--) {\n if (filter[idx].value === toRemove.value && filter[idx].operator === toRemove.operator) {\n filter.splice(idx, 1);\n }\n }\n }\n\n function removeFilters(filter, member, operator) {\n if (!filter) {\n return;\n }\n\n filter = filter.filters;\n\n var idx = 0;\n var length = filter.length;\n var filterOperator;\n\n for (idx = length - 1; idx >= 0; idx--) {\n filterOperator = filter[idx].operator;\n\n if ((operator ? filterOperator === operator : true) && filter[idx].field === member) {\n filter.splice(idx, 1);\n }\n }\n }\n\n function findFilters(options) {\n if (!options.filter) {\n return [];\n }\n\n var filter = options.filter.filters;\n var idx = 0;\n var result = [];\n var length = filter.length;\n var filterOperator;\n var operatorInUse = options.isLocal ? \"neq\" : \"in\";\n\n for ( ; idx < length; idx++) {\n filterOperator = filter[idx].operator;\n\n if (((!options.operator && filterOperator !== operatorInUse) || (filterOperator === options.operator)) && filter[idx].field === options.member) {\n result.push(filter[idx]);\n }\n }\n\n return result;\n }\n\n function checkNodesLocal(filter, member, nodes) {\n var values, idx = 0, length = nodes.length;\n var filters = findFilters({ filter: filter, member: member, operator: \"neq\" });\n\n if (nodes[0].name.indexOf(\"[(ALL)]\") >= 0) {\n nodes[0].checked = !filters.length;\n return;\n }\n\n if (!filters.length) {\n for (; idx < length; idx++) {\n nodes[idx].checked = true;\n }\n } else {\n values = filters.map(function(ftr) { return ftr.value; });\n for (; idx < length; idx++) {\n nodes[idx].checked = $.inArray(nodes[idx].uniqueName, values) < 0;\n }\n }\n }\n\n function checkNodes(filter, member, nodes) {\n var values, idx = 0, length = nodes.length;\n filter = findFilters({ filter: filter, member: member, operator: \"in\" })[0];\n\n if (!filter) {\n for (; idx < length; idx++) {\n nodes[idx].checked = true;\n }\n } else {\n values = filter.value.split(\",\");\n for (; idx < length; idx++) {\n nodes[idx].checked = $.inArray(nodes[idx].uniqueName, values) >= 0;\n }\n }\n }\n\n function nodeIds(nodes, checkedNodes, checkState) {\n var idx, length = nodes.length;\n\n for (idx = 0; idx < length; idx++) {\n if (nodes[idx].checked === checkState && nodes[idx].level() !== 0) {\n checkedNodes.push(nodes[idx].uniqueName);\n }\n\n if (nodes[idx].hasChildren) {\n nodeIds(nodes[idx].children.view(), checkedNodes, checkState);\n }\n }\n }\n\n function includeLocalExpression(view, filter, currentMember) {\n var nonCheckedNodes = [];\n removeFilters(filter, currentMember, \"neq\");\n\n if (!filter) {\n filter = { logic: 'and', filters: [] };\n }\n nodeIds(view, nonCheckedNodes, false);\n\n if (nonCheckedNodes.length) {\n for (var idx = 0; idx < nonCheckedNodes.length; idx++) {\n filter.filters.push({\n field: currentMember,\n operator: \"neq\",\n value: nonCheckedNodes[idx]\n });\n }\n }\n\n return filter ? filter : null;\n }\n\n function includeExpression(view, filter, currentMember) {\n var checkedNodes = [];\n var resultExpression;\n var rootChecked = view[0].checked;\n var existingExpression = findFilters({ filter: filter, member: currentMember, operator: \"in\" })[0];\n\n nodeIds(view, checkedNodes, true);\n\n if (existingExpression) {\n if (rootChecked) {\n filter.filters.splice(filter.filters.indexOf(existingExpression), 1);\n if (!filter.filters.length) {\n filter = {};\n }\n } else {\n existingExpression.value = checkedNodes.join(\",\");\n }\n\n resultExpression = filter;\n }\n\n if (checkedNodes.length) {\n if (!resultExpression && !rootChecked) {\n resultExpression = {\n field: currentMember,\n operator: \"in\",\n value: checkedNodes.join(\",\")\n };\n\n if (filter) {\n filter.filters.push(resultExpression);\n resultExpression = filter;\n }\n }\n }\n\n return resultExpression ? resultExpression : null;\n }\n\n var LABELMENUTEMPLATE = function (messages) { return '