{"version":3,"file":"kendo.pivot.configurator.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendopivot","configurator","js","this","Navigation","constructor","options","tabIndex","root","eventHandlers","update","elements","Array","from","querySelectorAll","selectors","join","first","querySelector","last","all","length","current","find","el","matches","start","eventType","mouseEvents","ev","target","Element","closest","call","undefined","addEventListener","keyboardEvents","key","stop","removeEventListener","focusElement","element","previous","removeAttribute","classList","remove","setAttribute","String","focus","preventScroll","scrollableValuesSel","scrollableColumnHeaderSel","scrollableRowHeaderSel","emptyCellSel","tableSel","cellSel","navigate","nav","dir","preventDefault","index","indexOf","onDelete","HTMLElement","keydown","Tab","shiftKey","Escape","_target","pivot","previousElementSibling","confButton","nextElementSibling","pivotCell","c","click","Delete","Backspace","prev","hasAttribute","ConfiguratorNavigation","super","arguments","$","undefined$1","kendo","window","ui","encode","htmlEncode","Widget","common","pivotgrid","fetchDiscover","configuratorReducer","PIVOT_CONFIGURATOR_ACTION","ns","HOVER_EVENTS","SETTING_CONTAINER_TEMPLATE","name","addKPI","data","found","idx","type","splice","caption","defaultHierarchy","uniqueName","kpiNode","node","normalizeKPIs","settingTargetFromNode","PivotConfiguratorV2","extend","init","fn","_ariaId","attr","guid","addClass","role","_dataSource","navigatable","_initPivotGridConfiguratorNavigation","_layout","refresh","height","notify","events","orientation","filterable","sortable","messages","title","cancelButtonText","applyButtonText","measures","columns","rows","setDataSource","dataSource","that","configuratorNavigation","firstCell","_refreshHandler","unbind","_errorHandler","_progressHandler","_error","bind","_requestStart","PivotDataSourceV2","create","horizontal","panel","append","headerTextId","SETTINGS_TEMPLATE","appendTo","formClass","ariaId","CONTENT_TEMPLATE","each","elm","html","renderChipList","_fields","cancelText","applyText","ACTIONS_TEMPLATE","_targets","on","_actions","e","currentTarget","_applyState","read","_cancelChanges","treeView","targetItemTemplate","menuenabled","chip","renderChip","TARGET_ITEM_TEMPLATE","fillMode","themeColor","rounded","removable","removeIcon","actions","icon","_createTarget","template","connectWith","empty","fieldMenu","setting","forEach","x","PivotSettingTargetV2","hint","clone","item","wrapper","id","dataItem","getByUid","checked","container","kendoTreeView","checkboxes","checkChildren","result","hasChildren","aggregator","local","uid","dataTextField","autoBind","check","sender","action","toggleSelection","payload","state","columnAxes","_state","rowAxes","measureAxes","cubeSchema","restoreMeasure","items","_checkMembers","trigger","_redraw","_treeViewDataSource","off","_clickHandler","HierarchicalDataSource","schema","model","transport","fields","dsMeasures","catalog","cube","fetchOptions","url","members","concat","isEmptyObject","dimensions","success","connection","restrictions","catalogName","cubeName","command","then","newFields","get","_getKPIOptions","buildKPImeasures","_loadFieldsCommand","newData","hash","field","dimensionUniqueName","hierarchyUniqueName","_progress","toggle","progress","destroy","fetch","plugin","PivotConfigurator","outerHeight","measuresLabel","columnsLabel","rowsLabel","fieldsLabel","PivotDataSource","kpi","schemaDimensions","done","cubeBuilder","fail","error","schemaKPIs","schemaMeasures","schemaLevels","schemaHierarchies","form","dragAndDrop","dragstart","sourceNode","measure","drag","status","dropTarget","validate","setStatusClass","drop","push","add","sortIcon","getIcons","PivotSettingTarget","emptyTemplate","columnsContainer","rowsContainer","measuresContainer","_toggleHover","toggleClass","_resize","_cube","_catalog","kpiMeasure","value","goal","trend","cssProperties","registerPrefix","registerValues","prop","values","roundedValues","jQuery"],"sources":["kendo.pivot.configurator.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.dom.js'), require('kendo.html.chip.js'), require('kendo.html.chiplist.js'), require('kendo.pivot.common.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.dom', 'kendo.html.chip', 'kendo.html.chiplist', 'kendo.pivot.common', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendopivot = global.kendopivot || {}, global.kendopivot.configurator = global.kendopivot.configurator || {}, global.kendopivot.configurator.js = factory()));\n})(this, (function () {\n class Navigation {\n constructor(options) {\n this.tabIndex = 0;\n this.root = null;\n this.eventHandlers = {};\n this.update = () => { };\n this.tabIndex = options.tabIndex;\n }\n get elements() {\n return this.root ? Array.from(this.root.querySelectorAll(this.selectors.join(','))) : [];\n }\n get first() {\n return (this.root && this.root.querySelector(this.selectors.join(','))) || null;\n }\n get last() {\n const all = this.elements;\n return all[all.length - 1] || null;\n }\n get current() {\n return this.elements.find(el => el.matches(':focus'));\n }\n start(root) {\n this.root = root;\n for (const eventType in this.mouseEvents) {\n if (this.mouseEvents[eventType]) {\n this.eventHandlers[eventType] = (ev => {\n const target = ev.target instanceof Element && ev.target.closest(this.selectors.join(','));\n if (target) {\n this.mouseEvents[eventType].call(undefined, target, this, ev);\n }\n });\n root.addEventListener(eventType, this.eventHandlers[eventType]);\n }\n }\n for (const eventType in this.keyboardEvents) {\n if (this.keyboardEvents[eventType]) {\n this.eventHandlers[eventType] = (ev => {\n const target = ev.target instanceof Element && ev.target.closest(this.selectors.join(','));\n const key = ev.key === ' ' ? 'Space' : ev.key;\n if (target && this.keyboardEvents[eventType][key]) {\n this.keyboardEvents[eventType][key].call(undefined, target, this, ev);\n }\n });\n root.addEventListener(eventType, this.eventHandlers[eventType]);\n }\n }\n }\n stop() {\n if (this.root) {\n for (const eventType in this.eventHandlers) {\n if (this.eventHandlers[eventType]) {\n this.root.removeEventListener(eventType, this.eventHandlers[eventType]);\n }\n }\n }\n this.root = null;\n }\n focusElement(element, previous) {\n if (element) {\n if (previous) {\n previous.removeAttribute('tabindex');\n previous.classList.remove('k-focus');\n }\n element.setAttribute('tabindex', String(this.tabIndex));\n element.focus({ preventScroll: true });\n }\n }\n }\n\n const scrollableValuesSel = '.k-pivotgrid .k-pivotgrid-values';\n const scrollableColumnHeaderSel = '.k-pivotgrid .k-pivotgrid-column-headers';\n const scrollableRowHeaderSel = '.k-pivotgrid .k-pivotgrid-row-headers';\n const emptyCellSel = '.k-pivotgrid > .k-pivotgrid-empty-cell';\n const tableSel = 'table.k-pivotgrid-table';\n const cellSel = '.k-pivotgrid-cell';\n const scrollables = [scrollableValuesSel, scrollableColumnHeaderSel, scrollableRowHeaderSel].join(',');\n const selectors$1 = [\n emptyCellSel,\n [scrollableColumnHeaderSel, tableSel, cellSel].join(' '),\n [scrollableRowHeaderSel, tableSel, cellSel].join(' '),\n [scrollableValuesSel, tableSel, cellSel].join(' ')\n ];\n const onEnter = (target, nav, ev) => {\n const icon = target.querySelector('.k-icon, .k-svg-icon');\n if (icon) {\n const index = nav.elements.indexOf(target);\n nav.update = () => {\n nav.focusElement(nav.elements[index], null);\n nav.update = () => { };\n };\n icon.click();\n ev.preventDefault();\n }\n };\n const tryScrollLeft = (target, scrollable, elToScroll) => {\n if (target.offsetLeft < scrollable.scrollLeft) {\n elToScroll.scrollLeft = target.offsetLeft;\n }\n };\n const tryScrollRight = (target, scrollable, elToScroll) => {\n if (target.offsetLeft + target.offsetWidth > scrollable.scrollLeft + scrollable.offsetWidth &&\n target.offsetWidth < scrollable.offsetWidth) {\n elToScroll.scrollLeft = target.offsetLeft + target.offsetWidth - scrollable.offsetWidth;\n }\n };\n const tryScrollUp = (target, scrollable, elToScroll) => {\n if (scrollable.scrollTop && target.offsetTop < scrollable.scrollTop) {\n elToScroll.scrollTop = target.offsetTop;\n }\n };\n const tryScrollDown = (target, scrollable, elToScroll) => {\n if (target.offsetTop + target.offsetHeight > scrollable.scrollTop + scrollable.offsetHeight &&\n target.offsetHeight < scrollable.offsetHeight) {\n elToScroll.scrollTop = target.offsetTop + target.offsetHeight - scrollable.offsetHeight;\n }\n };\n const scrollTo = (target, root, scrollFunc) => {\n const elToScroll = root.querySelector(scrollableValuesSel);\n const scrollable = target && target.closest(scrollables);\n if (!elToScroll || !scrollable || !target) {\n return;\n }\n scrollFunc.forEach(scroll => scroll(target, scrollable, elToScroll));\n };\n const tableMap = (table) => {\n const rows = Array.from(table.rows);\n const colsCount = Array.from((rows && rows[0] && rows[0].cells) || [])\n .map(c => c.colSpan)\n .reduce((prev, cur) => prev + cur, 0);\n const map = rows.map(() => new Array(colsCount));\n rows.forEach((row, r) => {\n let curColSpan = 0;\n Array.from(row.cells).forEach((c) => {\n for (let colSp = 0; colSp < c.colSpan; colSp++) {\n for (let rowSp = 0; rowSp < c.rowSpan; rowSp++) {\n const ind = map[r + rowSp].findIndex((val, curInd) => curInd >= curColSpan && !val);\n map[r + rowSp][ind] = c;\n }\n curColSpan++;\n }\n });\n });\n return map;\n };\n const navigationMap = (root) => {\n const columnHeader = tableMap(root.querySelector([scrollableColumnHeaderSel, tableSel].join(' ')));\n const rowHeader = tableMap(root.querySelector([scrollableRowHeaderSel, tableSel].join(' ')));\n const values = tableMap(root.querySelector([scrollableValuesSel, tableSel].join(' ')));\n const emptyCell = root.querySelector(emptyCellSel);\n const emptyCellRow = new Array(rowHeader[0].length).fill(emptyCell);\n const map = [];\n for (let i = 0; i < columnHeader.length; i++) {\n map.push(emptyCellRow.concat(columnHeader[i]));\n }\n for (let i = 0; i < rowHeader.length; i++) {\n map.push(rowHeader[i].concat(values[i]));\n }\n return map;\n };\n const getTargetPos = (map, target) => {\n for (let r = 0; r < map.length; r++) {\n for (let c = 0; c < map[r].length; c++) {\n if (map[r][c] === target) {\n return [r, c];\n }\n }\n }\n return [-1, -1];\n };\n const ctrlKey = (ev) => ev.ctrlKey || ev.metaKey;\n const cellAt = (root, target, pos) => {\n const map = navigationMap(root);\n let targetPos = getTargetPos(map, target);\n let nextPos = [targetPos[0] + pos[0], targetPos[1] + pos[1]];\n let next = map[nextPos[0]] && map[nextPos[0]][nextPos[1]];\n while (next && next === target) {\n nextPos = [nextPos[0] + pos[0], nextPos[1] + pos[1]];\n next = map[nextPos[0]] && map[nextPos[0]][nextPos[1]];\n }\n return next;\n };\n const keyboardEvents$1 = {\n keydown: {\n ArrowLeft: (target, nav, ev) => {\n ev.preventDefault();\n const next = cellAt(nav.root, target, [0, -1]);\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollRight, tryScrollLeft, tryScrollDown, tryScrollUp]);\n },\n ArrowRight: (target, nav, ev) => {\n ev.preventDefault();\n const next = cellAt(nav.root, target, [0, 1]);\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollLeft, tryScrollRight, tryScrollDown, tryScrollUp]);\n },\n ArrowUp: (target, nav, ev) => {\n ev.preventDefault();\n const next = cellAt(nav.root, target, [-1, 0]);\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollRight, tryScrollLeft, tryScrollDown, tryScrollUp]);\n },\n ArrowDown: (target, nav, ev) => {\n ev.preventDefault();\n const next = cellAt(nav.root, target, [1, 0]);\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollRight, tryScrollLeft, tryScrollUp, tryScrollDown]);\n },\n o: (_target, nav, _ev) => {\n if (!nav.root) {\n return;\n }\n // FIX: ADDED manually to fix an issue where depending on the order of the config element and button\n // you either can open the configurator with Ctrl+O, or you can close the configurator with ESC\n let next = nav.root.nextElementSibling;\n if (!(next && next instanceof HTMLElement)) {\n return;\n }\n\n if (!next.matches('div.k-pivotgrid-configurator-button')) {\n next = next.nextElementSibling;\n }\n\n if (next && next instanceof HTMLElement && next.matches('div.k-pivotgrid-configurator-button')) {\n if (!nav.root.parentNode || nav.root.parentNode.querySelector(\".k-pivotgrid-configurator.k-hidden\")) {\n next.click();\n }\n\n setTimeout(() => {\n if (nav.root.parentNode) {\n const confHeader = nav.root.parentNode.querySelector('.k-pivotgrid-configurator-content .k-form-field .k-fields-list-wrapper .k-treeview');\n if (confHeader instanceof HTMLElement) {\n confHeader.setAttribute('tabindex', String(nav.tabIndex));\n confHeader.focus();\n }\n }\n }, 0);\n }\n },\n Enter: onEnter,\n Space: onEnter,\n Home: (target, nav, ev) => {\n const map = navigationMap(nav.root);\n const ctrl = ctrlKey(ev);\n let row = ctrl ? map[0] : (map.find(ro => Boolean(ro.find(x => x === target))) || []);\n let next = row[0];\n if (next) {\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollRight, tryScrollLeft, tryScrollDown, tryScrollUp]);\n ev.preventDefault();\n }\n },\n End: (target, nav, ev) => {\n const map = navigationMap(nav.root);\n const ctrl = ctrlKey(ev);\n let row = ctrl ? map[map.length - 1] : (map.find(ro => Boolean(ro.find(x => x === target))) || []);\n let next = row && row[row.length - 1] || null;\n if (next) {\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollLeft, tryScrollRight, tryScrollUp, tryScrollDown]);\n ev.preventDefault();\n }\n }\n }\n };\n const mouseEvents$1 = {\n click: (target, nav) => {\n if (target && target instanceof HTMLElement) {\n const prev = nav.elements.find(c => c.hasAttribute('tabindex')) || null;\n nav.focusElement(target, prev);\n }\n }\n };\n /**\n * The PivotGrid keyboard navigation functionality.\n *\n * Usage:\n *\n * On Initialize\n * const navigation = new PivotGridNavigation({ tabindex: 0 });\n *\n * Turn on\n * navigation.start(rootDomElement);\n *\n * On After Update\n * navigation.update();\n *\n * On Destroy / Turn off\n * navigation.stop();\n */\n class PivotGridNavigation extends Navigation {\n constructor() {\n super(...arguments);\n this.selectors = selectors$1;\n this.mouseEvents = mouseEvents$1;\n this.keyboardEvents = keyboardEvents$1;\n }\n }\n\n const selectors = [\n '.k-pivotgrid-configurator-content .k-form-field .k-fields-list-wrapper .k-treeview',\n '.k-pivotgrid-configurator-content .k-chip',\n '.k-pivotgrid-configurator-actions button'\n ];\n const onEscape = (_target, nav, ev) => {\n if (ev.target instanceof HTMLElement) {\n if (nav.root) {\n const pivot = nav.root.previousElementSibling;\n const confButton = nav.root.nextElementSibling;\n const pivotCell = Array.from(pivot instanceof HTMLElement ? pivot.querySelectorAll('[tabindex]') : []).find((c) => c.tabIndex >= 0);\n if (pivotCell instanceof HTMLElement) {\n pivotCell.focus();\n if (confButton instanceof HTMLElement) {\n confButton.click();\n }\n }\n }\n }\n };\n const navigate = (target, nav, ev, dir) => {\n ev.preventDefault();\n const all = nav.elements;\n let index = all.indexOf(target) + dir;\n if (index < 0) {\n index = all.length - 1;\n }\n nav.focusElement(all[index % all.length], target);\n };\n const onDelete = (target, nav, ev) => {\n if (ev.target instanceof HTMLElement) {\n const deleteButton = ev.target.querySelector('.k-icon.k-i-x-circle, .k-svg-icon.k-svg-i-x-circle');\n if (deleteButton instanceof HTMLElement) {\n ev.preventDefault();\n navigate(target, nav, ev, -1);\n }\n }\n };\n const keyboardEvents = {\n keydown: {\n Tab: (target, nav, ev) => {\n navigate(target, nav, ev, ev.shiftKey ? -1 : 1);\n },\n Escape: onEscape,\n Delete: onDelete,\n Backspace: onDelete\n }\n };\n const mouseEvents = {\n click: (target, nav) => {\n if (target && target instanceof HTMLElement) {\n const prev = nav.elements.find((c) => c.hasAttribute('tabindex')) || null;\n nav.focusElement(target, prev);\n }\n }\n };\n /**\n * The PivotGrid Configurator keyboard navigation functionality.\n *\n * Usage:\n *\n * On Initialize\n * const navigation = new ConfiguratorNavigation({ tabindex: 0 });\n *\n * Turn on\n * navigation.start(rootDomElement);\n *\n * On After Update\n * navigation.update();\n *\n * On Destroy / Turn off\n * navigation.stop();\n */\n class ConfiguratorNavigation extends Navigation {\n constructor() {\n super(...arguments);\n this.selectors = selectors;\n this.mouseEvents = mouseEvents;\n this.keyboardEvents = keyboardEvents;\n }\n }\n\n var __meta__ = {\n id: \"pivot.configurator\",\n name: \"PivotConfigurator\",\n category: \"web\",\n depends: [ \"dropdownlist\", \"treeview\", \"treeview.draganddrop\", \"pivot.fieldmenu\", \"html.chip\", \"html.chiplist\", \"pivot.common\", \"icons\" ],\n hidden: true\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n encode = kendo.htmlEncode,\n Widget = ui.Widget,\n common = window.kendo.pivotgrid.common,\n fetchDiscover = common.fetchDiscover,\n configuratorReducer = common.configuratorReducer,\n PIVOT_CONFIGURATOR_ACTION = common.PIVOT_CONFIGURATOR_ACTION,\n ns = \".kendoPivotConfigurator\",\n HOVER_EVENTS = \"mouseenter\" + ns + \" mouseleave\" + ns,\n SETTINGS_TEMPLATE = ({ title, headerTextId }) => '
' +\n `
${encode(title)}
` +\n '
',\n CONTENT_TEMPLATE = ({ formClass, horizontal, ariaId }) => '
' +\n `
` +\n `${horizontal ? '
' : ''}` +\n '
' +\n `` +\n '
' +\n '
' +\n '
' +\n '
' +\n `${horizontal ? '
' : ''}` +\n '
' +\n `` +\n '
' +\n '
' +\n '
' +\n `` +\n '
' +\n '
' +\n `${horizontal ? '
' : ''}` +\n '
' +\n `` +\n '
' +\n '
' +\n `${horizontal ? '
' : ''}` +\n '
' +\n '
',\n TARGET_ITEM_TEMPLATE = ({ name }) => '' +\n `${encode(name)}` +\n '',\n ACTIONS_TEMPLATE = ({ cancelText, applyText }) =>\n '
' +\n '' +\n '' +\n '
',\n SETTING_CONTAINER_TEMPLATE = ({ name }) => `
${encode(name)}
`;\n\n function addKPI(data) {\n var found;\n var idx = 0;\n var length = data.length;\n\n for (; idx < length; idx++) {\n if (data[idx].type == 2) {\n found = true;\n break;\n }\n }\n\n if (found) {\n data.splice(idx + 1, 0, {\n caption: \"KPIs\",\n defaultHierarchy: \"[KPIs]\",\n name: \"KPIs\",\n uniqueName: \"[KPIs]\"\n });\n }\n }\n\n function kpiNode(node) {\n return {\n name: node.uniqueName,\n type: node.type\n };\n }\n\n function normalizeKPIs(data) {\n for (var idx = 0, length = data.length; idx < length; idx++) {\n data[idx].uniqueName = data[idx].name;\n data[idx].type = \"kpi\";\n }\n\n return data;\n }\n\n function settingTargetFromNode(node) {\n var target = $(node).closest(\".k-pivot-setting\");\n\n if (target.length) {\n return target.data(\"kendoPivotSettingTarget\");\n }\n return null;\n }\n\n function getIcons(sortIcon, options) {\n var sortable = options.sortable;\n var result = '';\n\n if (sortable) {\n result += sortIcon ? `${kendo.ui.icon(sortIcon + \"-sm\")}` : '';\n }\n\n if (options.filterable || sortable) {\n result += `${kendo.ui.icon(\"more-vertical\")}`;\n }\n\n result += `${kendo.ui.icon(\"x\")}`;\n\n return result;\n }\n\n var PivotConfiguratorV2 = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this._ariaId = this.element.attr(\"id\") || kendo.guid();\n this.element.addClass(\"k-widget k-pivotgrid-configurator k-pos-relative\");\n this.element.attr({\n \"role\": \"dialog\",\n \"aria-hidden\": true,\n \"aria-labelledby\": `${this._ariaId}-configurator-header`\n });\n\n this._dataSource();\n\n if (this.options.navigatable) {\n this._initPivotGridConfiguratorNavigation();\n }\n\n this._layout();\n\n this.refresh();\n\n if (options.height) {\n this.element.height(options.height);\n }\n\n kendo.notify(this);\n },\n\n events: [],\n\n options: {\n name: \"PivotConfiguratorV2\",\n orientation: \"vertical\",\n filterable: false,\n sortable: false,\n messages: {\n title: \"Settings\",\n cancelButtonText: \"Cancel\",\n applyButtonText: \"Apply\",\n measures: \"Select some fields to begin setup\",\n columns: \"Select some fields to begin setup\",\n rows: \"Select some fields to begin setup\"\n }\n },\n\n setDataSource: function(dataSource) {\n this.options.dataSource = dataSource;\n\n this._dataSource();\n\n if (this.measures) {\n this.measures.setDataSource(dataSource);\n }\n\n if (this.rows) {\n this.rows.setDataSource(dataSource);\n }\n\n if (this.columns) {\n this.columns.setDataSource(dataSource);\n }\n\n this.refresh();\n },\n\n _initPivotGridConfiguratorNavigation: function() {\n var that = this;\n that.configuratorNavigation = new ConfiguratorNavigation({ tabIndex: 0 });\n that.configuratorNavigation.start(that.element[0]);\n\n const firstCell = that.configuratorNavigation.first;\n\n if (firstCell) {\n firstCell.setAttribute('tabindex', '0');\n }\n },\n\n _dataSource: function() {\n var that = this;\n\n if (that.dataSource && that._refreshHandler) {\n that.dataSource.unbind(\"change\", that._refreshHandler)\n .unbind(\"error\", that._errorHandler)\n .unbind(\"progress\", that._progressHandler);\n } else {\n that._errorHandler = that._error.bind(that);\n that._refreshHandler = that.refresh.bind(that);\n that._progressHandler = that._requestStart.bind(that);\n }\n\n that.dataSource = kendo.data.PivotDataSourceV2.create(that.options.dataSource);\n that.dataSource.bind(\"change\", that._refreshHandler)\n .bind(\"error\", that._errorHandler)\n .bind(\"progress\", that._progressHandler);\n },\n\n _layout: function() {\n\n var that = this;\n var options = that.options;\n var messages = options.messages;\n var horizontal = options.orientation == \"horizontal\";\n\n var panel = $(\"
\");\n\n panel.addClass(horizontal ? \"k-pivotgrid-configurator-horizontal\" : \"k-pivotgrid-configurator-vertical\");\n\n that.element.append(panel);\n\n that.panel = panel;\n\n $(SETTINGS_TEMPLATE({ title: this.options.messages.title, headerTextId: `${that._ariaId}-configurator-header` })).appendTo(that.panel);\n\n $(CONTENT_TEMPLATE({ formClass: horizontal ? \"k-form k-form-horizontal\" : \"k-form\", filterable: options.filterable, horizontal: horizontal, ariaId: that._ariaId }))\n .appendTo(that.panel).find(\".k-chip-list\")\n .each(function(index, elm) {\n kendo.html.renderChipList(elm, $.extend({}, options));\n $(elm).attr({\n \"role\": \"listbox\",\n \"aria-orientation\": \"horizontal\",\n });\n });\n\n that._fields();\n $(ACTIONS_TEMPLATE({ cancelText: messages.cancelButtonText, applyText: messages.applyButtonText })).appendTo(that.panel);\n that._targets();\n\n that.element.on(\"click\" + ns, \".k-pivotgrid-configurator-actions > button\", that._actions.bind(that));\n },\n\n _actions: function(e) {\n e.preventDefault();\n\n var target = $(e.currentTarget).closest(\":not(path,svg)\");\n if (target.index()) {\n this.columns._applyState();\n this.rows._applyState();\n this.measures._applyState();\n this.dataSource.read();\n } else {\n this.columns._cancelChanges();\n this.rows._cancelChanges();\n this.measures._cancelChanges();\n this.treeView.dataSource.read();\n }\n },\n\n _targets: function() {\n var that = this;\n var columns = that.panel.find(\".k-column-fields\").first();\n var rows = that.panel.find(\".k-row-fields\");\n var measures = that.panel.find(\".k-chip-list\").last();\n var options = this.options;\n\n var targetItemTemplate = ({ name, menuenabled }) => {\n var chip = kendo.html.renderChip(TARGET_ITEM_TEMPLATE({ name, menuenabled }), $.extend({}, options, {\n fillMode: \"solid\",\n themeColor: \"base\",\n rounded: \"full\",\n removable: true,\n removeIcon: \"x-circle\",\n actions: menuenabled ? [\n { icon: \"more-vertical\" }\n ] : null\n }));\n\n return chip;\n };\n\n this.columns = this._createTarget(columns, {\n navigatable: options.navigatable,\n filterable: options.filterable,\n sortable: options.sortable,\n template: targetItemTemplate,\n connectWith: rows,\n messages: {\n empty: options.messages.columns,\n fieldMenu: this.options.messages.fieldMenu\n },\n configuratorNavigation: that.configuratorNavigation\n });\n this.columns.element.attr(\"aria-labelledby\", `${this._ariaId}-configurator-header ${this._ariaId}-configurator-columns`);\n\n this.rows = this._createTarget(rows, {\n navigatable: options.navigatable,\n filterable: options.filterable,\n sortable: options.sortable,\n template: targetItemTemplate,\n setting: \"rows\",\n connectWith: columns,\n messages: {\n empty: this.options.messages.rows,\n fieldMenu: this.options.messages.fieldMenu\n },\n configuratorNavigation: that.configuratorNavigation\n });\n this.rows.element.attr(\"aria-labelledby\", `${this._ariaId}-configurator-header ${this._ariaId}-configurator-rows`);\n\n this.measures = this._createTarget(measures, {\n navigatable: options.navigatable,\n filterable: false,\n sortable: false,\n setting: \"measures\",\n template: targetItemTemplate,\n messages: {\n empty: options.messages.measures,\n fieldMenu: this.options.messages.fieldMenu\n },\n configuratorNavigation: that.configuratorNavigation\n });\n\n this.measures.element.attr(\"aria-labelledby\", `${this._ariaId}-configurator-header ${this._ariaId}-configurator-values`);\n\n [this.columns, this.rows, this.measures].forEach(x=> x.element.find(\".k-chip\").attr(\"role\", \"option\"));\n },\n\n _createTarget: function(element, options) {\n var that = this;\n return new kendo.ui.PivotSettingTargetV2(element, $.extend({\n dataSource: this.dataSource,\n hint: function(element) {\n return element.clone();\n },\n remove: function(e) {\n var item = that.treeView.wrapper\n .find(\"[data-name='\" + e.name + \"']\")\n .closest(\"li\");\n var id = item.attr(kendo.attr(\"uid\"));\n var dataItem = that.treeView.dataSource.getByUid(id);\n\n if (dataItem) {\n dataItem.checked = false;\n item.find(\"input\").attr(\"checked\", false);\n }\n },\n template: options.template\n }, options));\n },\n\n _fields: function() {\n var that = this;\n var container = that.element.find(\".k-fields-list-wrapper\");\n\n this.treeView = $(`
`).appendTo(container)\n .kendoTreeView({\n checkboxes: {\n checkChildren: true,\n template: ({ item }) => {\n var result = '';\n\n if ((item.hasChildren || item.aggregator || item.local) && item.uniqueName !== \"[KPIs]\" && item.uniqueName !== \"[Measures]\" && item.uniqueName !== \"Measures\") {\n result += ``;\n }\n\n return result;\n }\n },\n dataTextField: \"caption\",\n autoBind: false,\n check: function(e) {\n var dataItem = e.sender.dataItem(e.node);\n var action = {\n type: PIVOT_CONFIGURATOR_ACTION.toggleSelection,\n payload: dataItem\n };\n var state = {\n columnAxes: that.columns._state(),\n rowAxes: that.rows._state(),\n measureAxes: that.measures._state()\n };\n var result = configuratorReducer(state, action);\n\n if (that.dataSource.cubeSchema && result.measureAxes && result.measureAxes.length &&\n result.measureAxes.length > state.measureAxes.length) {\n that.dataSource.cubeSchema.restoreMeasure(result.measureAxes, dataItem);\n }\n\n if (dataItem.defaultHierarchy && dataItem.items && dataItem.items.length) {\n that._checkMembers([{ name: dataItem.defaultHierarchy }], dataItem.items);\n dataItem.items.trigger(\"change\");\n }\n\n if (result.columnAxes) {\n that.columns._state(result.columnAxes);\n that.columns._redraw();\n }\n if (result.rowAxes) {\n that.rows._state(result.rowAxes);\n that.rows._redraw();\n }\n if (result.measureAxes) {\n that.measures._state(result.measureAxes);\n that.measures._redraw();\n }\n },\n dataSource: this._treeViewDataSource()\n })\n .data(\"kendoTreeView\");\n\n this.treeView.wrapper.off(\"click\", this.treeView._clickHandler);\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 if (that.dataSource.cubeSchema && item.uniqueName !== \"Measures\") {\n item.local = true;\n return false;\n }\n return !(\"hierarchyUniqueName\" in item) && !(\"aggregator\" in item);\n }\n }\n },\n transport: {\n read: function(options) {\n var node;\n var transport = that.dataSource.transport;\n var catalog = transport.catalog();\n var cube = transport.cube();\n var fetchOptions = {\n url: transport.options.read\n };\n var columns = that.columns._state();\n var rows = that.rows._state();\n var measures = that.measures._state();\n var members = columns.concat(rows).concat(measures);\n var fields;\n var dsMeasures;\n var fetchOpts;\n\n if ($.isEmptyObject(options.data)) {\n if (that.dataSource.cubeSchema) {\n fields = that.dataSource.cubeSchema.dimensions();\n that._checkMembers(members, fields);\n options.success(fields);\n } else {\n fetchOpts = {\n connection: {\n catalog: catalog,\n cube: cube\n },\n restrictions: {\n catalogName: catalog,\n cubeName: cube\n },\n command: 'schemaDimensions'\n };\n\n fetchDiscover(fetchOptions, fetchOpts)\n .then(function(newFields) {\n that._checkMembers(members, newFields);\n addKPI(newFields);\n options.success(newFields);\n });\n }\n } else {\n //Hack to get the actual node as the HierarchicalDataSource does not support passing it\n node = that.treeView.dataSource.get(options.data.uniqueName);\n\n if (that.dataSource.cubeSchema) {\n dsMeasures = that.dataSource.measures();\n that._checkMembers(members, dsMeasures);\n options.success(dsMeasures);\n } else {\n if (node.uniqueName === \"[KPIs]\") {\n fetchDiscover(fetchOptions, that._getKPIOptions(catalog, cube))\n .then(function(newFields) {\n options.success(normalizeKPIs(newFields));\n });\n } else if (node.type == \"kpi\") {\n options.success(buildKPImeasures(node));\n } else {\n fetchDiscover(fetchOptions ,that._loadFieldsCommand(node, catalog, cube))\n .then(function(newFields) {\n that._checkMembers(members, newFields);\n options.success(newFields);\n });\n }\n }\n }\n }\n }\n });\n },\n\n _checkMembers: function(members, newData) {\n var hash = {};\n var index = 0;\n\n for (index = 0; index < members.length; index++) {\n hash[members[index].name] = true;\n }\n\n for (index = 0; index < newData.length; index++) {\n if (hash[newData[index].uniqueName]) {\n newData[index].checked = true;\n }\n }\n },\n\n _getKPIOptions: function(catalog, cube) {\n return {\n connection: {\n catalog: catalog,\n cube: cube\n },\n restrictions: {\n catalogName: catalog,\n cubeName: cube\n },\n command: 'schemaKPIs'\n };\n },\n\n _loadFieldsCommand: function(field, catalog, cube) {\n var command;\n var dimensionUniqueName;\n var hierarchyUniqueName;\n\n if (field.type === 2) {\n command = 'schemaMeasures';\n } else if (field.dimensionUniqueName) {\n command = 'schemaLevels';\n hierarchyUniqueName = field.uniqueName;\n } else {\n command = 'schemaHierarchies';\n dimensionUniqueName = field.uniqueName;\n }\n\n var options = {\n connection: {\n catalog: catalog,\n cube: cube\n },\n restrictions: {\n catalogName: catalog,\n cubeName: cube,\n hierarchyUniqueName: hierarchyUniqueName,\n dimensionUniqueName: dimensionUniqueName\n },\n command: command\n };\n\n return options;\n },\n\n _progress: function(toggle) {\n kendo.ui.progress(this.element, toggle);\n },\n\n _error: function() {\n this._progress(false);\n },\n\n _requestStart: function() {\n this._progress(true);\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n this.dataSource.unbind(\"change\", this._refreshHandler);\n\n this.element.off(ns);\n\n this.rows.destroy();\n this.columns.destroy();\n this.measures.destroy();\n this.treeView.destroy();\n\n this.element = null;\n this._refreshHandler = null;\n },\n\n refresh: function() {\n if (this.treeView) {\n this.treeView.dataSource.fetch();\n }\n\n this._progress(false);\n }\n\n });\n\n ui.plugin(PivotConfiguratorV2);\n\n var PivotConfigurator = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this.element.addClass(\"k-pivotgrid-configurator-panel kendo-jquery\");\n\n if (this.options.height) {\n this.element.outerHeight(this.options.height);\n }\n\n this._dataSource();\n\n this._layout();\n\n this.refresh();\n\n kendo.notify(this);\n },\n\n events: [],\n\n options: {\n name: \"PivotConfigurator\",\n filterable: false,\n sortable: false,\n messages: {\n measures: \"Drop Data Fields Here\",\n columns: \"Drop Column Fields Here\",\n rows: \"Drop Rows Fields Here\",\n measuresLabel: \"Measures\",\n columnsLabel: \"Columns\",\n rowsLabel: \"Rows\",\n fieldsLabel: \"Fields\"\n }\n },\n\n _dataSource: function() {\n var that = this;\n\n if (that.dataSource && that._refreshHandler) {\n that.dataSource.unbind(\"change\", that._refreshHandler)\n .unbind(\"error\", that._errorHandler)\n .unbind(\"progress\", that._progressHandler);\n } else {\n that._errorHandler = that._error.bind(that);\n that._refreshHandler = that.refresh.bind(that);\n that._progressHandler = that._requestStart.bind(that);\n }\n\n that.dataSource = kendo.data.PivotDataSource.create(that.options.dataSource);\n that.dataSource.bind(\"change\", that._refreshHandler)\n .bind(\"error\", that._errorHandler)\n .bind(\"progress\", that._progressHandler);\n },\n\n setDataSource: function(dataSource) {\n this.options.dataSource = dataSource;\n\n this._dataSource();\n\n if (this.measures) {\n this.measures.setDataSource(dataSource);\n }\n\n if (this.rows) {\n this.rows.setDataSource(dataSource);\n }\n\n if (this.columns) {\n this.columns.setDataSource(dataSource);\n }\n\n this.refresh();\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 !(\"hierarchyUniqueName\" in item) && !(\"aggregator\" in item);\n }\n }\n },\n transport: {\n read: function(options) {\n var promise;\n var node;\n var kpi;\n\n if ($.isEmptyObject(options.data)) {\n promise = that.dataSource.schemaDimensions();\n\n promise.done(function(data) {\n if (!that.dataSource.cubeBuilder) {\n addKPI(data);\n }\n options.success(data);\n })\n .fail(options.error);\n } else {\n //Hack to get the actual node as the HierarchicalDataSource does not support passing it\n node = that.treeView.dataSource.get(options.data.uniqueName);\n\n if (node.uniqueName === \"[KPIs]\") {\n kpi = true;\n promise = that.dataSource.schemaKPIs();\n promise.done(function(data) {\n options.success(normalizeKPIs(data));\n })\n .fail(options.error);\n } else if (node.type == \"kpi\") {\n kpi = true;\n options.success(buildKPImeasures(node));\n }\n\n if (!kpi) {\n if (node.type == 2) { //measure\n promise = that.dataSource.schemaMeasures();\n } else if (node.dimensionUniqueName) { // hierarchy\n promise = that.dataSource.schemaLevels(options.data.uniqueName);\n } else { // dimension\n promise = that.dataSource.schemaHierarchies(options.data.uniqueName);\n }\n\n promise.done(options.success)\n .fail(options.error);\n }\n }\n }\n }\n });\n },\n\n _progress: function(toggle) {\n kendo.ui.progress(this.element, toggle);\n },\n\n _error: function() {\n this._progress(false);\n },\n\n _requestStart: function() {\n this._progress(true);\n },\n\n _layout: function() {\n $('
').appendTo(this.element);\n this.form = this.element.find('.k-pivotgrid-configurator-content');\n\n this._fields();\n this._targets();\n },\n\n _fields: function() {\n var container = $('
' + encode(this.options.messages.fieldsLabel) + '
').appendTo(this.form);\n\n var template = ({ item }) => {\n var result = '';\n\n if (item.type == 2 || item.uniqueName == \"[KPIs]\") {\n result += kendo.ui.icon(item.type == 2 ? \"sum\" : \"caret-alt-expand\"/* \"kpi\" */);\n } else if (item.type && item.type !== \"kpi\") {\n result += kendo.ui.icon(\"arrows-axes\");\n }\n\n result += `${encode(item.caption || item.name)}`;\n\n return result;\n };\n\n this.treeView = $(\"
\").appendTo(container.find('.k-fields-list-wrapper'))\n .kendoTreeView({\n template: template,\n dataTextField: \"caption\",\n dragAndDrop: true,\n autoBind: false,\n dataSource: this._treeViewDataSource(),\n dragstart: function(e) {\n var dataItem = this.dataItem(e.sourceNode);\n\n if ((!dataItem.hasChildren && !dataItem.aggregator && !dataItem.measure) || (dataItem.type == 2) || dataItem.uniqueName === \"[KPIs]\") {\n e.preventDefault();\n }\n },\n drag: function(e) {\n var status = \"cancel\";\n var setting = settingTargetFromNode(e.dropTarget);\n\n if (setting && setting.validate(this.dataItem(e.sourceNode))) {\n status = \"plus\";\n }\n\n e.setStatusClass(status);\n },\n drop: function(e) {\n e.preventDefault();\n\n var setting = settingTargetFromNode(e.dropTarget);\n var node = this.dataItem(e.sourceNode);\n var idx, length, measures;\n var name;\n\n if (setting && setting.validate(node)) {\n name = node.defaultHierarchy || node.uniqueName;\n\n if (node.type === \"kpi\") {\n measures = buildKPImeasures(node);\n length = measures.length;\n name = [];\n\n for (idx = 0; idx < length; idx++) {\n name.push(kpiNode(measures[idx]));\n }\n } else if (node.kpi) {\n name = [kpiNode(node)];\n }\n\n setting.add(name);\n }\n }\n })\n .data(\"kendoTreeView\");\n },\n\n _createTarget: function(element, options) {\n var template;\n\n template = ({ name, sortIcon }) => ''\n + `
`\n + ''\n + `${name}`\n + ''\n + ''\n + getIcons(sortIcon, options)\n + ''\n + '
';\n\n return new kendo.ui.PivotSettingTarget(element, $.extend({\n dataSource: this.dataSource,\n template: template,\n emptyTemplate: (data) => `${data}`\n }, options));\n },\n\n _targets: function() {\n var container = $('
').appendTo(this.form);\n\n var columnsContainer = $(SETTING_CONTAINER_TEMPLATE({ name: this.options.messages.columnsLabel, icon: \"columns\" })).appendTo(container);\n var columns = $('
').appendTo(columnsContainer.find('.k-pivotgrid-target-wrap'));\n\n var rowsContainer = $(SETTING_CONTAINER_TEMPLATE({ name: this.options.messages.rowsLabel, icon: \"rows\" })).appendTo(container);\n var rows = $('
').appendTo(rowsContainer.find('.k-pivotgrid-target-wrap'));\n\n var measuresContainer = $(SETTING_CONTAINER_TEMPLATE({ name: this.options.messages.measuresLabel, icon: \"sum\" })).appendTo(container);\n var measures = $('
').appendTo(measuresContainer.find('.k-pivotgrid-target-wrap'));\n\n var options = this.options;\n\n this.columns = this._createTarget(columns, {\n filterable: options.filterable,\n sortable: options.sortable,\n connectWith: rows,\n messages: {\n empty: options.messages.columns,\n fieldMenu: options.messages.fieldMenu\n }\n });\n\n this.rows = this._createTarget(rows, {\n filterable: options.filterable,\n sortable: options.sortable,\n setting: \"rows\",\n connectWith: columns,\n messages: {\n empty: this.options.messages.rows,\n fieldMenu: this.options.messages.fieldMenu\n }\n });\n\n this.measures = this._createTarget(measures, {\n setting: \"measures\",\n messages: {\n empty: options.messages.measures\n }\n });\n\n columns\n .add(rows)\n .add(measures)\n .on(HOVER_EVENTS, \".k-item:not(.k-empty)\", this._toggleHover);\n },\n\n _toggleHover: function(e) {\n $(e.currentTarget).closest(\":not(path,svg)\").toggleClass(\"k-hover\", e.type === \"mouseenter\");\n },\n\n _resize: function() {\n var element = this.element;\n var height = this.options.height;\n\n if (!height) {\n return;\n }\n\n element.outerHeight(height);\n },\n\n refresh: function() {\n var dataSource = this.dataSource;\n\n if (dataSource.cubeBuilder || this._cube !== dataSource.cube() || this._catalog !== dataSource.catalog()) {\n this.treeView.dataSource.fetch();\n }\n\n this._catalog = this.dataSource.catalog();\n this._cube = this.dataSource.cube();\n\n this._resize();\n\n this._progress(false);\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n this.dataSource.unbind(\"change\", this._refreshHandler);\n\n this.form.find(\".k-pivot-setting\").off(ns);\n\n this.rows.destroy();\n this.columns.destroy();\n this.measures.destroy();\n this.treeView.destroy();\n\n this.element = null;\n this._refreshHandler = null;\n }\n });\n\n function kpiMeasure(name, measure, type) {\n return {\n hierarchyUniqueName: name,\n uniqueName: measure,\n caption: measure,\n measure: measure,\n name: measure,\n type: type,\n kpi: true\n };\n }\n\n function buildKPImeasures(node) {\n var name = node.name;\n return [\n kpiMeasure(name, node.value, \"value\"),\n kpiMeasure(name, node.goal, \"goal\"),\n kpiMeasure(name, node.status, \"status\"),\n kpiMeasure(name, node.trend, \"trend\")\n ];\n }\n\n kendo.cssProperties.registerPrefix(\"HTMLChip\", \"k-chip-\");\n\n kendo.cssProperties.registerValues(\"HTMLChip\", [{\n prop: \"rounded\",\n values: kendo.cssProperties.roundedValues.concat([['full', 'full']])\n }]);\n\n ui.plugin(PivotConfigurator);\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}