{"version":3,"sources":["kendo.treelist.js"],"names":["f","define","$","undefined","is","field","object","not","func","isCellVisible","this","style","display","leafDataCells","container","indexAttr","rows","find","filter","el","hasClass","cells","length","rowSpan","add","last","kendo","attr","sort","a","b","indexA","indexB","index","parseInt","createPlaceholders","options","i","level","spans","className","push","kendoDomElement","columnsWidth","cols","colWidth","idx","width","indexOf","syncTableHeight","table1","table2","lockedHeigth","tableHeigth","row","diff","offsetHeight","height","TreeListDataSource","Editor","PopupEditor","TreeList","data","extend","kendoDom","dom","element","kendoTextElement","text","kendoHtmlElement","html","ui","DataBoundWidget","DataSource","ObservableArray","Query","Model","proxy","map","grep","inArray","isPlainObject","Array","prototype","STRING","CHANGE","ERROR","PROGRESS","DOT","NS","CLICK","MOUSEDOWN","EDIT","SAVE","EXPAND","COLLAPSE","REMOVE","DATABINDING","DATABOUND","CANCEL","FILTERMENUINIT","COLUMNHIDE","COLUMNSHOW","HEADERCELLS","COLUMNREORDER","COLUMNRESIZE","COLUMNMENUINIT","COLUMNLOCK","COLUMNUNLOCK","PARENTIDFIELD","DRAGSTART","DRAG","DROP","DRAGEND","classNames","wrapper","header","button","alt","editCell","group","gridToolbar","gridHeader","gridHeaderWrap","gridContent","gridContentWrap","gridFilter","footerTemplate","loading","refresh","retry","selected","status","link","withIcon","filterable","icon","iconFilter","iconCollapse","iconExpand","iconHidden","iconPlaceHolder","input","dropPositions","dropTop","dropBottom","dropAdd","dropMiddle","dropDenied","dragStatus","dragClue","dragClueText","defaultCommands","create","imageClass","methodName","createchild","destroy","edit","update","canceledit","excel","pdf","TreeListModel","id","parentId","fields","type","nullable","init","value","fn","call","_loaded","parentIdField","get","accept","set","initiator","loaded","shouldSerialize","base","model","schema","modelBase","_createNewModel","fromModel","_shouldWrap","_push","result","operation","_readData","newData","_concat","source","target","targetLength","_readAggregates","_aggregateResult","reader","aggregates","_defaultParentId","remove","root","items","_subtree","_childrenMap","_removeItems","_filterCallback","query","item","toArray","parentNode","len","defaultParentId","concat","_observeView","_calculateAggregates","subtree","process","filterCallback","aggregate","_queryProcess","hasLoadedChildren","children","hasChildren","slice","_queueRequest","callback","_modelLoaded","childNodes","_modelError","e","_error","success","requestParams","_data","_observe","load","method","remote","serverSorting","serverPaging","serverFiltering","serverGrouping","serverAggregates","defaultPromise","Deferred","resolve","promise","then","contains","child","rootId","_byParentId","defaultId","current","view","at","defaults","rootNodes","baseFilter","isArray","toJSON","Observable","bind","events","_fields","columns","_initContainer","createEditable","editable","Editable","clearContainer","_isEditable","column","format","editor","end","close","empty","removeAttr","_attachHandlers","cycleForm","open","window","modal","resizable","draggable","title","visible","formContent","uid","append","template","_appendTemplate","_appendFields","_appendButtons","Tree","render","appendTo","Window","form","unescape","command","class","fieldRenderer","commandRenderer","closeHandler","_cancelProxy","_cancel","on","_saveProxy","_save","userTriggered","_dettachHandlers","off","trigger","center","_dataSource","dataSource","_columns","_layout","_selectable","_sortable","_resizable","_filterable","_attachEvents","_toolbar","_scrollable","_reorderable","_columnMenu","_minScreenSupport","_draggable","autoBind","fetch","_hasLockedColumns","widget","addClass","_resizeHandler","resize","notify","move","_dragging","HierarchicalDragAndDrop","$angular","autoScroll","itemSelector","allowedContainers","hintText","separator","join","destination","dest","dataItem","src","itemFromTarget","tr","closest","content","dragstart","drag","drop","removeClass","dragend","reorderable","dropHintContainer","dropPositionFrom","dropHint","prevAll","itemFor","tbody","scrollables","lockedContent","touchScroller","scrollable","thead","_wheelScroll","scrollLeft","scrollTop","movable","_touchScroller","sender","x","y","ctrlKey","delta","wheelDeltaY","preventDefault","currentTarget","one","_progress","messages","_showStatus","_render","error","action","_cancelEditor","_adjustHeight","_angularFooters","footer","allAggregates","footerRows","_footerItems","eq","_angularFooter","angular","elements","col","_items","lockedTable","dataItems","n","tmp","message","_contentTree","_lockedContentTree","hide","_hideStatus","show","isHeightSet","contentWrap","toolbar","scrollbar","support","initialHeight","newHeight","outerHeight","table","offsetWidth","parent","clientWidth","_resize","_applyLockedContainersWidth","any","hideMinScreenCols","minScreenResizeHandler","minWidth","screenWidth","innerWidth","screen","minScreenWidth","hideColumn","showColumn","unbind","_refreshHandler","_errorHandler","_progressHandler","_draggableInstance","_destroyEditor","_autoExpandable","lockedHeader","_statusTree","_headerTree","_lockedHeaderColsTree","_lockedContentColsTree","_lockedHeaderTree","name","selectable","sortable","columnMenu","noRows","requestFailed","commands","hierarchy","_toggle","expand","expanded","always","_syncLockedContentHeight","collapse","_toggleChildren","event","icons","retryButton","_commandClick","_commandByName","j","currentName","toLowerCase","commandName","parentsUntil","click","_ensureExpandableColumn","visibleColumns","expandableColumns","expandable","lockedColumns","encoded","_lockedColumns","_nonLockedColumns","_columnTemplates","_columnAttributes","headerTemplate","convertStyle","properties","declaration","split","trim","camelCase","attributes","headerAttributes","rtl","layout","addBack","isRtl","css","first","_initVirtualTrees","_renderCols","_renderHeader","_headerColsTree","prev","_contentColsTree","buttons","_buildCommands","_templateColumns","_flushCache","select","_","_absoluteIndex","_angularItems","buttonClass","_trs","htmlEncode","contentResized","_muteAngularRebind","_adjustRowsHeight","lockedRows","containers","containersLength","heights","lockedHeaderRows","headerRows","offsetHeight1","offsetHeight2","Math","max","_ths","cellClasses","headerContent","ths","href","data-field","data-title","hidden","role","_cols","lockedWidth","headerTable","nonLockedWidth","wrapperWidth","_edit","_tds","_td","_hasFooterTemplate","data-parentId","_footerTd","noop","c","renderer","l","iconClass","_cellContent","_button","data-command","_positionResizeHandle","cellOffset","that","th","resizeHandle","position","left","cellWidth","outerWidth","clientX","indicatorWidth","columnResizeHandleWidth","offset","top","val","locked","autoFitColumn","isLocked","contentTable","footerTable","tables","oldColumnWidth","newColumnWidth","totalWidth","browser","visibleLocked","ceil","each","msie","version","setTimeout","oldWidth","newWidth","_syncLockedHeaderHeight","_adjustLockedHorizontalScrollBar","treelist","Resizable","handle","start","colSelector","startLocation","location","columnWidth","minColumnWidth","resizeend","floor","sortableInstance","cell","fieldAttr","kendoColumnSorter","filterMenuInstance","filterInit","kendoFilterMenu","_change","useAllItems","Selectable","parseOptions","multiple","aria","change","continuousItems","_continuousItems","relatedTarget","_selectableTarget","lockedItems","nonLockedItems","nonLockedColumns","apply","splice","related","_relatedRow","clear","clearSelection","ds","setDataSource","getByUid","editRow","_editMode","_createEditor","_cancelEdit","cancelRow","saveRow","args","sync","addRow","_insertAt","insert","removeRow","cancelChanges","mode","save","cancel","_toggleColumnVisibility","_findColumn","_adjustTablesWidth","selector","Draggable","guid","hint","paddingLeft","paddingRight","lineHeight","paddingTop","paddingBottom","prepend","Reorderable","dragOverContainers","_allowDragOverContainers","inSameContainer","newIndex","oldIndex","before","reorderColumn","lockable","destIndex","lockChanged","sourceIndex","destColumn","nonLockedColumnsLength","lockColumn","unlockColumn","menu","menuOptions","initHandler","_columnMenuInit","lockedColumnsLength","compare","pane","values","owner","closeCallback","kendoColumnMenu","ExcelMixin","PDFMixin","_drawPDF","progress","_drawPDFShadow","avoidLinks","done","page","pageNumber","totalPages","fail","err","reject","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.treelist.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.treelist', [\n 'kendo.dom',\n 'kendo.data',\n 'kendo.columnsorter',\n 'kendo.editable',\n 'kendo.window',\n 'kendo.filtermenu',\n 'kendo.selectable',\n 'kendo.resizable',\n 'kendo.treeview.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'treelist',\n name: 'TreeList',\n category: 'web',\n description: 'The TreeList widget displays self-referencing data and offers rich support for interacting with data, sorting, filtering, and selection.',\n depends: [\n 'dom',\n 'data'\n ],\n features: [\n {\n id: 'treelist-sorting',\n name: 'Sorting',\n description: 'Support for column sorting',\n depends: ['columnsorter']\n },\n {\n id: 'treelist-filtering',\n name: 'Filtering',\n description: 'Support for record filtering',\n depends: ['filtermenu']\n },\n {\n id: 'treelist-editing',\n name: 'Editing',\n description: 'Support for record editing',\n depends: [\n 'editable',\n 'window'\n ]\n },\n {\n id: 'treelist-selection',\n name: 'Selection',\n description: 'Support for row selection',\n depends: ['selectable']\n },\n {\n id: 'treelist-column-resize',\n name: 'Column resizing',\n description: 'Support for column resizing',\n depends: ['resizable']\n },\n {\n id: 'treelist-dragging',\n name: 'Drag & Drop',\n description: 'Support for drag & drop of rows',\n depends: ['treeview.draganddrop']\n },\n {\n id: 'treelist-excel-export',\n name: 'Excel export',\n description: 'Export data as Excel spreadsheet',\n depends: ['excel']\n },\n {\n id: 'treelist-pdf-export',\n name: 'PDF export',\n description: 'Export data as PDF',\n depends: [\n 'pdf',\n 'drawing'\n ]\n }\n ]\n };\n (function ($, undefined) {\n var data = kendo.data;\n var extend = $.extend;\n var kendoDom = kendo.dom;\n var kendoDomElement = kendoDom.element;\n var kendoTextElement = kendoDom.text;\n var kendoHtmlElement = kendoDom.html;\n var ui = kendo.ui;\n var DataBoundWidget = ui.DataBoundWidget;\n var DataSource = data.DataSource;\n var ObservableArray = data.ObservableArray;\n var Query = data.Query;\n var Model = data.Model;\n var proxy = $.proxy;\n var map = $.map;\n var grep = $.grep;\n var inArray = $.inArray;\n var isPlainObject = $.isPlainObject;\n var push = Array.prototype.push;\n var STRING = 'string';\n var CHANGE = 'change';\n var ERROR = 'error';\n var PROGRESS = 'progress';\n var DOT = '.';\n var NS = '.kendoTreeList';\n var CLICK = 'click';\n var MOUSEDOWN = 'mousedown';\n var EDIT = 'edit';\n var SAVE = 'save';\n var EXPAND = 'expand';\n var COLLAPSE = 'collapse';\n var REMOVE = 'remove';\n var DATABINDING = 'dataBinding';\n var DATABOUND = 'dataBound';\n var CANCEL = 'cancel';\n var FILTERMENUINIT = 'filterMenuInit';\n var COLUMNHIDE = 'columnHide';\n var COLUMNSHOW = 'columnShow';\n var HEADERCELLS = 'th.k-header';\n var COLUMNREORDER = 'columnReorder';\n var COLUMNRESIZE = 'columnResize';\n var COLUMNMENUINIT = 'columnMenuInit';\n var COLUMNLOCK = 'columnLock';\n var COLUMNUNLOCK = 'columnUnlock';\n var PARENTIDFIELD = 'parentId';\n var DRAGSTART = 'dragstart';\n var DRAG = 'drag';\n var DROP = 'drop';\n var DRAGEND = 'dragend';\n var classNames = {\n wrapper: 'k-treelist k-grid k-widget',\n header: 'k-header',\n button: 'k-button',\n alt: 'k-alt',\n editCell: 'k-edit-cell',\n group: 'k-treelist-group',\n gridToolbar: 'k-grid-toolbar',\n gridHeader: 'k-grid-header',\n gridHeaderWrap: 'k-grid-header-wrap',\n gridContent: 'k-grid-content',\n gridContentWrap: 'k-grid-content',\n gridFilter: 'k-grid-filter',\n footerTemplate: 'k-footer-template',\n loading: 'k-loading',\n refresh: 'k-i-refresh',\n retry: 'k-request-retry',\n selected: 'k-state-selected',\n status: 'k-status',\n link: 'k-link',\n withIcon: 'k-with-icon',\n filterable: 'k-filterable',\n icon: 'k-icon',\n iconFilter: 'k-filter',\n iconCollapse: 'k-i-collapse',\n iconExpand: 'k-i-expand',\n iconHidden: 'k-i-none',\n iconPlaceHolder: 'k-icon k-i-none',\n input: 'k-input',\n dropPositions: 'k-insert-top k-insert-bottom k-add k-insert-middle',\n dropTop: 'k-insert-top',\n dropBottom: 'k-insert-bottom',\n dropAdd: 'k-add',\n dropMiddle: 'k-insert-middle',\n dropDenied: 'k-denied',\n dragStatus: 'k-drag-status',\n dragClue: 'k-drag-clue',\n dragClueText: 'k-clue-text'\n };\n var defaultCommands = {\n create: {\n imageClass: 'k-add',\n className: 'k-grid-add',\n methodName: 'addRow'\n },\n createchild: {\n imageClass: 'k-add',\n className: 'k-grid-add',\n methodName: 'addRow'\n },\n destroy: {\n imageClass: 'k-delete',\n className: 'k-grid-delete',\n methodName: 'removeRow'\n },\n edit: {\n imageClass: 'k-edit',\n className: 'k-grid-edit',\n methodName: 'editRow'\n },\n update: {\n imageClass: 'k-update',\n className: 'k-primary k-grid-update',\n methodName: 'saveRow'\n },\n canceledit: {\n imageClass: 'k-cancel',\n className: 'k-grid-cancel',\n methodName: '_cancelEdit'\n },\n excel: {\n imageClass: 'k-i-excel',\n className: 'k-grid-excel',\n methodName: 'saveAsExcel'\n },\n pdf: {\n imageClass: 'k-i-pdf',\n className: 'k-grid-pdf',\n methodName: 'saveAsPDF'\n }\n };\n var TreeListModel = Model.define({\n id: 'id',\n parentId: PARENTIDFIELD,\n fields: {\n id: { type: 'number' },\n parentId: {\n type: 'number',\n nullable: true\n }\n },\n init: function (value) {\n Model.fn.init.call(this, value);\n this._loaded = false;\n if (!this.parentIdField) {\n this.parentIdField = PARENTIDFIELD;\n }\n this.parentId = this.get(this.parentIdField);\n },\n accept: function (data) {\n Model.fn.accept.call(this, data);\n this.parentId = this.get(this.parentIdField);\n },\n set: function (field, value, initiator) {\n if (field == PARENTIDFIELD && this.parentIdField != PARENTIDFIELD) {\n this[this.parentIdField] = value;\n }\n Model.fn.set.call(this, field, value, initiator);\n if (field == this.parentIdField) {\n this.parentId = this.get(this.parentIdField);\n }\n },\n loaded: function (value) {\n if (value !== undefined) {\n this._loaded = value;\n } else {\n return this._loaded;\n }\n },\n shouldSerialize: function (field) {\n return Model.fn.shouldSerialize.call(this, field) && field !== '_loaded' && field != '_error' && field != '_edit' && !(this.parentIdField !== 'parentId' && field === 'parentId');\n }\n });\n TreeListModel.parentIdField = PARENTIDFIELD;\n TreeListModel.define = function (base, options) {\n if (options === undefined) {\n options = base;\n base = TreeListModel;\n }\n var parentId = options.parentId || PARENTIDFIELD;\n options.parentIdField = parentId;\n var model = Model.define(base, options);\n if (parentId) {\n model.parentIdField = parentId;\n }\n return model;\n };\n function is(field) {\n return function (object) {\n return object[field];\n };\n }\n function not(func) {\n return function (object) {\n return !func(object);\n };\n }\n var TreeListDataSource = DataSource.extend({\n init: function (options) {\n DataSource.fn.init.call(this, extend(true, {}, {\n schema: {\n modelBase: TreeListModel,\n model: TreeListModel\n }\n }, options));\n },\n _createNewModel: function (data) {\n var model = {};\n var fromModel = data instanceof Model;\n if (fromModel) {\n model = data;\n }\n model = DataSource.fn._createNewModel.call(this, model);\n if (!fromModel) {\n if (data.parentId) {\n data[model.parentIdField] = data.parentId;\n }\n model.accept(data);\n }\n return model;\n },\n _shouldWrap: function () {\n return true;\n },\n _push: function (result, operation) {\n var data = DataSource.fn._readData.call(this, result);\n if (!data) {\n data = result;\n }\n this[operation](data);\n },\n _readData: function (newData) {\n var data = this.data();\n newData = DataSource.fn._readData.call(this, newData);\n this._concat(newData, data);\n if (newData instanceof ObservableArray) {\n return newData;\n }\n return data;\n },\n _concat: function (source, target) {\n var targetLength = target.length;\n for (var i = 0; i < source.length; i++) {\n target[targetLength++] = source[i];\n }\n target.length = targetLength;\n },\n _readAggregates: function (data) {\n var result = extend(this._aggregateResult, this.reader.aggregates(data));\n if ('' in result) {\n result[this._defaultParentId()] = result[''];\n delete result[''];\n }\n return result;\n },\n remove: function (root) {\n var items = this._subtree(this._childrenMap(this.data()), root.id);\n this._removeItems(items);\n DataSource.fn.remove.call(this, root);\n },\n _filterCallback: function (query) {\n var i, item;\n var map = {};\n var result = [];\n var data = query.toArray();\n for (i = 0; i < data.length; i++) {\n item = data[i];\n while (item) {\n if (!map[item.id]) {\n map[item.id] = true;\n result.push(item);\n }\n if (!map[item.parentId]) {\n map[item.parentId] = true;\n item = this.parentNode(item);\n if (item) {\n result.push(item);\n }\n } else {\n break;\n }\n }\n }\n return new Query(result);\n },\n _subtree: function (map, id) {\n var result = map[id] || [];\n var defaultParentId = this._defaultParentId();\n for (var i = 0, len = result.length; i < len; i++) {\n if (result[i].id !== defaultParentId) {\n result = result.concat(this._subtree(map, result[i].id));\n }\n }\n return result;\n },\n _childrenMap: function (data) {\n var map = {};\n var i, item, id, parentId;\n data = this._observeView(data);\n for (i = 0; i < data.length; i++) {\n item = data[i];\n id = item.id;\n parentId = item.parentId;\n map[id] = map[id] || [];\n map[parentId] = map[parentId] || [];\n map[parentId].push(item);\n }\n return map;\n },\n _calculateAggregates: function (data, options) {\n options = options || {};\n var result = {};\n var item, subtree, i;\n var filter = options.filter;\n if (filter) {\n data = Query.process(data, {\n filter: filter,\n filterCallback: proxy(this._filterCallback, this)\n }).data;\n }\n var map = this._childrenMap(data);\n result[this._defaultParentId()] = new Query(this._subtree(map, this._defaultParentId())).aggregate(options.aggregate);\n for (i = 0; i < data.length; i++) {\n item = data[i];\n subtree = this._subtree(map, item.id);\n result[item.id] = new Query(subtree).aggregate(options.aggregate);\n }\n return result;\n },\n _queryProcess: function (data, options) {\n options = options || {};\n options.filterCallback = proxy(this._filterCallback, this);\n var defaultParentId = this._defaultParentId();\n var result = Query.process(data, options);\n var map = this._childrenMap(result.data);\n var hasLoadedChildren, i, item, children;\n data = map[defaultParentId] || [];\n for (i = 0; i < data.length; i++) {\n item = data[i];\n if (item.id === defaultParentId) {\n continue;\n }\n children = map[item.id];\n hasLoadedChildren = !!(children && children.length);\n if (!item.loaded()) {\n item.loaded(hasLoadedChildren || !item.hasChildren);\n }\n if (item.loaded() || item.hasChildren !== true) {\n item.hasChildren = hasLoadedChildren;\n }\n if (hasLoadedChildren) {\n data = data.slice(0, i + 1).concat(children, data.slice(i + 1));\n }\n }\n result.data = data;\n return result;\n },\n _queueRequest: function (options, callback) {\n callback.call(this);\n },\n _modelLoaded: function (id) {\n var model = this.get(id);\n model.loaded(true);\n model.hasChildren = this.childNodes(model).length > 0;\n },\n _modelError: function (id, e) {\n this.get(id)._error = e;\n },\n success: function (data, requestParams) {\n if (!requestParams || typeof requestParams.id == 'undefined') {\n this._data = this._observe([]);\n }\n return DataSource.fn.success.call(this, data, requestParams);\n },\n load: function (model) {\n var method = '_query';\n var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n var defaultPromise = $.Deferred().resolve().promise();\n if (model.loaded()) {\n if (remote) {\n return defaultPromise;\n }\n } else if (model.hasChildren) {\n method = 'read';\n }\n return this[method]({ id: model.id }).then(proxy(this._modelLoaded, this, model.id), proxy(this._modelError, this, model.id));\n },\n contains: function (root, child) {\n var rootId = root.id;\n while (child) {\n if (child.parentId === rootId) {\n return true;\n }\n child = this.parentNode(child);\n }\n return false;\n },\n _byParentId: function (id, defaultId) {\n var result = [];\n var view = this.view();\n var current;\n if (id === defaultId) {\n return [];\n }\n for (var i = 0; i < view.length; i++) {\n current = view.at(i);\n if (current.parentId == id) {\n result.push(current);\n }\n }\n return result;\n },\n _defaultParentId: function () {\n return this.reader.model.fn.defaults[this.reader.model.parentIdField];\n },\n childNodes: function (model) {\n return this._byParentId(model.id, this._defaultParentId());\n },\n rootNodes: function () {\n return this._byParentId(this._defaultParentId());\n },\n parentNode: function (model) {\n return this.get(model.parentId);\n },\n level: function (model) {\n var result = -1;\n if (!(model instanceof TreeListModel)) {\n model = this.get(model);\n }\n do {\n model = this.parentNode(model);\n result++;\n } while (model);\n return result;\n },\n filter: function (value) {\n var baseFilter = DataSource.fn.filter;\n if (value === undefined) {\n return baseFilter.call(this, value);\n }\n baseFilter.call(this, value);\n }\n });\n TreeListDataSource.create = function (options) {\n if ($.isArray(options)) {\n options = { data: options };\n } else if (options instanceof ObservableArray) {\n options = { data: options.toJSON() };\n }\n return options instanceof TreeListDataSource ? options : new TreeListDataSource(options);\n };\n function isCellVisible() {\n return this.style.display !== 'none';\n }\n function leafDataCells(container) {\n var rows = container.find('>tr:not(.k-filter-row)');\n var filter = function () {\n var el = $(this);\n return !el.hasClass('k-group-cell') && !el.hasClass('k-hierarchy-cell');\n };\n var cells = $();\n if (rows.length > 1) {\n cells = rows.find('th').filter(filter).filter(function () {\n return this.rowSpan > 1;\n });\n }\n cells = cells.add(rows.last().find('th').filter(filter));\n var indexAttr = kendo.attr('index');\n cells.sort(function (a, b) {\n a = $(a);\n b = $(b);\n var indexA = a.attr(indexAttr);\n var indexB = b.attr(indexAttr);\n if (indexA === undefined) {\n indexA = $(a).index();\n }\n if (indexB === undefined) {\n indexB = $(b).index();\n }\n indexA = parseInt(indexA, 10);\n indexB = parseInt(indexB, 10);\n return indexA > indexB ? 1 : indexA < indexB ? -1 : 0;\n });\n return cells;\n }\n function createPlaceholders(options) {\n var spans = [];\n var className = options.className;\n for (var i = 0, level = options.level; i < level; i++) {\n spans.push(kendoDomElement('span', { className: className }));\n }\n return spans;\n }\n function columnsWidth(cols) {\n var colWidth, width = 0;\n for (var idx = 0, length = cols.length; idx < length; idx++) {\n colWidth = cols[idx].style.width;\n if (colWidth && colWidth.indexOf('%') == -1) {\n width += parseInt(colWidth, 10);\n }\n }\n return width;\n }\n function syncTableHeight(table1, table2) {\n table1 = table1[0];\n table2 = table2[0];\n if (table1.rows.length !== table2.rows.length) {\n var lockedHeigth = table1.offsetHeight;\n var tableHeigth = table2.offsetHeight;\n var row;\n var diff;\n if (lockedHeigth > tableHeigth) {\n row = table2.rows[table2.rows.length - 1];\n diff = lockedHeigth - tableHeigth;\n } else {\n row = table1.rows[table1.rows.length - 1];\n diff = tableHeigth - lockedHeigth;\n }\n row.style.height = row.offsetHeight + diff + 'px';\n }\n }\n var Editor = kendo.Observable.extend({\n init: function (element, options) {\n kendo.Observable.fn.init.call(this);\n options = this.options = extend(true, {}, this.options, options);\n this.element = element;\n this.bind(this.events, options);\n this.model = this.options.model;\n this.fields = this._fields(this.options.columns);\n this._initContainer();\n this.createEditable();\n },\n events: [],\n _initContainer: function () {\n this.wrapper = this.element;\n },\n createEditable: function () {\n var options = this.options;\n this.editable = new ui.Editable(this.wrapper, {\n fields: this.fields,\n target: options.target,\n clearContainer: options.clearContainer,\n model: this.model\n });\n },\n _isEditable: function (column) {\n return column.field && this.model.editable(column.field);\n },\n _fields: function (columns) {\n var fields = [];\n var idx, length, column;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (this._isEditable(column)) {\n fields.push({\n field: column.field,\n format: column.format,\n editor: column.editor\n });\n }\n }\n return fields;\n },\n end: function () {\n return this.editable.end();\n },\n close: function () {\n this.destroy();\n },\n destroy: function () {\n this.editable.destroy();\n this.editable.element.find('[' + kendo.attr('container-for') + ']').empty().end().removeAttr(kendo.attr('role'));\n this.model = this.wrapper = this.element = this.columns = this.editable = null;\n }\n });\n var PopupEditor = Editor.extend({\n init: function (element, options) {\n Editor.fn.init.call(this, element, options);\n this._attachHandlers();\n kendo.cycleForm(this.wrapper);\n this.open();\n },\n events: [\n CANCEL,\n SAVE\n ],\n options: {\n window: {\n modal: true,\n resizable: false,\n draggable: true,\n title: 'Edit',\n visible: false\n }\n },\n _initContainer: function () {\n var options = this.options;\n var formContent = [];\n this.wrapper = $('
').attr(kendo.attr('uid'), this.model.uid).append('
');\n if (options.template) {\n this._appendTemplate(formContent);\n this.fields = [];\n } else {\n this._appendFields(formContent);\n }\n this._appendButtons(formContent);\n new kendoDom.Tree(this.wrapper.children()[0]).render(formContent);\n this.wrapper.appendTo(options.appendTo);\n this.window = new ui.Window(this.wrapper, options.window);\n },\n _appendTemplate: function (form) {\n var template = this.options.template;\n if (typeof template === STRING) {\n template = window.unescape(template);\n }\n template = kendo.template(template)(this.model);\n form.push(kendoHtmlElement(template));\n },\n _appendFields: function (form) {\n var idx, length, column;\n var columns = this.options.columns;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (column.command) {\n continue;\n }\n form.push(kendoHtmlElement('
'));\n if (this._isEditable(column)) {\n form.push(kendoHtmlElement('
'));\n } else {\n form.push(kendoDomElement('div', { 'class': 'k-edit-field' }, [this.options.fieldRenderer(column, this.model)]));\n }\n }\n },\n _appendButtons: function (form) {\n form.push(kendoDomElement('div', { 'class': 'k-edit-buttons k-state-default' }, this.options.commandRenderer()));\n },\n _attachHandlers: function () {\n var closeHandler = this._cancelProxy = proxy(this._cancel, this);\n this.wrapper.on(CLICK + NS, '.k-grid-cancel', this._cancelProxy);\n this._saveProxy = proxy(this._save, this);\n this.wrapper.on(CLICK + NS, '.k-grid-update', this._saveProxy);\n this.window.bind('close', function (e) {\n if (e.userTriggered) {\n closeHandler(e);\n }\n });\n },\n _dettachHandlers: function () {\n this._cancelProxy = null;\n this._saveProxy = null;\n this.wrapper.off(NS);\n },\n _cancel: function (e) {\n this.trigger(CANCEL, e);\n },\n _save: function () {\n this.trigger(SAVE);\n },\n open: function () {\n this.window.center().open();\n },\n close: function () {\n this.window.bind('deactivate', proxy(this.destroy, this)).close();\n },\n destroy: function () {\n this.window.destroy();\n this.window = null;\n this._dettachHandlers();\n Editor.fn.destroy.call(this);\n }\n });\n var TreeList = DataBoundWidget.extend({\n init: function (element, options) {\n DataBoundWidget.fn.init.call(this, element, options);\n this._dataSource(this.options.dataSource);\n this._columns();\n this._layout();\n this._selectable();\n this._sortable();\n this._resizable();\n this._filterable();\n this._attachEvents();\n this._toolbar();\n this._scrollable();\n this._reorderable();\n this._columnMenu();\n this._minScreenSupport();\n this._draggable();\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n if (this._hasLockedColumns) {\n var widget = this;\n this.wrapper.addClass('k-grid-lockedcolumns');\n this._resizeHandler = function () {\n widget.resize();\n };\n $(window).on('resize' + NS, this._resizeHandler);\n }\n kendo.notify(this);\n },\n _draggable: function () {\n var editable = this.options.editable;\n if (!editable || !editable.move) {\n return;\n }\n this._dragging = new kendo.ui.HierarchicalDragAndDrop(this.wrapper, {\n $angular: this.$angular,\n autoScroll: true,\n filter: 'tbody>tr',\n itemSelector: 'tr',\n allowedContainers: this.wrapper,\n hintText: function (row) {\n var text = function () {\n return $(this).text();\n };\n var separator = '';\n return row.children('td').map(text).toArray().join(separator);\n },\n contains: proxy(function (source, destination) {\n var dest = this.dataItem(destination);\n var src = this.dataItem(source);\n return src == dest || this.dataSource.contains(src, dest);\n }, this),\n itemFromTarget: function (target) {\n var tr = target.closest('tr');\n return {\n item: tr,\n content: tr\n };\n },\n dragstart: proxy(function (source) {\n this.wrapper.addClass('k-treelist-dragging');\n var model = this.dataItem(source);\n return this.trigger(DRAGSTART, { source: model });\n }, this),\n drag: proxy(function (e) {\n e.source = this.dataItem(e.source);\n this.trigger(DRAG, e);\n }, this),\n drop: proxy(function (e) {\n e.source = this.dataItem(e.source);\n e.destination = this.dataItem(e.destination);\n this.wrapper.removeClass('k-treelist-dragging');\n return this.trigger(DROP, e);\n }, this),\n dragend: proxy(function (e) {\n var dest = this.dataItem(e.destination);\n var src = this.dataItem(e.source);\n src.set('parentId', dest ? dest.id : null);\n e.source = src;\n e.destination = dest;\n this.trigger(DRAGEND, e);\n }, this),\n reorderable: false,\n dropHintContainer: function (item) {\n return item.children('td:eq(1)');\n },\n dropPositionFrom: function (dropHint) {\n return dropHint.prevAll('.k-i-none').length > 0 ? 'after' : 'before';\n }\n });\n },\n itemFor: function (model) {\n if (typeof model == 'number') {\n model = this.dataSource.get(model);\n }\n return this.tbody.find('[' + kendo.attr('uid') + '=' + model.uid + ']');\n },\n _scrollable: function () {\n if (this.options.scrollable) {\n var scrollables = this.thead.closest('.k-grid-header-wrap');\n var lockedContent = $(this.lockedContent).bind('DOMMouseScroll' + NS + ' mousewheel' + NS, proxy(this._wheelScroll, this));\n this.content.bind('scroll' + NS, function () {\n scrollables.scrollLeft(this.scrollLeft);\n lockedContent.scrollTop(this.scrollTop);\n });\n var touchScroller = kendo.touchScroller(this.content);\n if (touchScroller && touchScroller.movable) {\n this._touchScroller = touchScroller;\n touchScroller.movable.bind('change', function (e) {\n scrollables.scrollLeft(-e.sender.x);\n if (lockedContent) {\n lockedContent.scrollTop(-e.sender.y);\n }\n });\n }\n }\n },\n _wheelScroll: function (e) {\n if (e.ctrlKey) {\n return;\n }\n var delta = kendo.wheelDeltaY(e);\n if (delta) {\n e.preventDefault();\n $(e.currentTarget).one('wheel' + NS, false);\n this.content.scrollTop(this.content.scrollTop() + -delta);\n }\n },\n _progress: function () {\n var messages = this.options.messages;\n if (!this.tbody.find('tr').length) {\n this._showStatus(kendo.template(' #: messages.loading #')({\n className: classNames.icon + ' ' + classNames.loading,\n messages: messages\n }));\n }\n },\n _error: function (e) {\n if (!this.dataSource.rootNodes().length) {\n this._render({ error: e });\n }\n },\n refresh: function (e) {\n e = e || {};\n if (e.action == 'itemchange' && this.editor) {\n return;\n }\n if (this.trigger(DATABINDING)) {\n return;\n }\n this._cancelEditor();\n this._render();\n this._adjustHeight();\n this.trigger(DATABOUND);\n },\n _angularFooters: function (command) {\n var i, footer, aggregates;\n var allAggregates = this.dataSource.aggregates();\n var footerRows = this._footerItems();\n for (i = 0; i < footerRows.length; i++) {\n footer = footerRows.eq(i);\n aggregates = allAggregates[footer.attr('data-parentId')];\n this._angularFooter(command, footer.find('td').get(), aggregates);\n }\n },\n _angularFooter: function (command, cells, aggregates) {\n var columns = this.columns;\n this.angular(command, function () {\n return {\n elements: cells,\n data: map(columns, function (col) {\n return {\n column: col,\n aggregate: aggregates && aggregates[col.field]\n };\n })\n };\n });\n },\n items: function () {\n if (this._hasLockedColumns) {\n return this._items(this.tbody).add(this._items(this.lockedTable));\n } else {\n return this._items(this.tbody);\n }\n },\n _items: function (container) {\n return container.find('tr').filter(function () {\n return !$(this).hasClass(classNames.footerTemplate);\n });\n },\n _footerItems: function () {\n var container = this.tbody;\n if (this._hasLockedColumns) {\n container = container.add(this.lockedTable);\n }\n return container.find('tr').filter(function () {\n return $(this).hasClass(classNames.footerTemplate);\n });\n },\n dataItems: function () {\n var dataItems = kendo.ui.DataBoundWidget.fn.dataItems.call(this);\n if (this._hasLockedColumns) {\n var n = dataItems.length, tmp = new Array(2 * n);\n for (var i = n; --i >= 0;) {\n tmp[i] = tmp[i + n] = dataItems[i];\n }\n dataItems = tmp;\n }\n return dataItems;\n },\n _showStatus: function (message) {\n var status = this.element.find('.k-status');\n var content = $(this.content).add(this.lockedContent);\n if (!status.length) {\n status = $('
').appendTo(this.element);\n }\n this._contentTree.render([]);\n if (this._hasLockedColumns) {\n this._lockedContentTree.render([]);\n }\n content.hide();\n status.html(message);\n },\n _hideStatus: function () {\n this.element.find('.k-status').remove();\n $(this.content).add(this.lockedContent).show();\n },\n _adjustHeight: function () {\n var element = this.element;\n var contentWrap = element.find(DOT + classNames.gridContentWrap);\n var header = element.find(DOT + classNames.gridHeader);\n var toolbar = element.find(DOT + classNames.gridToolbar);\n var height;\n var scrollbar = kendo.support.scrollbar();\n element.height(this.options.height);\n var isHeightSet = function (el) {\n var initialHeight, newHeight;\n if (el[0].style.height) {\n return true;\n } else {\n initialHeight = el.height();\n }\n el.height('auto');\n newHeight = el.height();\n el.height('');\n return initialHeight != newHeight;\n };\n if (isHeightSet(element)) {\n height = element.height() - header.outerHeight() - toolbar.outerHeight();\n contentWrap.height(height);\n if (this._hasLockedColumns) {\n scrollbar = this.table[0].offsetWidth > this.table.parent()[0].clientWidth ? scrollbar : 0;\n this.lockedContent.height(height - scrollbar);\n }\n }\n },\n _resize: function () {\n this._applyLockedContainersWidth();\n this._adjustHeight();\n },\n _minScreenSupport: function () {\n var any = this.hideMinScreenCols();\n if (any) {\n this.minScreenResizeHandler = proxy(this.hideMinScreenCols, this);\n $(window).on('resize', this.minScreenResizeHandler);\n }\n },\n hideMinScreenCols: function () {\n var cols = this.columns, any = false, screenWidth = window.innerWidth > 0 ? window.innerWidth : screen.width;\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n var minWidth = col.minScreenWidth;\n if (minWidth !== undefined && minWidth !== null) {\n any = true;\n if (minWidth > screenWidth) {\n this.hideColumn(col);\n } else {\n this.showColumn(col);\n }\n }\n }\n return any;\n },\n destroy: function () {\n DataBoundWidget.fn.destroy.call(this);\n var dataSource = this.dataSource;\n dataSource.unbind(CHANGE, this._refreshHandler);\n dataSource.unbind(ERROR, this._errorHandler);\n dataSource.unbind(PROGRESS, this._progressHandler);\n if (this._resizeHandler) {\n $(window).off('resize' + NS, this._resizeHandler);\n }\n if (this._dragging) {\n this._dragging.destroy();\n this._dragging = null;\n }\n if (this.resizable) {\n this.resizable.destroy();\n this.resizable = null;\n }\n if (this.reorderable) {\n this.reorderable.destroy();\n this.reorderable = null;\n }\n if (this._draggableInstance && this._draggableInstance.element) {\n this._draggableInstance.destroy();\n this._draggableInstance = null;\n }\n if (this.minScreenResizeHandler) {\n $(window).off('resize', this.minScreenResizeHandler);\n }\n this._destroyEditor();\n this.element.off(NS);\n if (this._touchScroller) {\n this._touchScroller.destroy();\n }\n this._autoExpandable = null;\n this._refreshHandler = this._errorHandler = this._progressHandler = null;\n this.thead = this.content = this.tbody = this.table = this.element = this.lockedHeader = this.lockedContent = null;\n this._statusTree = this._headerTree = this._contentTree = this._lockedHeaderColsTree = this._lockedContentColsTree = this._lockedHeaderTree = this._lockedContentTree = null;\n },\n options: {\n name: 'TreeList',\n columns: [],\n autoBind: true,\n scrollable: true,\n selectable: false,\n sortable: false,\n toolbar: null,\n height: null,\n columnMenu: false,\n messages: {\n noRows: 'No records to display',\n loading: 'Loading...',\n requestFailed: 'Request failed.',\n retry: 'Retry',\n commands: {\n edit: 'Edit',\n update: 'Update',\n canceledit: 'Cancel',\n create: 'Add new record',\n createchild: 'Add child record',\n destroy: 'Delete',\n excel: 'Export to Excel',\n pdf: 'Export to PDF'\n }\n },\n excel: { hierarchy: true },\n resizable: false,\n filterable: false,\n editable: false,\n reorderable: false\n },\n events: [\n CHANGE,\n EDIT,\n SAVE,\n REMOVE,\n EXPAND,\n COLLAPSE,\n DATABINDING,\n DATABOUND,\n CANCEL,\n DRAGSTART,\n DRAG,\n DROP,\n DRAGEND,\n FILTERMENUINIT,\n COLUMNHIDE,\n COLUMNSHOW,\n COLUMNREORDER,\n COLUMNRESIZE,\n COLUMNMENUINIT,\n COLUMNLOCK,\n COLUMNUNLOCK\n ],\n _toggle: function (model, expand) {\n var defaultPromise = $.Deferred().resolve().promise();\n var loaded = model.loaded();\n if (model._error) {\n model.expanded = false;\n model._error = undefined;\n }\n if (!loaded && model.expanded) {\n return defaultPromise;\n }\n if (typeof expand == 'undefined') {\n expand = !model.expanded;\n }\n model.expanded = expand;\n if (!loaded) {\n defaultPromise = this.dataSource.load(model).always(proxy(function () {\n this._render();\n this._syncLockedContentHeight();\n }, this));\n }\n this._render();\n this._syncLockedContentHeight();\n return defaultPromise;\n },\n expand: function (row) {\n return this._toggle(this.dataItem(row), true);\n },\n collapse: function (row) {\n return this._toggle(this.dataItem(row), false);\n },\n _toggleChildren: function (e) {\n var icon = $(e.currentTarget);\n var model = this.dataItem(icon);\n var event = !model.expanded ? EXPAND : COLLAPSE;\n if (!this.trigger(event, { model: model })) {\n this._toggle(model);\n }\n e.preventDefault();\n },\n _attachEvents: function () {\n var icons = DOT + classNames.iconCollapse + ', .' + classNames.iconExpand + ', .' + classNames.refresh;\n var retryButton = DOT + classNames.retry;\n var dataSource = this.dataSource;\n this.element.on(MOUSEDOWN + NS, icons, proxy(this._toggleChildren, this)).on(CLICK + NS, retryButton, proxy(dataSource.fetch, dataSource)).on(CLICK + NS, '.k-button[data-command]', proxy(this._commandClick, this));\n },\n _commandByName: function (name) {\n var columns = this.columns;\n var toolbar = $.isArray(this.options.toolbar) ? this.options.toolbar : [];\n var i, j, commands, currentName;\n name = name.toLowerCase();\n if (defaultCommands[name]) {\n return defaultCommands[name];\n }\n for (i = 0; i < columns.length; i++) {\n commands = columns[i].command;\n if (commands) {\n for (j = 0; j < commands.length; j++) {\n currentName = commands[j].name;\n if (!currentName) {\n continue;\n }\n if (currentName.toLowerCase() == name) {\n return commands[j];\n }\n }\n }\n }\n for (i = 0; i < toolbar.length; i++) {\n currentName = toolbar[i].name;\n if (!currentName) {\n continue;\n }\n if (currentName.toLowerCase() == name) {\n return toolbar[i];\n }\n }\n },\n _commandClick: function (e) {\n var button = $(e.currentTarget);\n var commandName = button.attr('data-command');\n var command = this._commandByName(commandName);\n var row = button.parentsUntil(this.wrapper, 'tr');\n row = row.length ? row : undefined;\n if (command) {\n if (command.methodName) {\n this[command.methodName](row);\n } else if (command.click) {\n command.click.call(this, e);\n }\n e.preventDefault();\n }\n },\n _ensureExpandableColumn: function () {\n if (this._autoExpandable) {\n delete this._autoExpandable.expandable;\n }\n var visibleColumns = grep(this.columns, not(is('hidden')));\n var expandableColumns = grep(visibleColumns, is('expandable'));\n if (this.columns.length && !expandableColumns.length) {\n this._autoExpandable = visibleColumns[0];\n visibleColumns[0].expandable = true;\n }\n },\n _columns: function () {\n var columns = this.options.columns || [];\n this.columns = map(columns, function (column) {\n column = typeof column === 'string' ? { field: column } : column;\n return extend({ encoded: true }, column);\n });\n var lockedColumns = this._lockedColumns();\n if (lockedColumns.length > 0) {\n this._hasLockedColumns = true;\n this.columns = lockedColumns.concat(this._nonLockedColumns());\n }\n this._ensureExpandableColumn();\n this._columnTemplates();\n this._columnAttributes();\n },\n _columnTemplates: function () {\n var idx, length, column;\n var columns = this.columns;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (column.template) {\n column.template = kendo.template(column.template);\n }\n if (column.headerTemplate) {\n column.headerTemplate = kendo.template(column.headerTemplate);\n }\n if (column.footerTemplate) {\n column.footerTemplate = kendo.template(column.footerTemplate);\n }\n }\n },\n _columnAttributes: function () {\n var idx, length;\n var columns = this.columns;\n function convertStyle(attr) {\n var properties, i, declaration;\n if (attr && attr.style) {\n properties = attr.style.split(';');\n attr.style = {};\n for (i = 0; i < properties.length; i++) {\n declaration = properties[i].split(':');\n var name = $.trim(declaration[0]);\n if (name) {\n attr.style[$.camelCase(name)] = $.trim(declaration[1]);\n }\n }\n }\n }\n for (idx = 0, length = columns.length; idx < length; idx++) {\n convertStyle(columns[idx].attributes);\n convertStyle(columns[idx].headerAttributes);\n }\n },\n _layout: function () {\n var columns = this.columns;\n var element = this.element;\n var layout = '';\n this.wrapper = element.addClass(classNames.wrapper);\n layout = '
';\n if (this._hasLockedColumns) {\n layout += '
' + '' + '' + '' + '
' + '
';\n }\n layout += '
' + '' + '' + '' + '
' + '
' + '
';\n if (this._hasLockedColumns) {\n layout += '
' + '' + '' + '' + '
' + '
';\n }\n layout += '
' + '' + '' + '' + '
' + '
';\n if (!this.options.scrollable) {\n layout = '' + '' + '' + '' + '
';\n }\n if (this.options.toolbar) {\n layout = '
' + layout;\n }\n element.append(kendo.template(layout)(classNames) + '
');\n this.toolbar = element.find(DOT + classNames.gridToolbar);\n var header = element.find(DOT + classNames.gridHeader).find('thead').addBack().filter('thead');\n this.thead = header.last();\n if (this.options.scrollable) {\n var rtl = kendo.support.isRtl(element);\n element.find('div.' + classNames.gridHeader).css(rtl ? 'padding-left' : 'padding-right', kendo.support.scrollbar());\n }\n var content = element.find(DOT + classNames.gridContentWrap);\n if (!content.length) {\n content = element;\n } else {\n this.content = content;\n }\n this.table = content.find('>table');\n this.tbody = this.table.find('>tbody');\n if (this._hasLockedColumns) {\n this.lockedHeader = header.first().closest('.k-grid-header-locked');\n this.lockedContent = element.find('.k-grid-content-locked');\n this.lockedTable = this.lockedContent.children();\n }\n this._initVirtualTrees();\n this._renderCols();\n this._renderHeader();\n this.angular('compile', function () {\n return {\n elements: header.find('th.k-header').get(),\n data: map(columns, function (col) {\n return { column: col };\n })\n };\n });\n },\n _initVirtualTrees: function () {\n this._headerColsTree = new kendoDom.Tree(this.thead.prev()[0]);\n this._contentColsTree = new kendoDom.Tree(this.tbody.prev()[0]);\n this._headerTree = new kendoDom.Tree(this.thead[0]);\n this._contentTree = new kendoDom.Tree(this.tbody[0]);\n this._statusTree = new kendoDom.Tree(this.element.children('.k-status')[0]);\n if (this.lockedHeader) {\n this._lockedHeaderColsTree = new kendoDom.Tree(this.lockedHeader.find('colgroup')[0]);\n this._lockedContentColsTree = new kendoDom.Tree(this.lockedTable.find('>colgroup')[0]);\n this._lockedHeaderTree = new kendoDom.Tree(this.lockedHeader.find('thead')[0]);\n this._lockedContentTree = new kendoDom.Tree(this.lockedTable.find('>tbody')[0]);\n }\n },\n _toolbar: function () {\n var options = this.options.toolbar;\n var toolbar = this.toolbar;\n if (!options) {\n return;\n }\n if ($.isArray(options)) {\n var buttons = this._buildCommands(options);\n new kendoDom.Tree(toolbar[0]).render(buttons);\n } else {\n toolbar.append(kendo.template(options)({}));\n }\n this.angular('compile', function () {\n return { elements: toolbar.get() };\n });\n },\n _lockedColumns: function () {\n return grep(this.columns, is('locked'));\n },\n _nonLockedColumns: function () {\n return grep(this.columns, not(is('locked')));\n },\n _templateColumns: function () {\n return grep(this.columns, is('template'));\n },\n _flushCache: function () {\n if (this.options.$angular && this._templateColumns().length) {\n this._contentTree.render([]);\n if (this._hasLockedColumns) {\n this._lockedContentTree.render([]);\n }\n }\n },\n _render: function (options) {\n options = options || {};\n var messages = this.options.messages;\n var data = this.dataSource.rootNodes();\n var selected = this.select().removeClass('k-state-selected').map(function (_, row) {\n return $(row).attr(kendo.attr('uid'));\n });\n this._absoluteIndex = 0;\n this._angularItems('cleanup');\n this._angularFooters('cleanup');\n this._flushCache();\n if (options.error) {\n this._showStatus(kendo.template('#: messages.requestFailed # ' + '')({\n buttonClass: [\n classNames.button,\n classNames.retry\n ].join(' '),\n messages: messages\n }));\n } else if (!data.length) {\n this._showStatus(kendo.htmlEncode(messages.noRows));\n } else {\n this._hideStatus();\n this._contentTree.render(this._trs({\n columns: this._nonLockedColumns(),\n aggregates: options.aggregates,\n selected: selected,\n data: data,\n visible: true,\n level: 0\n }));\n if (this._hasLockedColumns) {\n this._absoluteIndex = 0;\n this._lockedContentTree.render(this._trs({\n columns: this._lockedColumns(),\n aggregates: options.aggregates,\n selected: selected,\n data: data,\n visible: true,\n level: 0\n }));\n }\n }\n if (this._touchScroller) {\n this._touchScroller.contentResized();\n }\n this._muteAngularRebind(function () {\n this._angularItems('compile');\n this._angularFooters('compile');\n });\n this._adjustRowsHeight();\n },\n _adjustRowsHeight: function () {\n if (!this._hasLockedColumns) {\n return;\n }\n var table = this.table;\n var lockedTable = this.lockedTable;\n var rows = table[0].rows;\n var length = rows.length;\n var idx;\n var lockedRows = lockedTable[0].rows;\n var containers = table.add(lockedTable);\n var containersLength = containers.length;\n var heights = [];\n var lockedHeaderRows = this.lockedHeader.find('tr');\n var headerRows = this.thead.find('tr');\n lockedHeaderRows.add(headerRows).height('auto').height(Math.max(lockedHeaderRows.height(), headerRows.height()));\n for (idx = 0; idx < length; idx++) {\n if (!lockedRows[idx]) {\n break;\n }\n if (rows[idx].style.height) {\n rows[idx].style.height = lockedRows[idx].style.height = '';\n }\n var offsetHeight1 = rows[idx].offsetHeight;\n var offsetHeight2 = lockedRows[idx].offsetHeight;\n var height = 0;\n if (offsetHeight1 > offsetHeight2) {\n height = offsetHeight1;\n } else if (offsetHeight1 < offsetHeight2) {\n height = offsetHeight2;\n }\n heights.push(height);\n }\n for (idx = 0; idx < containersLength; idx++) {\n containers[idx].style.display = 'none';\n }\n for (idx = 0; idx < length; idx++) {\n if (heights[idx]) {\n rows[idx].style.height = lockedRows[idx].style.height = heights[idx] + 1 + 'px';\n }\n }\n for (idx = 0; idx < containersLength; idx++) {\n containers[idx].style.display = '';\n }\n },\n _ths: function (columns) {\n var ths = [];\n var column, title, children, cellClasses, attr, headerContent;\n for (var i = 0, length = columns.length; i < length; i++) {\n column = columns[i];\n children = [];\n cellClasses = [classNames.header];\n if (column.headerTemplate) {\n title = column.headerTemplate({});\n } else {\n title = column.title || column.field || '';\n }\n if (column.headerTemplate) {\n headerContent = kendoHtmlElement(title);\n } else {\n headerContent = kendoTextElement(title);\n }\n if (column.sortable) {\n children.push(kendoDomElement('a', {\n href: '#',\n className: classNames.link\n }, [headerContent]));\n } else {\n children.push(headerContent);\n }\n attr = {\n 'data-field': column.field,\n 'data-title': column.title,\n 'style': column.hidden === true ? { 'display': 'none' } : {},\n className: cellClasses.join(' '),\n 'role': 'columnheader'\n };\n attr = extend(true, {}, attr, column.headerAttributes);\n ths.push(kendoDomElement('th', attr, children));\n }\n return ths;\n },\n _cols: function (columns) {\n var cols = [];\n var width, attr;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].hidden === true) {\n continue;\n }\n width = columns[i].width;\n attr = {};\n if (width && parseInt(width, 10) !== 0) {\n attr.style = { width: typeof width === 'string' ? width : width + 'px' };\n }\n cols.push(kendoDomElement('col', attr));\n }\n return cols;\n },\n _renderCols: function () {\n var columns = this._nonLockedColumns();\n this._headerColsTree.render(this._cols(columns));\n if (this.options.scrollable) {\n this._contentColsTree.render(this._cols(columns));\n }\n if (this._hasLockedColumns) {\n columns = this._lockedColumns();\n this._lockedHeaderColsTree.render(this._cols(columns));\n this._lockedContentColsTree.render(this._cols(columns));\n }\n },\n _renderHeader: function () {\n var columns = this._nonLockedColumns();\n this._headerTree.render([kendoDomElement('tr', { 'role': 'row' }, this._ths(columns))]);\n if (this._hasLockedColumns) {\n columns = this._lockedColumns();\n this._lockedHeaderTree.render([kendoDomElement('tr', { 'role': 'row' }, this._ths(columns))]);\n this._applyLockedContainersWidth();\n }\n },\n _applyLockedContainersWidth: function () {\n if (!this._hasLockedColumns) {\n return;\n }\n var lockedWidth = columnsWidth(this.lockedHeader.find('>table>colgroup>col'));\n var headerTable = this.thead.parent();\n var nonLockedWidth = columnsWidth(headerTable.find('>colgroup>col'));\n var wrapperWidth = this.wrapper[0].clientWidth;\n var scrollbar = kendo.support.scrollbar();\n if (lockedWidth >= wrapperWidth) {\n lockedWidth = wrapperWidth - 3 * scrollbar;\n }\n this.lockedHeader.add(this.lockedContent).width(lockedWidth);\n headerTable.add(this.table).width(nonLockedWidth);\n var width = wrapperWidth - lockedWidth - 2;\n this.content.width(width);\n headerTable.parent().width(width - scrollbar);\n },\n _trs: function (options) {\n var model, attr, className, hasChildren, childNodes, i, length;\n var rows = [];\n var level = options.level;\n var data = options.data;\n var dataSource = this.dataSource;\n var aggregates = dataSource.aggregates() || {};\n var columns = options.columns;\n for (i = 0, length = data.length; i < length; i++) {\n className = [];\n model = data[i];\n childNodes = model.loaded() && dataSource.childNodes(model);\n hasChildren = childNodes && childNodes.length;\n attr = { 'role': 'row' };\n attr[kendo.attr('uid')] = model.uid;\n if (hasChildren) {\n attr['aria-expanded'] = !!model.expanded;\n }\n if (options.visible) {\n if (this._absoluteIndex % 2 !== 0) {\n className.push(classNames.alt);\n }\n this._absoluteIndex++;\n } else {\n attr.style = { display: 'none' };\n }\n if ($.inArray(model.uid, options.selected) >= 0) {\n className.push(classNames.selected);\n }\n if (hasChildren) {\n className.push(classNames.group);\n }\n if (model._edit) {\n className.push('k-grid-edit-row');\n }\n attr.className = className.join(' ');\n rows.push(this._tds({\n model: model,\n attr: attr,\n level: level\n }, columns, proxy(this._td, this)));\n if (hasChildren) {\n rows = rows.concat(this._trs({\n columns: columns,\n aggregates: aggregates,\n selected: options.selected,\n visible: options.visible && !!model.expanded,\n data: childNodes,\n level: level + 1\n }));\n }\n }\n if (this._hasFooterTemplate()) {\n attr = {\n className: classNames.footerTemplate,\n 'data-parentId': model.parentId\n };\n if (!options.visible) {\n attr.style = { display: 'none' };\n }\n rows.push(this._tds({\n model: aggregates[model.parentId],\n attr: attr,\n level: level\n }, columns, this._footerTd));\n }\n return rows;\n },\n _footerTd: function (options) {\n var content = [];\n var column = options.column;\n var template = options.column.footerTemplate || $.noop;\n var aggregates = options.model[column.field] || {};\n var attr = {\n 'role': 'gridcell',\n 'style': column.hidden === true ? { 'display': 'none' } : {}\n };\n if (column.expandable) {\n content = content.concat(createPlaceholders({\n level: options.level + 1,\n className: classNames.iconPlaceHolder\n }));\n }\n if (column.attributes) {\n extend(attr, column.attributes);\n }\n content.push(kendoHtmlElement(template(aggregates) || ''));\n return kendoDomElement('td', attr, content);\n },\n _hasFooterTemplate: function () {\n return !!grep(this.columns, function (c) {\n return c.footerTemplate;\n }).length;\n },\n _tds: function (options, columns, renderer) {\n var children = [];\n var column;\n for (var i = 0, l = columns.length; i < l; i++) {\n column = columns[i];\n children.push(renderer({\n model: options.model,\n column: column,\n level: options.level\n }));\n }\n return kendoDomElement('tr', options.attr, children);\n },\n _td: function (options) {\n var children = [];\n var model = options.model;\n var column = options.column;\n var iconClass;\n var attr = {\n 'role': 'gridcell',\n 'style': column.hidden === true ? { 'display': 'none' } : {}\n };\n if (model._edit && column.field && model.editable(column.field)) {\n attr[kendo.attr('container-for')] = column.field;\n } else {\n if (column.expandable) {\n children = createPlaceholders({\n level: options.level,\n className: classNames.iconPlaceHolder\n });\n iconClass = [classNames.icon];\n if (model.hasChildren) {\n iconClass.push(model.expanded ? classNames.iconCollapse : classNames.iconExpand);\n } else {\n iconClass.push(classNames.iconHidden);\n }\n if (model._error) {\n iconClass.push(classNames.refresh);\n } else if (!model.loaded() && model.expanded) {\n iconClass.push(classNames.loading);\n }\n children.push(kendoDomElement('span', { className: iconClass.join(' ') }));\n attr.style['white-space'] = 'nowrap';\n }\n if (column.attributes) {\n extend(true, attr, column.attributes);\n }\n if (column.command) {\n if (model._edit) {\n children = this._buildCommands([\n 'update',\n 'canceledit'\n ]);\n } else {\n children = this._buildCommands(column.command);\n }\n } else {\n children.push(this._cellContent(column, model));\n }\n }\n return kendoDomElement('td', attr, children);\n },\n _cellContent: function (column, model) {\n var value;\n if (column.template) {\n value = column.template(model);\n } else if (column.field) {\n value = model.get(column.field);\n if (value !== null && column.format) {\n value = kendo.format(column.format, value);\n }\n }\n if (value === null || typeof value == 'undefined') {\n value = '';\n }\n if (column.template || !column.encoded) {\n return kendoHtmlElement(value);\n } else {\n return kendoTextElement(value);\n }\n },\n _buildCommands: function (commands) {\n var i, result = [];\n for (i = 0; i < commands.length; i++) {\n result.push(this._button(commands[i]));\n }\n return result;\n },\n _button: function (command) {\n var name = (command.name || command).toLowerCase();\n var text = this.options.messages.commands[name];\n var icon = [];\n command = extend({}, defaultCommands[name], { text: text }, command);\n if (command.imageClass) {\n icon.push(kendoDomElement('span', {\n className: [\n 'k-icon',\n command.imageClass\n ].join(' ')\n }));\n }\n return kendoDomElement('button', {\n 'type': 'button',\n 'data-command': name,\n className: [\n 'k-button',\n 'k-button-icontext',\n command.className\n ].join(' ')\n }, icon.concat([kendoTextElement(command.text || command.name)]));\n },\n _positionResizeHandle: function (e) {\n var th = $(e.currentTarget);\n var resizeHandle = this.resizeHandle;\n var position = th.position();\n var left = position.left;\n var cellWidth = th.outerWidth();\n var container = th.closest('div');\n var clientX = e.clientX + $(window).scrollLeft();\n var indicatorWidth = this.options.columnResizeHandleWidth || 3;\n left += container.scrollLeft();\n if (!resizeHandle) {\n resizeHandle = this.resizeHandle = $('
');\n }\n var cellOffset = th.offset().left + cellWidth;\n var show = clientX > cellOffset - indicatorWidth && clientX < cellOffset + indicatorWidth;\n if (!show) {\n resizeHandle.hide();\n return;\n }\n container.append(resizeHandle);\n resizeHandle.show().css({\n top: position.top,\n left: left + cellWidth - indicatorWidth - 1,\n height: th.outerHeight(),\n width: indicatorWidth * 3\n }).data('th', th);\n var that = this;\n resizeHandle.off('dblclick' + NS).on('dblclick' + NS, function () {\n var index = th.index();\n if ($.contains(that.thead[0], th[0])) {\n index += grep(that.columns, function (val) {\n return val.locked && !val.hidden;\n }).length;\n }\n that.autoFitColumn(index);\n });\n },\n autoFitColumn: function (column) {\n var that = this, options = that.options, columns = that.columns, index, browser = kendo.support.browser, th, headerTable, isLocked, visibleLocked = that.lockedHeader ? leafDataCells(that.lockedHeader.find('>table>thead')).filter(isCellVisible).length : 0, col;\n if (typeof column == 'number') {\n column = columns[column];\n } else if (isPlainObject(column)) {\n column = grep(columns, function (item) {\n return item === column;\n })[0];\n } else {\n column = grep(columns, function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || column.hidden) {\n return;\n }\n index = inArray(column, columns);\n isLocked = column.locked;\n if (isLocked) {\n headerTable = that.lockedHeader.children('table');\n } else {\n headerTable = that.thead.parent();\n }\n th = headerTable.find('[data-index=\\'' + index + '\\']');\n var contentTable = isLocked ? that.lockedTable : that.table, footer = that.footer || $();\n if (that.footer && that.lockedContent) {\n footer = isLocked ? that.footer.children('.k-grid-footer-locked') : that.footer.children('.k-grid-footer-wrap');\n }\n var footerTable = footer.find('table').first();\n if (that.lockedHeader && visibleLocked >= index && !isLocked) {\n index -= visibleLocked;\n }\n for (var j = 0; j < columns.length; j++) {\n if (columns[j] === column) {\n break;\n } else {\n if (columns[j].hidden) {\n index--;\n }\n }\n }\n if (options.scrollable) {\n col = headerTable.find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')').add(contentTable.children('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')')).add(footerTable.find('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')'));\n } else {\n col = contentTable.children('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')');\n }\n var tables = headerTable.add(contentTable).add(footerTable);\n var oldColumnWidth = th.outerWidth();\n col.width('');\n tables.css('table-layout', 'fixed');\n col.width('auto');\n tables.addClass('k-autofitting');\n tables.css('table-layout', '');\n var newColumnWidth = Math.ceil(Math.max(th.outerWidth(), contentTable.find('tr').eq(0).children('td:visible').eq(index).outerWidth(), footerTable.find('tr').eq(0).children('td:visible').eq(index).outerWidth()));\n col.width(newColumnWidth);\n column.width = newColumnWidth;\n if (options.scrollable) {\n var cols = headerTable.find('col'), colWidth, totalWidth = 0;\n for (var idx = 0, length = cols.length; idx < length; idx += 1) {\n colWidth = cols[idx].style.width;\n if (colWidth && colWidth.indexOf('%') == -1) {\n totalWidth += parseInt(colWidth, 10);\n } else {\n totalWidth = 0;\n break;\n }\n }\n if (totalWidth) {\n tables.each(function () {\n this.style.width = totalWidth + 'px';\n });\n }\n }\n if (browser.msie && browser.version == 8) {\n tables.css('display', 'inline-table');\n setTimeout(function () {\n tables.css('display', 'table');\n }, 1);\n }\n tables.removeClass('k-autofitting');\n that.trigger(COLUMNRESIZE, {\n column: column,\n oldWidth: oldColumnWidth,\n newWidth: newColumnWidth\n });\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n },\n _adjustLockedHorizontalScrollBar: function () {\n var table = this.table, content = table.parent();\n var scrollbar = table[0].offsetWidth > content[0].clientWidth ? kendo.support.scrollbar() : 0;\n this.lockedContent.height(content.height() - scrollbar);\n },\n _syncLockedContentHeight: function () {\n if (this.lockedTable) {\n if (!this._touchScroller) {\n this._adjustLockedHorizontalScrollBar();\n }\n this._adjustRowsHeight(this.table, this.lockedTable);\n }\n },\n _syncLockedHeaderHeight: function () {\n if (this.lockedHeader) {\n var lockedTable = this.lockedHeader.children('table');\n var table = this.thead.parent();\n this._adjustRowsHeight(lockedTable, table);\n syncTableHeight(lockedTable, table);\n }\n },\n _resizable: function () {\n if (!this.options.resizable) {\n return;\n }\n if (this.resizable) {\n this.resizable.destroy();\n }\n var treelist = this;\n $(this.lockedHeader).find('thead').add(this.thead).on('mousemove' + NS, 'th', $.proxy(this._positionResizeHandle, this));\n this.resizable = new kendo.ui.Resizable(this.wrapper, {\n handle: '.k-resize-handle',\n start: function (e) {\n var th = $(e.currentTarget).data('th');\n var colSelector = 'col:eq(' + $.inArray(th[0], th.parent().children().filter(':visible')) + ')';\n var header, contentTable;\n treelist.wrapper.addClass('k-grid-column-resizing');\n if (treelist.lockedHeader && $.contains(treelist.lockedHeader[0], th[0])) {\n header = treelist.lockedHeader;\n contentTable = treelist.lockedTable;\n } else {\n header = treelist.thead.parent();\n contentTable = treelist.table;\n }\n this.col = contentTable.children('colgroup').find(colSelector).add(header.find(colSelector));\n this.th = th;\n this.startLocation = e.x.location;\n this.columnWidth = th.outerWidth();\n this.table = this.col.closest('table');\n this.totalWidth = this.table.width();\n },\n resize: function (e) {\n var minColumnWidth = 11;\n var delta = e.x.location - this.startLocation;\n if (this.columnWidth + delta < minColumnWidth) {\n delta = minColumnWidth - this.columnWidth;\n }\n this.table.width(this.totalWidth + delta);\n this.col.width(this.columnWidth + delta);\n },\n resizeend: function () {\n treelist.wrapper.removeClass('k-grid-column-resizing');\n var field = this.th.attr('data-field');\n var column = grep(treelist.columns, function (c) {\n return c.field == field;\n });\n var newWidth = Math.floor(this.th.outerWidth());\n column[0].width = newWidth;\n treelist._resize();\n treelist._adjustRowsHeight();\n treelist.trigger(COLUMNRESIZE, {\n column: column,\n oldWidth: this.columnWidth,\n newWidth: newWidth\n });\n this.table = this.col = this.th = null;\n }\n });\n },\n _sortable: function () {\n var columns = this.columns;\n var column;\n var sortableInstance;\n var cells = $(this.lockedHeader).add(this.thead).find('th');\n var cell, idx, length;\n var fieldAttr = kendo.attr('field');\n var sortable = this.options.sortable;\n if (!sortable) {\n return;\n }\n for (idx = 0, length = cells.length; idx < length; idx++) {\n column = columns[idx];\n if (column.sortable !== false && !column.command && column.field) {\n cell = cells.eq(idx);\n sortableInstance = cell.data('kendoColumnSorter');\n if (sortableInstance) {\n sortableInstance.destroy();\n }\n cell.attr(fieldAttr, column.field).kendoColumnSorter(extend({}, sortable, column.sortable, { dataSource: this.dataSource }));\n }\n }\n },\n _filterable: function () {\n var cells = $(this.lockedHeader).add(this.thead).find('th');\n var filterable = this.options.filterable;\n var idx, length, column, cell, filterMenuInstance;\n if (!filterable || this.options.columnMenu) {\n return;\n }\n var filterInit = proxy(function (e) {\n this.trigger(FILTERMENUINIT, {\n field: e.field,\n container: e.container\n });\n }, this);\n for (idx = 0, length = cells.length; idx < length; idx++) {\n column = this.columns[idx];\n cell = cells.eq(idx);\n filterMenuInstance = cell.data('kendoFilterMenu');\n if (filterMenuInstance) {\n filterMenuInstance.destroy();\n }\n if (column.command || column.filterable === false) {\n continue;\n }\n cell.kendoFilterMenu(extend(true, {}, filterable, column.filterable, {\n dataSource: this.dataSource,\n init: filterInit\n }));\n }\n },\n _change: function () {\n this.trigger(CHANGE);\n },\n _selectable: function () {\n var selectable = this.options.selectable;\n var filter;\n var element = this.table;\n var useAllItems;\n if (selectable) {\n selectable = kendo.ui.Selectable.parseOptions(selectable);\n if (this._hasLockedColumns) {\n element = element.add(this.lockedTable);\n useAllItems = selectable.multiple && selectable.cell;\n }\n filter = '>tbody>tr:not(.k-footer-template)';\n if (selectable.cell) {\n filter = filter + '>td';\n }\n this.selectable = new kendo.ui.Selectable(element, {\n filter: filter,\n aria: true,\n multiple: selectable.multiple,\n change: proxy(this._change, this),\n useAllItems: useAllItems,\n continuousItems: proxy(this._continuousItems, this, filter, selectable.cell),\n relatedTarget: !selectable.cell && this._hasLockedColumns ? proxy(this._selectableTarget, this) : undefined\n });\n }\n },\n _continuousItems: function (filter, cell) {\n if (!this.lockedContent) {\n return;\n }\n var lockedItems = $(filter, this.lockedTable);\n var nonLockedItems = $(filter, this.table);\n var columns = cell ? this._lockedColumns().length : 1;\n var nonLockedColumns = cell ? this.columns.length - columns : 1;\n var result = [];\n for (var idx = 0; idx < lockedItems.length; idx += columns) {\n push.apply(result, lockedItems.slice(idx, idx + columns));\n push.apply(result, nonLockedItems.splice(0, nonLockedColumns));\n }\n return result;\n },\n _selectableTarget: function (items) {\n var related;\n var result = $();\n for (var idx = 0, length = items.length; idx < length; idx++) {\n related = this._relatedRow(items[idx]);\n if (inArray(related[0], items) < 0) {\n result = result.add(related);\n }\n }\n return result;\n },\n _relatedRow: function (row) {\n var lockedTable = this.lockedTable;\n row = $(row);\n if (!lockedTable) {\n return row;\n }\n var table = row.closest(this.table.add(this.lockedTable));\n var index = table.find('>tbody>tr').index(row);\n table = table[0] === this.table[0] ? lockedTable : this.table;\n return table.find('>tbody>tr').eq(index);\n },\n select: function (value) {\n var selectable = this.selectable;\n if (!selectable) {\n return $();\n }\n if (typeof value !== 'undefined') {\n if (!selectable.options.multiple) {\n selectable.clear();\n value = value.first();\n }\n if (this._hasLockedColumns) {\n value = value.add($.map(value, proxy(this._relatedRow, this)));\n }\n }\n return selectable.value(value);\n },\n clearSelection: function () {\n var selected = this.select();\n if (selected.length) {\n this.selectable.clear();\n this.trigger(CHANGE);\n }\n },\n _dataSource: function (dataSource) {\n var ds = this.dataSource;\n if (ds) {\n ds.unbind(CHANGE, this._refreshHandler);\n ds.unbind(ERROR, this._errorHandler);\n ds.unbind(PROGRESS, this._progressHandler);\n }\n this._refreshHandler = proxy(this.refresh, this);\n this._errorHandler = proxy(this._error, this);\n this._progressHandler = proxy(this._progress, this);\n ds = this.dataSource = TreeListDataSource.create(dataSource);\n ds.bind(CHANGE, this._refreshHandler);\n ds.bind(ERROR, this._errorHandler);\n ds.bind(PROGRESS, this._progressHandler);\n },\n setDataSource: function (dataSource) {\n this._dataSource(dataSource);\n this._sortable();\n this._filterable();\n this._contentTree.render([]);\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n },\n dataItem: function (element) {\n if (element instanceof TreeListModel) {\n return element;\n }\n var row = $(element).closest('tr');\n var model = this.dataSource.getByUid(row.attr(kendo.attr('uid')));\n return model;\n },\n editRow: function (row) {\n var model;\n if (typeof row === STRING) {\n row = this.tbody.find(row);\n }\n model = this.dataItem(row);\n if (!model) {\n return;\n }\n if (this._editMode() != 'popup') {\n model._edit = true;\n }\n this._cancelEditor();\n this._render();\n this._createEditor(model);\n this.trigger(EDIT, {\n container: this.editor.wrapper,\n model: model\n });\n },\n _cancelEdit: function (e) {\n e = extend(e, {\n container: this.editor.wrapper,\n model: this.editor.model\n });\n if (this.trigger(CANCEL, e)) {\n return;\n }\n this.cancelRow();\n },\n cancelRow: function () {\n this._cancelEditor();\n this._render();\n },\n saveRow: function () {\n var editor = this.editor;\n var args;\n if (!editor) {\n return;\n }\n args = {\n model: editor.model,\n container: editor.wrapper\n };\n if (editor.end() && !this.trigger(SAVE, args)) {\n this.dataSource.sync();\n }\n },\n addRow: function (parent) {\n var editor = this.editor;\n var index = 0;\n var model = {};\n if (editor && !editor.end()) {\n return;\n }\n if (parent) {\n if (!(parent instanceof TreeListModel)) {\n parent = this.dataItem(parent);\n }\n model[parent.parentIdField] = parent.id;\n index = this.dataSource.indexOf(parent) + 1;\n this.expand(parent).then(proxy(this._insertAt, this, model, index));\n return;\n }\n this._insertAt(model, index);\n },\n _insertAt: function (model, index) {\n model = this.dataSource.insert(index, model);\n var row = this.itemFor(model);\n this.editRow(row);\n },\n removeRow: function (row) {\n var model = this.dataItem(row);\n var args = {\n model: model,\n row: row\n };\n if (model && !this.trigger(REMOVE, args)) {\n this.dataSource.remove(model);\n this.dataSource.sync();\n }\n },\n _cancelEditor: function () {\n var model;\n var editor = this.editor;\n if (editor) {\n model = editor.model;\n this._destroyEditor();\n this.dataSource.cancelChanges(model);\n model._edit = false;\n }\n },\n _destroyEditor: function () {\n if (!this.editor) {\n return;\n }\n this.editor.close();\n this.editor = null;\n },\n _createEditor: function (model) {\n var row = this.itemFor(model);\n row = row.add(this._relatedRow(row));\n var mode = this._editMode();\n var options = {\n columns: this.columns,\n model: model,\n target: this,\n clearContainer: false,\n template: this.options.editable.template\n };\n if (mode == 'inline') {\n this.editor = new Editor(row, options);\n } else {\n extend(options, {\n window: this.options.editable.window,\n commandRenderer: proxy(function () {\n return this._buildCommands([\n 'update',\n 'canceledit'\n ]);\n }, this),\n fieldRenderer: this._cellContent,\n save: proxy(this.saveRow, this),\n cancel: proxy(this._cancelEdit, this),\n appendTo: this.wrapper\n });\n this.editor = new PopupEditor(row, options);\n }\n },\n _editMode: function () {\n var mode = 'inline', editable = this.options.editable;\n if (editable !== true) {\n if (typeof editable == 'string') {\n mode = editable;\n } else {\n mode = editable.mode || mode;\n }\n }\n return mode.toLowerCase();\n },\n hideColumn: function (column) {\n this._toggleColumnVisibility(column, true);\n },\n showColumn: function (column) {\n this._toggleColumnVisibility(column, false);\n },\n _toggleColumnVisibility: function (column, hidden) {\n column = this._findColumn(column);\n if (!column || column.hidden === hidden) {\n return;\n }\n column.hidden = hidden;\n this._ensureExpandableColumn();\n this._renderCols();\n this._renderHeader();\n this._render();\n this._adjustTablesWidth();\n this.trigger(hidden ? COLUMNHIDE : COLUMNSHOW, { column: column });\n if (!hidden && !column.width) {\n this.table.add(this.thead.closest('table')).width('');\n }\n },\n _findColumn: function (column) {\n if (typeof column == 'number') {\n column = this.columns[column];\n } else if (isPlainObject(column)) {\n column = grep(this.columns, function (item) {\n return item === column;\n })[0];\n } else {\n column = grep(this.columns, function (item) {\n return item.field === column;\n })[0];\n }\n return column;\n },\n _adjustTablesWidth: function () {\n var idx, length;\n var cols = this.thead.prev().children();\n var colWidth, width = 0;\n for (idx = 0, length = cols.length; idx < length; idx++) {\n colWidth = cols[idx].style.width;\n if (colWidth && colWidth.indexOf('%') == -1) {\n width += parseInt(colWidth, 10);\n } else {\n width = 0;\n break;\n }\n }\n if (width) {\n this.table.add(this.thead.closest('table')).width(width);\n }\n },\n _reorderable: function () {\n if (!this.options.reorderable) {\n return;\n }\n var scrollable = this.options.scrollable === true;\n var selector = (scrollable ? '.k-grid-header:first ' : 'table:first>.k-grid-header ') + HEADERCELLS;\n var that = this;\n this._draggableInstance = new ui.Draggable(this.wrapper, {\n group: kendo.guid(),\n filter: selector,\n hint: function (target) {\n return $('
').css({\n width: target.width(),\n paddingLeft: target.css('paddingLeft'),\n paddingRight: target.css('paddingRight'),\n lineHeight: target.height() + 'px',\n paddingTop: target.css('paddingTop'),\n paddingBottom: target.css('paddingBottom')\n }).html(target.attr(kendo.attr('title')) || target.attr(kendo.attr('field')) || target.text()).prepend('');\n }\n });\n this.reorderable = new ui.Reorderable(this.wrapper, {\n draggable: this._draggableInstance,\n dragOverContainers: proxy(this._allowDragOverContainers, this),\n inSameContainer: function (e) {\n return $(e.source).parent()[0] === $(e.target).parent()[0];\n },\n change: function (e) {\n var newIndex = e.newIndex;\n var oldIndex = e.oldIndex;\n var before = e.position === 'before';\n var column = that.columns[oldIndex];\n that.trigger(COLUMNREORDER, {\n newIndex: newIndex,\n oldIndex: oldIndex,\n column: column\n });\n that.reorderColumn(newIndex, column, before);\n }\n });\n },\n _allowDragOverContainers: function (index) {\n return this.columns[index].lockable !== false;\n },\n reorderColumn: function (destIndex, column, before) {\n var lockChanged;\n var columns = this.columns;\n var sourceIndex = inArray(column, columns);\n var destColumn = columns[destIndex];\n var isLocked = !!destColumn.locked;\n var nonLockedColumnsLength = this._nonLockedColumns().length;\n if (sourceIndex === destIndex) {\n return;\n }\n if (isLocked && !column.locked && nonLockedColumnsLength == 1) {\n return;\n }\n if (!isLocked && column.locked && columns.length - nonLockedColumnsLength == 1) {\n return;\n }\n if (before === undefined) {\n before = destIndex < sourceIndex;\n }\n lockChanged = !!column.locked;\n lockChanged = lockChanged != isLocked;\n column.locked = isLocked;\n columns.splice(before ? destIndex : destIndex + 1, 0, column);\n columns.splice(sourceIndex < destIndex ? sourceIndex : sourceIndex + 1, 1);\n this._renderCols();\n var ths = $(this.lockedHeader).add(this.thead).find('th');\n ths.eq(sourceIndex)[before ? 'insertBefore' : 'insertAfter'](ths.eq(destIndex));\n var dom = this._headerTree.children[0].children;\n if (this._hasLockedColumns) {\n dom = this._lockedHeaderTree.children[0].children.concat(dom);\n }\n dom.splice(before ? destIndex : destIndex + 1, 0, dom[sourceIndex]);\n dom.splice(sourceIndex < destIndex ? sourceIndex : sourceIndex + 1, 1);\n if (this._hasLockedColumns) {\n this._lockedHeaderTree.children[0].children = dom.splice(0, this._lockedColumns().length);\n this._headerTree.children[0].children = dom;\n }\n this._applyLockedContainersWidth();\n this.refresh();\n if (!lockChanged) {\n return;\n }\n if (isLocked) {\n this.trigger(COLUMNLOCK, { column: column });\n } else {\n this.trigger(COLUMNUNLOCK, { column: column });\n }\n },\n lockColumn: function (column) {\n var columns = this.columns;\n if (typeof column == 'number') {\n column = columns[column];\n } else {\n column = grep(columns, function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || column.hidden) {\n return;\n }\n var index = this._lockedColumns().length - 1;\n this.reorderColumn(index, column, false);\n },\n unlockColumn: function (column) {\n var columns = this.columns;\n if (typeof column == 'number') {\n column = columns[column];\n } else {\n column = grep(columns, function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || column.hidden) {\n return;\n }\n var index = this._lockedColumns().length;\n this.reorderColumn(index, column, true);\n },\n _columnMenu: function () {\n var ths = $(this.lockedHeader).add(this.thead).find('th');\n var columns = this.columns;\n var options = this.options;\n var columnMenu = options.columnMenu;\n var column, menu, menuOptions, sortable, filterable;\n var initHandler = proxy(this._columnMenuInit, this);\n var lockedColumnsLength = this._lockedColumns().length;\n if (!columnMenu) {\n return;\n }\n if (typeof columnMenu == 'boolean') {\n columnMenu = {};\n }\n for (var i = 0; i < ths.length; i++) {\n column = columns[i];\n if (!column.field) {\n continue;\n }\n menu = ths.eq(i).data('kendoColumnMenu');\n if (menu) {\n menu.destroy();\n }\n sortable = false;\n if (column.sortable !== false && columnMenu.sortable !== false && options.sortable !== false) {\n sortable = extend({}, options.sortable, { compare: (column.sortable || {}).compare });\n }\n filterable = false;\n if (options.filterable && column.filterable !== false && columnMenu.filterable !== false) {\n filterable = extend({ pane: this.pane }, column.filterable, options.filterable);\n }\n menuOptions = {\n dataSource: this.dataSource,\n values: column.values,\n columns: columnMenu.columns,\n sortable: sortable,\n filterable: filterable,\n messages: columnMenu.messages,\n owner: this,\n closeCallback: $.noop,\n init: initHandler,\n pane: this.pane,\n lockedColumns: column.lockable !== false && lockedColumnsLength > 0\n };\n if (options.$angular) {\n menuOptions.$angular = options.$angular;\n }\n ths.eq(i).kendoColumnMenu(menuOptions);\n }\n },\n _columnMenuInit: function (e) {\n this.trigger(COLUMNMENUINIT, {\n field: e.field,\n container: e.container\n });\n }\n });\n if (kendo.ExcelMixin) {\n kendo.ExcelMixin.extend(TreeList.prototype);\n }\n if (kendo.PDFMixin) {\n kendo.PDFMixin.extend(TreeList.prototype);\n TreeList.fn._drawPDF = function (progress) {\n var promise = new $.Deferred();\n this._drawPDFShadow({ width: this.wrapper.width() }, { avoidLinks: this.options.pdf.avoidLinks }).done(function (group) {\n var args = {\n page: group,\n pageNumber: 1,\n progress: 1,\n totalPages: 1\n };\n progress.notify(args);\n promise.resolve(args.page);\n }).fail(function (err) {\n promise.reject(err);\n });\n return promise;\n };\n }\n extend(true, kendo.data, {\n TreeListDataSource: TreeListDataSource,\n TreeListModel: TreeListModel\n });\n extend(true, kendo.ui, { TreeList: TreeList });\n ui.plugin(TreeList);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}