{"version":3,"sources":["kendo.grid.js"],"names":["f","define","$","normalizeText","text","String","replace","REPLACE_REGEX","SPACE","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","LRUCache","DEFAULT_OPTIONS","defaultMeasureBox","window","kendo","util","Class","extend","init","size","this","_size","_length","_map","put","value","map","entry","_head","_tail","newer","older","get","baselineMarkerSize","document","createElement","cssText","options","_cache","styleKey","cacheKey","cachedResult","baselineMarker","textStr","box","_baselineMarker","cloneNode","textContent","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","marker","deepExtend","jQuery","amd","a1","a2","a3","undefined","attrEquals","attrName","attrValue","attr","groupCells","count","Array","stringifyAttributes","attributes","result","STRING","cursor","context","add","css","reorder","selector","source","dest","before","idx","sourceIndex","eq","appendTo","elements","lockedContent","content","filter","find","attachCustomCommandEvent","container","commands","command","commandName","isArray","isPlainObject","click","name","on","CLICK","NS","proxy","normalizeColumns","columns","encoded","hide","column","hidden","uid","field","isVisible","addHiddenStyle","footerAttributes","headerAttributes","guid","id","columnParent","parents","columnParents","inserted","splice","setColumnVisibility","visible","method","removeHiddenStyle","isCellVisible","display","visibleColumns","grep","toJQuery","toArray","updateCellRowSpan","cell","sourceLockedColumnsCount","lockedColumnDepth","depth","lockedColumns","nonLockedColumnDepth","nonLockedColumns","rowSpan","moveCellsBetweenContainers","sources","target","leafs","destination","groups","rows","sourcesDepth","targetDepth","children","insertAfter","last","addRowSpanValue","moveCells","updateCellIndex","thead","offset","position","allColumns","cells","leafColumns","el","hasClass","columnPosition","row","temp","max","sourcePosition","columnVisiblePosition","ths","t","append","concat","cellCounts","findParentColumnWithChildren","index","rtl","locked","findReorderTarget","parent","parentColumns","inArray","flatColumnsInDomOrder","flatColumns","targetParentContainerIndex","targetIndex","hiddenLeafColumnsCount","counter","columnsWidth","cols","colWidth","indexOf","parseInt","removeRowSpanValue","removeEmptyRows","emptyRowsCount","remove","mapColumnToCellRows","rowIndex","visibleNonLockedColumns","visibleLockedColumns","visibleLeafColumns","leafDataCells","indexAttr","a","b","indexA","indexB","parentColumnsCells","parentCellsWithChildren","prevCells","parentCell","closest","headerRows","level","prevAll","colSpan","Math","getAttribute","childColumnsCells","child","colSpanAttr","next","appendContent","tbody","table","html","empty","placeholder","tmp","tbodySupportsInnerHtml","innerHTML","firstChild","replaceChild","normalizeCols","hasDetails","colgroup","format","is","prepend","browser","msie","version","setTimeout","normalizeHeaderCells","len","lastIndex","th","insertBefore","convertToObject","array","item","formatGroupValue","columnValues","isForeignKey","groupValue","htmlEncode","setCellVisibility","state","pad","nonDataCellsRegExp","test","className","hideColumnCells","columnIndex","groupRows","data","hasSubgroups","items","groupFooters","aggregates","showColumnCells","updateColspan","toAdd","toRemove","num","tableWidth","syncTableHeight","table1","table2","lockedHeigth","tableHeigth","diff","filterRowRegExp","adjustRowHeight","row1","row2","offsetHeight1","offsetHeight2","getCommand","focusTable","direct","scrollLeft","focusElement","one","e","preventDefault","focus","isColumnEditable","model","selectable","editable","isInputElement","element","tableClick","currentTarget","isHeader","lockedTable","headerTable","lockedHeader","isInput","currentTable","support","touch","roleSelector","_setCurrent","navigatable","isIE8","_activeElement","contains","isInEdit","groupRowBuilder","colspan","ARIALABEL","COLLAPSE","groupRowLockedContentBuilder","ui","DataSource","ObservableObject","tbodyInnerHtml","activeElement","Widget","outerWidth","_outerWidth","outerHeight","_outerHeight","keys","prototype","isFunction","isEmptyObject","math","PROGRESS","ERROR","DATA_CELL","SELECTION_CELL_SELECTOR","NAVROW","NAVCELL","ITEMROW","FIRSTITEMROW","LASTITEMROW","FIRSTNAVITEM","HEADERCELLS","EDIT","BEFOREEDIT","SAVE","REMOVE","DETAILINIT","FILTERMENUINIT","COLUMNMENUINIT","FILTERMENUOPEN","COLUMNMENUOPEN","CELLCLOSE","CHANGE","COLUMNHIDE","COLUMNSHOW","SAVECHANGES","DATABOUND","DETAILEXPAND","DETAILCOLLAPSE","ITEM_CHANGE","PAGE","PAGING","SCROLL","SYNC","FOCUSED","FOCUSABLE","SELECTED","CHECKBOX","CHECKBOXINPUT","NORECORDSCLASS","COLUMNRESIZE","COLUMNREORDER","COLUMNLOCK","COLUMNUNLOCK","NAVIGATE","HEIGHT","TABINDEX","FUNCTION","BOTTOM","CONTAINER_FOR","FIELD","INPUT","INCELL","INLINE","UNIQUE_ID","DELETECONFIRM","NORECORDS","CONFIRMDELETE","CANCELDELETE","EXPAND","formatRegExp","templateHashRegExp","whitespaceRegExp","RegExp","COMMANDBUTTONTMPL","SELECTCOLUMNTMPL","SELECTCOLUMNHEADERTMPL","isRtl","isIE7","VirtualScrollable","that","fn","call","_refreshHandler","refresh","setDataSource","dataSource","wrap","unbind","bind","useRanges","itemHeight","noop","prefetch","maxScrollHeight","events","destroy","wrapper","verticalScrollbar","off","drag","scrollbar","overflow","first","_wheelScroll","kineticScrollNeeded","UserEvents","global","allowSelection","start","sender","capture","move","scrollTop","y","delta","x","_scroll","ctrlKey","wheelDeltaY","clientHeight","scrollHeight","delayLoading","rowHeight","skip","_rangeStart","innerHeight","isScrollingUp","_scrollbarTop","firstItemIndex","floor","lastItemOffset","ceil","lastItemIndex","_preventScroll","_scrollTop","_scrolling","_fetch","trigger","_scrollingTimeout","clearTimeout","_page","take","scrollToTop","_scrollTo","scrollToBottom","_scrollWrapperToTop","_scrollWrapperToBottom","_scrollWrapperOnColumnResize","initialScrollTop","scrollWidth","clientWidth","_wrapperScrolled","_isScrolledToBottom","_isWrapperScrolledToBottom","_isScrolledToTop","itemIndex","rangeStart","_isElementVisible","_isElementVisibleInWrapper","halfHeight","top","abs","pageSize","scrollIntoView","containerHeight","containerScroll","elementOffset","elementHeight","scrollingUp","currentSkip","fetching","prefetchAt","webkitCorrection","webkit","min","total","_fetching","callback","_timeout","inRange","progress","range","repaintScrollbar","shouldScrollWrapper","maxHeight","wrapperElement","wasScrolledToBottom","addScrollBarHeight","totalHeight","action","cancel","page","defaultCommands","create","iconClass","save","edit","update","canceledit","excel","pdf","Grid","DataBoundWidget","_events","_element","_aria","_columns","_dataSource","_tbody","_pageable","_thead","_groupable","_toolbar","_setContentHeight","_templates","_navigatable","_selectable","_clipboard","_details","_editable","_attachCustomCommandsEvent","_minScreenSupport","autoBind","fetch","_group","_groups","_footer","addClass","_resizeHandler","resize","notify","scrollable","virtual","groupable","virtualScrollable","toolbar","filterable","sortable","allowCopy","pageable","persistSelection","rowTemplate","altRowTemplate","noRecords","resizable","reorderable","columnMenu","detailTemplate","columnResizeHandleWidth","mobile","messages","cancelDelete","confirmation","confirmDelete","expandCollapseColumnHeader","_angularItems","_destroyColumnAttachments","_navigatableTables","pager","kendoGroupable","clearArea","_selectedIds","copyHandler","updateClipBoardState","clearAreaHandler","_resizeUserEvents","_resizeHandleDocumentClickHandler","_destroyVirtualScrollable","_destroyEditable","_progressHandler","_errorHandler","_removeLockedContainers","pane","minScreenResizeHandler","_draggableInstance","lockedRowTemplate","lockedAltRowTemplate","footerTemplate","groupFooterTemplate","lockedGroupFooterTemplate","noRecordsTemplate","scrollables","footer","lockedFooter","_groupableClickHandler","_groupRows","_setContentWidthHandler","getOptions","initialData","_data","group","aggregate","transport","$angular","setOptions","mobileWrapper","currentOptions","_isMobile","after","removeClass","_setEvents","_items","tr","dataItems","n","resizeHandle","angular","each","filterMenu","_cellId","_hasDetails","_wrapper","_createResizeHandle","left","headerWrap","ieCorrection","firefoxCorrection","indicatorWidth","mozilla","show","_autoFitLeafColumn","_positionColumnResizeHandle","lockedHead","button","buttons","which","_resizeHandleDocumentClick","_hideResizeHandle","_positionColumnResizeHandleTouch","threshold","hold","_resizable","columnStart","columnWidth","columnMinWidth","gridWidth","isLocked","col","isMobile","mobileOS","Resizable","handle","hint","header","contentTable","location","minResizableWidth","constrain","totalWidth","rtlMultiplier","currentWidth","_footerWidth","_scrollVirtualWrapperOnColumnResize","resizeend","newWidth","oldWidth","_applyLockedContainersWidth","_syncLockedContentHeight","_syncLockedHeaderHeight","_draggable","kendoDraggable","autoScroll","dragstart","not","dragend","title","paddingLeft","paddingRight","lineHeight","paddingTop","paddingBottom","_reorderable","kendoReorderable","draggable","dragOverContainers","lockable","inSameContainer","change","oldIndex","newIndex","reorderColumn","_reorderHeader","sourceLockedColumns","targetLockedColumns","destPosition","_reorderContent","footerCol","lockedRows","visibleSources","destIndex","colSourceIndex","colDest","lockedCount","headerCol","prev","_hasFilterRow","leafIndex","autoFitColumn","minWidth","contentDiv","footerTable","j","tables","oldColumnWidth","newColumnWidth","visibleLocked","notGroupOrHierarchyCol","notGroupOrHierarchyVisibleCell","lockChanged","sourceColumns","destColumn","_updateColumnCellIndex","_updateTablesWidth","_updateFirstColumnClass","lockColumn","unlockColumn","cellIndex","td","lockedColumnOffset","_modelForContainer","_editMode","getByUid","mode","multiple","handler","_editContainer","end","closeCell","_scrollVirtualWrapper","isLockedCell","has","blur","editCell","timer","editRow","_isVirtualInlineEditable","stopPropagation","removeRow","_confirmation","_attachModelChange","_shouldClearEditableState","_clearEditableState","kendoEditable","fields","editor","values","skipFocus","_isVirtualIncellEditable","_editableState","_relatedRow","_adjustLockedHorizontalScrollBar","touchScroller","_adjustRowsHeight","_syncLockedFooterHeight","editView","_editCancelClickHandler","_editUpdateClickHandler","_detachModelChange","_destroyEditView","close","_actionSheet","purge","navigate","_modelChangeHandler","_modelChange","isCancel","type","_displayCell","ns","dataItem","storage","settings","Template","templateSettings","tmpl","template","_cellTmpl","_removeRow","modelId","cancelRow","schema","sync","_createPopupEditor","_createInlineEditor","_editCancelClick","_editUpdateClick","saveRow","currentIndex","updateText","cancelText","updateIconClass","cancelIconClass","tempCommand","unescape","_createButton","kendoWindow","modal","userTriggered","clearContainer","_openPopUpEditor","_editAnimation","center","open","Editable","isScrolledToBottom","cancelChanges","_isVirtualEditable","_restoreVirtualView","_displayRow","valid","deferred","Deferred","reject","promise","resolve","related","newRow","nextRow","angularElements","angularData","isSelected","isAlt","replaceWith","_checkBoxSelection","select","_showMessage","actionSheet","view","ActionSheet","cancelTemplate","popup","_actionSheetPopupOptions","confirm","_virtualPageToTop","saveChanges","addRow","createAt","createAtBottom","toLowerCase","virtualEditable","serverPaging","totalPages","_removeCurrent","_virtualAddRow","insert","_editModel","_firstEditableColumnIndex","_virtualAddRowAtBottom","_virtualAddRowAtTop","at","_virtualPageToBottom","_virtualPage","currentRangeStart","initialItemHeight","scrolledItemsCount","newScrollbarTop","_toolbarTmpl","prependTo","saveAsExcel","saveAsPDF","attributeClassMatch","Error","split","match","_hasFooters","groupRow","collapseGroup","expandGroup","_isLocked","_attachGroupable","draggables","enabled","Groupable","groupContainer","draggableElements","allowDrag","endless","_endlessPageSize","_continuousItems","lockedItems","nonLockedItems","apply","slice","multi","notString","Selectable","parseOptions","aria","_persistSelectedRows","useAllItems","relatedTarget","continuousItems","keyCode","SPACEBAR","shiftKey","clear","_lastActive","LEFT","RIGHT","UP","DOWN","selectRange","_firstSelectee","grid","stopImmediatePropagation","copySelection","areaClipBoard","val","getTSV","Event","metaKey","getSelection","selection","createRange","opacity","cellsOffset","lockedCols","inLockedArea","rowsOffset","selected","delimeter","onlyVisible","cellText","any","hideMinScreenCols","screenWidth","innerWidth","screen","_iterateMinScreenCols","minScreenWidth","hideColumn","showColumn","_relatedCell","clearSelection","_deselectCheckRows","selectableoptions","prop","_toggleHeaderCheckState","checked","allRows","dataSourceOptions","selectedViewIds","selectedKeyNames","property","ids","_updateCurrentAttr","headerId","removeAttr","_current","_scrollCurrent","tableContainer","isInLockedContainer","isInContent","scrollableContainer","addBack","_rowVirtualIndex","preventTrigger","_lastCellIndex","elementToLowercase","tagName","isHorizontal","elementOffsetDir","containerOffsetDir","bottomDistance","offsetLeft","dataTables","headerTables","_openHeaderMenu","_tableFocus","_tableBlur","_tableKeyDown","altKey","_setTabIndex","handled","requestInProgress","canHandle","isDefaultPrevented","_moveUp","_moveDown","_moveRight","_moveLeft","PAGEDOWN","_handlePageDown","PAGEUP","_handlePageUp","HOME","_handleHome","END","_handleEnd","ENTER","F2","_handleEnterKey","ESC","_handleEscKey","TAB","_handleTabKey","collapseRow","_moveColumn","_prevHorizontalCell","_tabNext","_horizontalContainer","expandRow","_nextHorizontalCell","nextAll","_prevVerticalCell","_verticalContainer","_nextVerticalCell","isLeft","ctrl","rowContainer","isInLockedTable","isInBody","isInCell","_handleEditing","active","_toggleCurrent","link","focusable","originalIndex","_currentDataIndex","lockedColumnsCount","tmpIndex","currentRowCells","hiddenColumns","up","step","right","back","switchRow","isEdited","isIE","oldIE","editContainer","opera","triggerHandler","_initMobile","Pane","documentElement","align","effect","_scrollable","originalPageSize","hasVirtualScroll","_createVirtualScrollable","_endlessFetchInProgress","_skipRerenderItemsCount","movable","_averageRowHeight","_restoreEditableState","scroll","_focusEditable","_onVirtualPaging","_cacheEditableState","_isVirtualPopupEditable","editableState","editedModel","inlineMode","incellMode","_getByUid","editedField","_canFocusEditable","widget","widgetInstance","_renderNoRecordsContent","noRecordsElement","_setContentWidth","expander","hiddenDivClass","hiddenDiv","isNaN","parseFloat","footerWrap","contentWidth","nonLockedCols","nonLockedColsWidth","isGridHeightSet","scrollableHeight","initialHeight","newHeight","currentRowHeight","itemsCount","_rowHeight","_sum","_measures","_requestStart","_error","_progress","relatedRow","selectableRow","childCells","originalCells","Pager","_wrapFooter","_appendLockedColumnFooter","footerRow","_appendCols","_columnMenu","menu","menuOptions","hasMultiColumnHeaders","initCallback","openCallback","closeCallback","sortHandler","filterHandler","compare","forceUnique","checkSource","owner","filtering","kendoColumnMenu","_headerCells","_filterable","columnFilterable","filterInit","filterOpen","kendoFilterMultiCheck","kendoFilterMenu","_filterRow","rowheader","suggestDataSource","operators","customDataSource","cellOptions","_updateHeader","delay","inputWidth","suggestionOperator","minLength","dataTextField","operator","showOperators","kendoFilterCell","_sortable","sorterInstance","kendoColumnSorter","initialColumns","_checkboxClick","_headerCheckboxClick","checkBox","parentGrid","getKendoGrid","isSelecting","_tmpl","alt","skipGroupCells","paramName","fieldAttr","dirtyCellTemplate","expr","_dirtyCellTemplate","dirtyField","charAt","_headerCellText","headerTemplate","_dirtyIndicatorTemplate","stringify","useWithBlock","columnLeafs","columnsLocked","_detailTmpl","_footerTmpl","g","_noRecordsTmpl","defaultTemplate","scrollableNoGridHeightStyles","templateName","rowClass","scope","fieldsMap","_emptyAggregates","templateFunctionStorage","templateFunctionCount","hasFiltering","columnsWithoutFiltering","detailRow","expanding","masterRow","ariaLabelText","ariaExpandText","toggleClass","detailCell","toggle","correctIdx","classesRegEx","sectionRowIndex","_createHeaderCells","_appendLockedColumnContent","spanIdx","skipHiddenCount","colOffset","detach","lockedCells","_appendLockedColumnHeader","trFilter","hasFilterRow","filterCellOffset","filterCells","leafColumnsCount","filtercellCells","filterRow","existingFilterRow","syncHeight","hasLockedColumns","hasTHead","_prepareColumns","_updateCols","_retrieveFirstColumn","parentRow","childRow","totalColSpan","_updateHeaderCols","_updateLockedCols","_autoColumns","toJSON","_rowsHtml","templates","_groupRowHtml","groupHeaderBuilder","skipColspan","footerData","groupHeaderTemplate","footerDefaults","_groupAggregatesDefaultObject","groupItems","headerData","toHide","groupToCollapse","showFooter","footerCount","relatedGroup","_groupToCollapse","footersVisibility","groupsCount","pop","_firstDataItem","grouped","headerCellIndex","_setParentsVisibility","predicate","p","originalColumn","columnLeafIndex","_resize","force","_isActiveInTable","contentScrollLeft","isCurrentInHeader","_progressTimeOut","_renderContent","_renderLockedContent","_togglePagerVisibility","_restoreCurrent","contentResized","resetTouchEvents","_muteAngularRebind","_restoreSelection","selectedRows","dataItemKey","cmd","_cleanupDetailItems","_angularGroupItems","_angularGroupFooterItems","endlessAppend","alwaysVisible","rows2","containers","containersLength","heights","ExcelMixin","PDFMixin","_drawPDF_autoPageBreak","allPages","startingPage","draw","cont","_destructive","pageNumber","pageNum","drawing","drawDOM","clone","always","then","fail","err","renderPage","origBody","_initPDFProgress","_drawPDF","exportPage","doc","_drawPDFShadow","avoidLinks","done","args","paperSize","Group","pb","loading","kendoProgressBar","chunkCount","plugin"],"mappings":"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","file":"kendo.grid.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('util/text-metrics', ['kendo.core'], f);\n}(function () {\n (function ($) {\n window.kendo.util = window.kendo.util || {};\n var LRUCache = kendo.Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var map = this._map;\n var entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n },\n get: function (key) {\n var entry = this._map[key];\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = this._tail;\n entry.newer = null;\n this._tail.newer = entry;\n this._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n return hash >>> 0;\n }\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var DEFAULT_OPTIONS = { baselineMarkerSize: 1 };\n var defaultMeasureBox;\n if (typeof document !== 'undefined') {\n defaultMeasureBox = document.createElement('div');\n defaultMeasureBox.style.cssText = 'position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;' + 'padding: 0 !important; margin: 0 !important; border: 0 !important;' + 'line-height: normal !important; visibility: hidden !important; white-space: pre!important;';\n }\n var TextMetrics = kendo.Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n measure: function (text, style, options) {\n if (options === void 0) {\n options = {};\n }\n if (!text) {\n return zeroSize();\n }\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (typeof value !== 'undefined') {\n measureBox.style[key] = value;\n }\n }\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n var marker = document.createElement('div');\n marker.style.cssText = 'display: inline-block; vertical-align: baseline;width: ' + this.options.baselineMarkerSize + 'px; height: ' + this.options.baselineMarkerSize + 'px;overflow: hidden;';\n return marker;\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.grid', [\n 'kendo.data',\n 'kendo.columnsorter',\n 'kendo.editable',\n 'kendo.window',\n 'kendo.filtermenu',\n 'kendo.columnmenu',\n 'kendo.groupable',\n 'kendo.pager',\n 'kendo.selectable',\n 'kendo.sortable',\n 'kendo.reorderable',\n 'kendo.resizable',\n 'kendo.mobile.actionsheet',\n 'kendo.mobile.pane',\n 'kendo.ooxml',\n 'kendo.excel',\n 'kendo.progressbar',\n 'kendo.pdf'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'grid',\n name: 'Grid',\n category: 'web',\n description: 'The Grid widget displays tabular data and offers rich support for interacting with data,including paging, sorting, grouping, and selection.',\n depends: [\n 'data',\n 'columnsorter',\n 'sortable'\n ],\n features: [\n {\n id: 'grid-editing',\n name: 'Editing',\n description: 'Support for record editing',\n depends: [\n 'editable',\n 'window'\n ]\n },\n {\n id: 'grid-filtering',\n name: 'Filtering',\n description: 'Support for record filtering',\n depends: ['filtermenu']\n },\n {\n id: 'grid-columnmenu',\n name: 'Column menu',\n description: 'Support for header column menu',\n depends: ['columnmenu']\n },\n {\n id: 'grid-grouping',\n name: 'Grouping',\n description: 'Support for grid grouping',\n depends: ['groupable']\n },\n {\n id: 'grid-filtercell',\n name: 'Row filter',\n description: 'Support for grid header filtering',\n depends: ['filtercell']\n },\n {\n id: 'grid-paging',\n name: 'Paging',\n description: 'Support for grid paging',\n depends: ['pager']\n },\n {\n id: 'grid-selection',\n name: 'Selection',\n description: 'Support for row selection',\n depends: ['selectable']\n },\n {\n id: 'grid-column-reorder',\n name: 'Column reordering',\n description: 'Support for column reordering',\n depends: ['reorderable']\n },\n {\n id: 'grid-column-resize',\n name: 'Column resizing',\n description: 'Support for column resizing',\n depends: ['resizable']\n },\n {\n id: 'grid-mobile',\n name: 'Grid adaptive rendering',\n description: 'Support for adaptive rendering',\n depends: [\n 'mobile.actionsheet',\n 'mobile.pane'\n ]\n },\n {\n id: 'grid-excel-export',\n name: 'Excel export',\n description: 'Export grid data as Excel spreadsheet',\n depends: ['excel']\n },\n {\n id: 'grid-pdf-export',\n name: 'PDF export',\n description: 'Export grid data as PDF',\n depends: [\n 'pdf',\n 'drawing',\n 'progressbar'\n ]\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, DataSource = kendo.data.DataSource, ObservableObject = kendo.data.ObservableObject, tbodySupportsInnerHtml = kendo.support.tbodyInnerHtml, activeElement = kendo._activeElement, Widget = ui.Widget, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, keys = kendo.keys, isPlainObject = $.isPlainObject, extend = $.extend, map = $.map, grep = $.grep, isArray = $.isArray, inArray = $.inArray, push = Array.prototype.push, proxy = $.proxy, isFunction = kendo.isFunction, isEmptyObject = $.isEmptyObject, contains = $.contains, math = Math, PROGRESS = 'progress', ERROR = 'error', DATA_CELL = ':not(.k-group-cell):not(.k-hierarchy-cell):visible', SELECTION_CELL_SELECTOR = 'tbody>tr:not(.k-grouping-row):not(.k-detail-row):not(.k-group-footer) > td:not(.k-group-cell):not(.k-hierarchy-cell)', NAVROW = 'tr:not(.k-footer-template):visible', NAVCELL = ':not(.k-group-cell):not(.k-hierarchy-cell):visible', ITEMROW = 'tr:not(.k-grouping-row):not(.k-detail-row):not(.k-footer-template):not(.k-group-footer):visible', FIRSTITEMROW = ITEMROW + ':first', LASTITEMROW = ITEMROW + ':last', FIRSTNAVITEM = NAVROW + ':first>' + NAVCELL + ':first', HEADERCELLS = 'th.k-header:not(.k-group-cell):not(.k-hierarchy-cell)', NS = '.kendoGrid', EDIT = 'edit', BEFOREEDIT = 'beforeEdit', SAVE = 'save', REMOVE = 'remove', DETAILINIT = 'detailInit', FILTERMENUINIT = 'filterMenuInit', COLUMNMENUINIT = 'columnMenuInit', FILTERMENUOPEN = 'filterMenuOpen', COLUMNMENUOPEN = 'columnMenuOpen', CELLCLOSE = 'cellClose', CHANGE = 'change', COLUMNHIDE = 'columnHide', COLUMNSHOW = 'columnShow', SAVECHANGES = 'saveChanges', DATABOUND = 'dataBound', DETAILEXPAND = 'detailExpand', DETAILCOLLAPSE = 'detailCollapse', ITEM_CHANGE = 'itemchange', PAGE = 'page', PAGING = 'paging', SCROLL = 'scroll', SYNC = 'sync', FOCUSED = 'k-state-focused', FOCUSABLE = ':kendoFocusable', SELECTED = 'k-state-selected', CHECKBOX = 'k-checkbox', CHECKBOXINPUT = 'input[data-role=\\'checkbox\\'].' + CHECKBOX, NORECORDSCLASS = 'k-grid-norecords', COLUMNRESIZE = 'columnResize', COLUMNREORDER = 'columnReorder', COLUMNLOCK = 'columnLock', COLUMNUNLOCK = 'columnUnlock', NAVIGATE = 'navigate', CLICK = 'click', HEIGHT = 'height', TABINDEX = 'tabIndex', FUNCTION = 'function', STRING = 'string', BOTTOM = 'bottom', CONTAINER_FOR = 'container-for', FIELD = 'field', INPUT = 'input', INCELL = 'incell', INLINE = 'inline', UNIQUE_ID = 'uid', DELETECONFIRM = 'Are you sure you want to delete this record?', NORECORDS = 'No records available.', CONFIRMDELETE = 'Delete', CANCELDELETE = 'Cancel', COLLAPSE = 'Collapse', EXPAND = 'Expand', ARIALABEL = 'aria-label', formatRegExp = /(\\}|\\#)/gi, templateHashRegExp = /#/gi, whitespaceRegExp = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]', nonDataCellsRegExp = new RegExp('(^|' + whitespaceRegExp + ')' + '(k-group-cell|k-hierarchy-cell)' + '(' + whitespaceRegExp + '|$)'), filterRowRegExp = new RegExp('(^|' + whitespaceRegExp + ')' + '(k-filter-row)' + '(' + whitespaceRegExp + '|$)'), COMMANDBUTTONTMPL = '# if (iconClass) {#' + '#=text#' + '# } else { #' + '#=text#' + '# } #', SELECTCOLUMNTMPL = '# var checkboxGuid = kendo.guid(); #' + '' + '', SELECTCOLUMNHEADERTMPL = '# var checkboxGuid = kendo.guid(); #' + '' + '', isRtl = false, browser = kendo.support.browser, isIE7 = browser.msie && browser.version == 7, isIE8 = browser.msie && browser.version == 8;\n var VirtualScrollable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._refreshHandler = proxy(that.refresh, that);\n that.setDataSource(options.dataSource);\n that.wrap();\n },\n setDataSource: function (dataSource) {\n var that = this;\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n }\n that.dataSource = dataSource;\n that.dataSource.bind(CHANGE, that._refreshHandler);\n that.dataSource.options.useRanges = true;\n },\n options: {\n name: 'VirtualScrollable',\n itemHeight: $.noop,\n prefetch: true,\n maxScrollHeight: 250000\n },\n events: [\n PAGING,\n PAGE,\n SCROLL\n ],\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n that.wrapper.add(that.verticalScrollbar).off(NS);\n if (that.drag) {\n that.drag.destroy();\n that.drag = null;\n }\n that.wrapper = that.element = that.verticalScrollbar = null;\n that._refreshHandler = null;\n },\n wrap: function () {\n var that = this, scrollbar = kendo.support.scrollbar() + 1, element = that.element, wrapper;\n element.css({\n width: 'auto',\n overflow: 'hidden'\n }).css(isRtl ? 'padding-left' : 'padding-right', scrollbar);\n that.content = element.children().first();\n wrapper = that.wrapper = that.content.wrap('
').parent().bind('DOMMouseScroll' + NS + ' mousewheel' + NS, proxy(that._wheelScroll, that));\n if (kendo.support.kineticScrollNeeded) {\n that.drag = new kendo.UserEvents(that.wrapper, {\n global: true,\n allowSelection: true,\n start: function (e) {\n e.sender.capture();\n },\n move: function (e) {\n that.verticalScrollbar.scrollTop(that.verticalScrollbar.scrollTop() - e.y.delta);\n wrapper.scrollLeft(wrapper.scrollLeft() - e.x.delta);\n e.preventDefault();\n }\n });\n }\n that.verticalScrollbar = $('
').css({ width: scrollbar }).appendTo(element).bind('scroll' + NS, proxy(that._scroll, that));\n },\n _wheelScroll: function (e) {\n if (e.ctrlKey) {\n return;\n }\n var scrollbar = this.verticalScrollbar, scrollTop = scrollbar.scrollTop(), delta = kendo.wheelDeltaY(e);\n if (delta && !(delta > 0 && scrollTop === 0) && !(delta < 0 && scrollTop + scrollbar[0].clientHeight == scrollbar[0].scrollHeight)) {\n e.preventDefault();\n this.verticalScrollbar.scrollTop(scrollTop + -delta);\n }\n },\n _scroll: function (e) {\n var that = this, delayLoading = !that.options.prefetch, scrollTop = e.currentTarget.scrollTop, dataSource = that.dataSource, rowHeight = that.itemHeight, skip = dataSource.skip() || 0, start = that._rangeStart || skip, height = that.element.innerHeight(), isScrollingUp = !!(that._scrollbarTop && that._scrollbarTop > scrollTop), firstItemIndex = math.max(math.floor(scrollTop / rowHeight), 0), lastItemOffset = isScrollingUp ? math.ceil(height / rowHeight) : math.floor(height / rowHeight), lastItemIndex = math.max(firstItemIndex + lastItemOffset, 0);\n if (that._preventScroll) {\n that._preventScroll = false;\n return;\n }\n that._scrollTop = scrollTop - start * rowHeight;\n that._scrollbarTop = scrollTop;\n that._scrolling = delayLoading;\n if (!that._fetch(firstItemIndex, lastItemIndex, isScrollingUp)) {\n that.wrapper[0].scrollTop = that._scrollTop;\n }\n that.trigger(SCROLL);\n if (delayLoading) {\n if (that._scrollingTimeout) {\n clearTimeout(that._scrollingTimeout);\n }\n that._scrollingTimeout = setTimeout(function () {\n that._scrolling = false;\n that._page(that._rangeStart, that.dataSource.take());\n }, 100);\n }\n },\n scrollToTop: function () {\n this._scrollTo(0);\n },\n scrollToBottom: function () {\n var scrollbar = this.verticalScrollbar;\n this._scrollTo(scrollbar[0].scrollHeight - scrollbar.height());\n },\n _scrollWrapperToTop: function () {\n this.wrapper.scrollTop(0);\n },\n _scrollWrapperToBottom: function () {\n this.wrapper.scrollTop(this.wrapper[0].scrollHeight);\n },\n _scrollWrapperOnColumnResize: function () {\n var that = this;\n var wrapper = this.wrapper;\n var initialScrollTop = wrapper.scrollTop();\n if (wrapper[0].scrollWidth > wrapper[0].clientWidth) {\n if (!that._wrapperScrolled || that._isScrolledToBottom()) {\n wrapper.scrollTop(initialScrollTop + kendo.support.scrollbar());\n that._scrollTop = wrapper.scrollTop();\n that._wrapperScrolled = true;\n }\n } else if (that._wrapperScrolled) {\n if (!that._isWrapperScrolledToBottom()) {\n wrapper.scrollTop(initialScrollTop - kendo.support.scrollbar());\n that._scrollTop = wrapper.scrollTop();\n }\n that._wrapperScrolled = false;\n }\n },\n _scrollTo: function (scrollTop) {\n var that = this;\n var scrollbar = that.verticalScrollbar;\n if (scrollbar.scrollTop() !== scrollTop) {\n that._preventScroll = true;\n }\n that.wrapper.scrollTop(scrollTop);\n that._scrollTop = that.wrapper.scrollTop();\n scrollbar.scrollTop(scrollTop);\n that._scrollbarTop = scrollbar.scrollTop();\n },\n _isScrolledToTop: function () {\n return this.verticalScrollbar.scrollTop() === 0;\n },\n _isScrolledToBottom: function () {\n var scrollbar = this.verticalScrollbar;\n var scrollTop = scrollbar.scrollTop();\n return scrollTop > 0 && scrollTop >= parseInt(scrollbar[0].scrollHeight - scrollbar.height(), 10);\n },\n _isWrapperScrolledToBottom: function () {\n var wrapper = this.wrapper;\n return wrapper.scrollTop() >= parseInt(wrapper[0].scrollHeight - wrapper.height(), 10);\n },\n itemIndex: function (rowIndex) {\n var rangeStart = this._rangeStart || this.dataSource.skip() || 0;\n return rangeStart + rowIndex;\n },\n _isElementVisible: function (element) {\n return this._isElementVisibleInWrapper(element);\n },\n _isElementVisibleInWrapper: function (element) {\n var that = this;\n var wrapper = that.wrapper;\n var offsetTop;\n var halfHeight;\n element = $(element);\n if (element[0] && contains(wrapper[0], element[0])) {\n offsetTop = parseInt(element.position().top, 10);\n halfHeight = element.outerHeight() / 2;\n if ((offsetTop >= 0 || math.abs(offsetTop) <= halfHeight) && offsetTop + halfHeight <= wrapper.height()) {\n return true;\n }\n }\n return false;\n },\n position: function (index) {\n var rangeStart = this._rangeStart || this.dataSource.skip() || 0;\n var pageSize = this.dataSource.pageSize();\n var result;\n if (index > rangeStart) {\n result = index - rangeStart + 1;\n } else {\n result = rangeStart - index - 1;\n }\n return result > pageSize ? pageSize : result;\n },\n scrollIntoView: function (row) {\n var container = this.wrapper[0];\n var containerHeight = container.clientHeight;\n var containerScroll = !this._isScrolledToBottom() ? this._scrollTop || container.scrollTop : container.scrollTop;\n var elementOffset = row[0].offsetTop;\n var elementHeight = row[0].offsetHeight;\n if (containerScroll > elementOffset) {\n this.verticalScrollbar[0].scrollTop -= containerHeight / 2;\n } else if (elementOffset + elementHeight >= containerScroll + containerHeight) {\n this.verticalScrollbar[0].scrollTop += containerHeight / 2;\n }\n },\n _fetch: function (firstItemIndex, lastItemIndex, scrollingUp) {\n var that = this, dataSource = that.dataSource, itemHeight = that.itemHeight, take = dataSource.take(), rangeStart = that._rangeStart || dataSource.skip() || 0, currentSkip = math.floor(firstItemIndex / take) * take, fetching = false, prefetchAt = 0.33;\n var scrollbar = that.verticalScrollbar;\n var webkitCorrection = browser.webkit ? 1 : 0;\n if (firstItemIndex < rangeStart) {\n fetching = true;\n rangeStart = math.max(0, lastItemIndex - take);\n that._scrollTop = scrollbar.scrollTop() - rangeStart * itemHeight;\n that._page(rangeStart, take);\n } else if (lastItemIndex >= rangeStart + take && !scrollingUp) {\n fetching = true;\n rangeStart = math.min(firstItemIndex, dataSource.total() - take);\n if (scrollbar.scrollTop() >= scrollbar[0].scrollHeight - scrollbar.height() - webkitCorrection) {\n that._scrollTop = that.wrapper[0].scrollHeight - that.wrapper.height();\n } else {\n that._scrollTop = itemHeight;\n }\n that._page(rangeStart, take);\n } else if (!that._fetching && that.options.prefetch) {\n if (firstItemIndex < currentSkip + take - take * prefetchAt && firstItemIndex > take) {\n dataSource.prefetch(currentSkip - take, take, $.noop);\n }\n if (lastItemIndex > currentSkip + take * prefetchAt) {\n dataSource.prefetch(currentSkip + take, take, $.noop);\n }\n }\n return fetching;\n },\n fetching: function () {\n return this._fetching;\n },\n _page: function (skip, take, callback) {\n var that = this, delayLoading = !that.options.prefetch, dataSource = that.dataSource;\n callback = isFunction(callback) ? callback : $.noop;\n if (that.trigger(PAGING, {\n skip: skip,\n take: take\n })) {\n return;\n }\n clearTimeout(that._timeout);\n that._fetching = true;\n that._rangeStart = skip;\n if (dataSource.inRange(skip, take)) {\n kendo.ui.progress($(that.wrapper).parent(), true);\n dataSource.range(skip, take, function () {\n kendo.ui.progress($(that.wrapper).parent(), false);\n callback();\n that.trigger(PAGE);\n });\n } else {\n if (!delayLoading) {\n kendo.ui.progress(that.wrapper.parent(), true);\n }\n that._timeout = setTimeout(function () {\n if (!that._scrolling) {\n if (delayLoading) {\n kendo.ui.progress(that.wrapper.parent(), true);\n }\n dataSource.range(skip, take, function () {\n kendo.ui.progress(that.wrapper.parent(), false);\n callback();\n that.trigger(PAGE);\n });\n }\n }, 100);\n }\n },\n repaintScrollbar: function (shouldScrollWrapper) {\n var that = this, html = '', maxHeight = that.options.maxScrollHeight, dataSource = that.dataSource, scrollbar = !kendo.support.kineticScrollNeeded ? kendo.support.scrollbar() : 0, wrapperElement = that.wrapper[0], totalHeight, idx, itemHeight;\n var wasScrolledToBottom = that._isScrolledToBottom();\n itemHeight = that.itemHeight = that.options.itemHeight() || 0;\n var addScrollBarHeight = wrapperElement.scrollWidth > wrapperElement.offsetWidth ? scrollbar : 0;\n totalHeight = dataSource.total() * itemHeight + addScrollBarHeight;\n for (idx = 0; idx < math.floor(totalHeight / maxHeight); idx++) {\n html += '
';\n }\n if (totalHeight % maxHeight) {\n html += '
';\n }\n that.verticalScrollbar.html(html);\n if (wasScrolledToBottom && !that._isScrolledToBottom()) {\n that.scrollToBottom();\n }\n if (typeof that._scrollTop !== 'undefined' && !!shouldScrollWrapper) {\n wrapperElement.scrollTop = that._scrollTop;\n that._scrollWrapperOnColumnResize();\n }\n },\n refresh: function (e) {\n var that = this, dataSource = that.dataSource, rangeStart = that._rangeStart;\n var action = (e || {}).action;\n var shouldScrollWrapper = that._isScrolledToBottom() || !action || action !== ITEM_CHANGE && action !== REMOVE && action !== SYNC;\n kendo.ui.progress(that.wrapper.parent(), false);\n clearTimeout(that._timeout);\n that.repaintScrollbar(shouldScrollWrapper);\n if (that.drag) {\n that.drag.cancel();\n }\n if (typeof rangeStart !== 'undefined' && !that._fetching) {\n if (!action || action !== SYNC && action !== ITEM_CHANGE) {\n that._rangeStart = dataSource.skip();\n }\n if (dataSource.page() === 1 && (!action || action !== SYNC && action !== ITEM_CHANGE)) {\n that.verticalScrollbar[0].scrollTop = 0;\n }\n }\n that._fetching = false;\n }\n });\n function attrEquals(attrName, attrValue) {\n return '[' + kendo.attr(attrName) + '=' + attrValue + ']';\n }\n function groupCells(count) {\n return new Array(count + 1).join(' ');\n }\n function stringifyAttributes(attributes) {\n var attr, result = ' ';\n if (attributes) {\n if (typeof attributes === STRING) {\n return attributes;\n }\n for (attr in attributes) {\n if (attributes[attr] !== '') {\n result += attr + '=\"' + attributes[attr] + '\"';\n }\n }\n }\n return result;\n }\n var defaultCommands = {\n create: {\n text: 'Add new record',\n className: 'k-grid-add',\n iconClass: 'k-icon k-i-plus'\n },\n cancel: {\n text: 'Cancel changes',\n className: 'k-grid-cancel-changes',\n iconClass: 'k-icon k-i-cancel'\n },\n save: {\n text: 'Save changes',\n className: 'k-grid-save-changes',\n iconClass: 'k-icon k-i-check'\n },\n destroy: {\n text: 'Delete',\n className: 'k-grid-delete',\n iconClass: 'k-icon k-i-close'\n },\n edit: {\n text: 'Edit',\n className: 'k-grid-edit',\n iconClass: 'k-icon k-i-edit'\n },\n update: {\n text: 'Update',\n className: 'k-primary k-grid-update',\n iconClass: 'k-icon k-i-check'\n },\n canceledit: {\n text: 'Cancel',\n className: 'k-grid-cancel',\n iconClass: 'k-icon k-i-cancel'\n },\n excel: {\n text: 'Export to Excel',\n className: 'k-grid-excel',\n iconClass: 'k-icon k-i-file-excel'\n },\n pdf: {\n text: 'Export to PDF',\n className: 'k-grid-pdf',\n iconClass: 'k-icon k-i-file-pdf'\n }\n };\n function cursor(context, value) {\n $('th, th .k-grid-filter, th .k-link', context).add(document.body).css('cursor', value);\n }\n function reorder(selector, source, dest, before, count) {\n var sourceIndex = source;\n source = $();\n count = count || 1;\n for (var idx = 0; idx < count; idx++) {\n source = source.add(selector.eq(sourceIndex + idx));\n }\n if (typeof dest == 'number') {\n source[before ? 'insertBefore' : 'insertAfter'](selector.eq(dest));\n } else {\n source.appendTo(dest);\n }\n }\n function elements(lockedContent, content, filter) {\n return $(lockedContent).add(content).find(filter);\n }\n function attachCustomCommandEvent(context, container, commands) {\n var idx, length, command, commandName;\n commands = !isArray(commands) ? [commands] : commands;\n for (idx = 0, length = commands.length; idx < length; idx++) {\n command = commands[idx];\n if (isPlainObject(command) && command.click) {\n commandName = command.name || command.text;\n container.on(CLICK + NS, 'a.k-grid-' + (commandName || '').replace(/\\s/g, ''), { commandName: commandName }, proxy(command.click, context));\n }\n }\n }\n function normalizeColumns(columns, encoded, hide) {\n return map(columns, function (column) {\n column = typeof column === STRING ? { field: column } : column;\n var hidden;\n if (!isVisible(column) || hide) {\n column.attributes = addHiddenStyle(column.attributes);\n column.footerAttributes = addHiddenStyle(column.footerAttributes);\n column.headerAttributes = addHiddenStyle(column.headerAttributes);\n hidden = true;\n }\n if (column.columns) {\n column.columns = normalizeColumns(column.columns, encoded, hidden);\n }\n var uid = kendo.guid();\n column.headerAttributes = extend({ id: uid }, column.headerAttributes);\n return extend({\n encoded: encoded,\n hidden: hidden\n }, column);\n });\n }\n function columnParent(column, columns) {\n var parents = [];\n columnParents(column, columns, parents);\n return parents[parents.length - 1];\n }\n function columnParents(column, columns, parents) {\n parents = parents || [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (column === columns[idx]) {\n return true;\n } else if (columns[idx].columns) {\n var inserted = parents.length;\n parents.push(columns[idx]);\n if (!columnParents(column, columns[idx].columns, parents)) {\n parents.splice(inserted, parents.length - inserted);\n } else {\n return true;\n }\n }\n }\n return false;\n }\n function setColumnVisibility(column, visible) {\n var method = visible ? removeHiddenStyle : addHiddenStyle;\n column.hidden = !visible;\n column.attributes = method(column.attributes);\n column.footerAttributes = method(column.footerAttributes);\n column.headerAttributes = method(column.headerAttributes);\n }\n function isCellVisible() {\n return this.style.display !== 'none';\n }\n function isVisible(column) {\n return visibleColumns([column]).length > 0;\n }\n function visibleColumns(columns) {\n return grep(columns, function (column) {\n var result = !column.hidden;\n if (result && column.columns) {\n result = visibleColumns(column.columns).length > 0;\n }\n return result;\n });\n }\n function toJQuery(elements) {\n return $(elements).map(function () {\n return this.toArray();\n });\n }\n function updateCellRowSpan(cell, columns, sourceLockedColumnsCount) {\n var lockedColumnDepth = depth(lockedColumns(columns));\n var nonLockedColumnDepth = depth(nonLockedColumns(columns));\n var rowSpan = cell.rowSpan;\n if (sourceLockedColumnsCount) {\n if (lockedColumnDepth > nonLockedColumnDepth) {\n cell.rowSpan = rowSpan - (lockedColumnDepth - nonLockedColumnDepth) || 1;\n } else {\n cell.rowSpan = rowSpan + (nonLockedColumnDepth - lockedColumnDepth);\n }\n } else {\n if (lockedColumnDepth > nonLockedColumnDepth) {\n cell.rowSpan = rowSpan + (lockedColumnDepth - nonLockedColumnDepth);\n } else {\n cell.rowSpan = rowSpan - (nonLockedColumnDepth - lockedColumnDepth) || 1;\n }\n }\n }\n function moveCellsBetweenContainers(sources, target, leafs, columns, container, destination, groups) {\n var sourcesDepth = depth(sources);\n var targetDepth = depth([target]);\n if (sourcesDepth > targetDepth) {\n var groupCells = new Array(groups + 1).join(' ');\n var rows = destination.children(':not(.k-filter-row)');\n $(new Array(sourcesDepth - targetDepth + 1).join('' + groupCells + '')).insertAfter(rows.last());\n }\n addRowSpanValue(destination, sourcesDepth - targetDepth);\n moveCells(leafs, columns, container, destination);\n }\n function updateCellIndex(thead, columns, offset) {\n offset = offset || 0;\n var position;\n var cell;\n var allColumns = columns;\n columns = leafColumns(columns);\n var cells = {};\n var rows = thead.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 for (var idx = 0, length = columns.length; idx < length; idx++) {\n position = columnPosition(columns[idx], allColumns);\n if (!cells[position.row]) {\n cells[position.row] = rows.eq(position.row).find('.k-header').filter(filter);\n }\n cell = cells[position.row].eq(position.cell);\n cell.attr(kendo.attr('index'), offset + idx);\n }\n return columns.length;\n }\n function depth(columns) {\n var result = 1;\n var max = 0;\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n var temp = depth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n }\n function moveCells(leafs, columns, container, destination) {\n var sourcePosition = columnVisiblePosition(leafs[0], columns);\n var ths = container.find('>tr:not(.k-filter-row):eq(' + sourcePosition.row + ')>th.k-header');\n var t = $();\n var sourceIndex = sourcePosition.cell;\n var idx;\n for (idx = 0; idx < leafs.length; idx++) {\n t = t.add(ths.eq(sourceIndex + idx));\n }\n destination.find('>tr:not(.k-filter-row)').eq(sourcePosition.row).append(t);\n var children = [];\n for (idx = 0; idx < leafs.length; idx++) {\n if (leafs[idx].columns) {\n children = children.concat(leafs[idx].columns);\n }\n }\n if (children.length) {\n moveCells(children, columns, container, destination);\n }\n }\n function columnPosition(column, columns, row, cellCounts) {\n var result;\n var idx;\n row = row || 0;\n cellCounts = cellCounts || {};\n cellCounts[row] = cellCounts[row] || 0;\n for (idx = 0; idx < columns.length; idx++) {\n if (columns[idx] == column) {\n result = {\n cell: cellCounts[row],\n row: row\n };\n break;\n } else if (columns[idx].columns) {\n result = columnPosition(column, columns[idx].columns, row + 1, cellCounts);\n if (result) {\n break;\n }\n }\n cellCounts[row]++;\n }\n return result;\n }\n function findParentColumnWithChildren(columns, index, source, rtl) {\n var target;\n var locked = source.locked;\n do {\n target = columns[index];\n index += rtl ? 1 : -1;\n } while (target && index > -1 && index < columns.length && target != source && !target.columns && target.locked == locked);\n return target;\n }\n function findReorderTarget(columns, target, source, before) {\n if (target.columns) {\n target = target.columns;\n return target[before ? 0 : target.length - 1];\n } else {\n var parent = columnParent(target, columns);\n var parentColumns;\n if (parent) {\n parentColumns = parent.columns;\n } else {\n parentColumns = columns;\n }\n var index = inArray(target, parentColumns);\n if (index === 0 && before) {\n index++;\n } else if (index == parentColumns.length - 1 && !before) {\n index--;\n } else if (index > 0 || index === 0 && !before) {\n index += before ? -1 : 1;\n }\n var sourceIndex = inArray(source, parentColumns);\n target = findParentColumnWithChildren(parentColumns, index, source, sourceIndex > index);\n if (target && target != source && target.columns) {\n return findReorderTarget(columns, target, source, before);\n }\n }\n return null;\n }\n function columnVisiblePosition(column, columns, row, cellCounts) {\n var result;\n var idx;\n row = row || 0;\n cellCounts = cellCounts || {};\n cellCounts[row] = cellCounts[row] || 0;\n for (idx = 0; idx < columns.length; idx++) {\n if (columns[idx] == column) {\n result = {\n cell: cellCounts[row],\n row: row\n };\n break;\n } else if (columns[idx].columns) {\n result = columnVisiblePosition(column, columns[idx].columns, row + 1, cellCounts);\n if (result) {\n break;\n }\n }\n if (!columns[idx].hidden) {\n cellCounts[row]++;\n }\n }\n return result;\n }\n function flatColumnsInDomOrder(columns) {\n var result = flatColumns(lockedColumns(columns));\n return result.concat(flatColumns(nonLockedColumns(columns)));\n }\n function targetParentContainerIndex(flatColumns, columns, sourceIndex, targetIndex) {\n var column = flatColumns[sourceIndex];\n var target = flatColumns[targetIndex];\n var parent = columnParent(column, columns);\n columns = parent ? parent.columns : columns;\n return inArray(target, columns);\n }\n function flatColumns(columns) {\n var result = [];\n var children = [];\n for (var idx = 0; idx < columns.length; idx++) {\n result.push(columns[idx]);\n if (columns[idx].columns) {\n children = children.concat(columns[idx].columns);\n }\n }\n if (children.length) {\n result = result.concat(flatColumns(children));\n }\n return result;\n }\n function hiddenLeafColumnsCount(columns) {\n var counter = 0;\n var column;\n for (var idx = 0; idx < columns.length; idx++) {\n column = columns[idx];\n if (column.columns) {\n counter += hiddenLeafColumnsCount(column.columns);\n } else if (column.hidden) {\n counter++;\n }\n }\n return counter;\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 removeRowSpanValue(container, count) {\n var cells = container.find('tr:not(.k-filter-row) th:not(.k-group-cell,.k-hierarchy-cell)');\n var rowSpan;\n for (var idx = 0; idx < cells.length; idx++) {\n rowSpan = cells[idx].rowSpan;\n if (rowSpan > 1) {\n cells[idx].rowSpan = rowSpan - count || 1;\n }\n }\n }\n function addRowSpanValue(container, count) {\n var cells = container.find('tr:not(.k-filter-row) th:not(.k-group-cell,.k-hierarchy-cell)');\n for (var idx = 0; idx < cells.length; idx++) {\n cells[idx].rowSpan += count;\n }\n }\n function removeEmptyRows(container) {\n var rows = container.find('tr:not(.k-filter-row)');\n var emptyRowsCount = rows.filter(function () {\n return !$(this).children().length;\n }).remove().length;\n var cells = rows.find('th:not(.k-group-cell,.k-hierarchy-cell)');\n for (var idx = 0; idx < cells.length; idx++) {\n if (cells[idx].rowSpan > 1) {\n cells[idx].rowSpan -= emptyRowsCount;\n }\n }\n return rows.length - emptyRowsCount;\n }\n function mapColumnToCellRows(columns, cells, rows, rowIndex, offset) {\n var idx, row, length, children = [];\n for (idx = 0, length = columns.length; idx < length; idx++) {\n row = rows[rowIndex] || [];\n row.push(cells.eq(offset + idx));\n rows[rowIndex] = row;\n if (columns[idx].columns) {\n children = children.concat(columns[idx].columns);\n }\n }\n if (children.length) {\n mapColumnToCellRows(children, cells, rows, rowIndex + 1, offset + columns.length);\n }\n }\n function lockedColumns(columns) {\n return grep(columns, function (column) {\n return column.locked;\n });\n }\n function nonLockedColumns(columns) {\n return grep(columns, function (column) {\n return !column.locked;\n });\n }\n function visibleNonLockedColumns(columns) {\n return grep(columns, function (column) {\n return !column.locked && isVisible(column);\n });\n }\n function visibleLockedColumns(columns) {\n return grep(columns, function (column) {\n return column.locked && isVisible(column);\n });\n }\n function visibleLeafColumns(columns) {\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].hidden) {\n continue;\n }\n if (columns[idx].columns) {\n result = result.concat(visibleLeafColumns(columns[idx].columns));\n } else {\n result.push(columns[idx]);\n }\n }\n return result;\n }\n function leafColumns(columns) {\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n continue;\n }\n result = result.concat(leafColumns(columns[idx].columns));\n }\n return result;\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 parentColumnsCells(cell) {\n var container = cell.closest('table');\n var result = $().add(cell);\n var row = cell.closest('tr');\n var headerRows = container.find('tr:not(.k-filter-row)');\n var level = headerRows.index(row);\n if (level > 0) {\n var parent = headerRows.eq(level - 1);\n var parentCellsWithChildren = parent.find('th:not(.k-group-cell,.k-hierarchy-cell)').filter(function () {\n return !$(this).attr('rowspan');\n });\n var offset = 0;\n var index = row.find('th:not(.k-group-cell,.k-hierarchy-cell)').index(cell);\n var prevCells = cell.prevAll(':not(.k-group-cell,.k-hierarchy-cell)').filter(function () {\n return this.colSpan > 1;\n });\n for (var idx = 0; idx < prevCells.length; idx++) {\n offset += prevCells[idx].colSpan || 1;\n }\n index += Math.max(offset - 1, 0);\n offset = 0;\n for (idx = 0; idx < parentCellsWithChildren.length; idx++) {\n var parentCell = parentCellsWithChildren.eq(idx);\n if (parentCell.attr('data-colspan')) {\n offset += parentCell[0].getAttribute('data-colspan');\n } else {\n offset += 1;\n }\n if (index >= idx && index < offset) {\n result = parentColumnsCells(parentCell).add(result);\n break;\n }\n }\n }\n return result;\n }\n function childColumnsCells(cell) {\n var container = cell.closest('thead');\n var result = $().add(cell);\n var row = cell.closest('tr');\n var headerRows = container.find('tr:not(.k-filter-row)');\n var level = headerRows.index(row) + cell[0].rowSpan;\n var colSpanAttr = kendo.attr('colspan');\n if (level <= headerRows.length - 1) {\n var child = row.next();\n var prevCells = cell.prevAll(':not(.k-group-cell,.k-hierarchy-cell)');\n var idx;\n prevCells = prevCells.filter(function () {\n return !this.rowSpan || this.rowSpan === 1;\n });\n var offset = 0;\n for (idx = 0; idx < prevCells.length; idx++) {\n offset += parseInt(prevCells.eq(idx).attr(colSpanAttr), 10) || 1;\n }\n var cells = child.find('th:not(.k-group-cell,.k-hierarchy-cell)');\n var colSpan = parseInt(cell.attr(colSpanAttr), 10) || 1;\n idx = 0;\n while (idx < colSpan) {\n child = cells.eq(idx + offset);\n result = result.add(childColumnsCells(child));\n var value = parseInt(child.attr(colSpanAttr), 10);\n if (value > 1) {\n colSpan -= value - 1;\n }\n idx++;\n }\n }\n return result;\n }\n function appendContent(tbody, table, html, empty) {\n var placeholder, tmp = tbody;\n if (empty) {\n tbody.empty();\n }\n if (tbodySupportsInnerHtml) {\n tbody[0].innerHTML = html;\n } else {\n placeholder = document.createElement('div');\n placeholder.innerHTML = '' + html + '
';\n tbody = placeholder.firstChild.firstChild;\n table[0].replaceChild(tbody, tmp[0]);\n tbody = $(tbody);\n }\n return tbody;\n }\n function addHiddenStyle(attr) {\n attr = attr || {};\n var style = attr.style;\n if (!style) {\n style = 'display:none';\n } else {\n style = style.replace(/((.*)?display)(.*)?:([^;]*)/i, '$1:none');\n if (style === attr.style) {\n style = style.replace(/(.*)?/i, 'display:none;$1');\n }\n }\n return extend({}, attr, { style: style });\n }\n function removeHiddenStyle(attr) {\n attr = attr || {};\n var style = attr.style;\n if (style) {\n attr.style = style.replace(/(display\\s*:\\s*none\\s*;?)*/gi, '');\n }\n return attr;\n }\n function normalizeCols(table, visibleColumns, hasDetails, groups) {\n var colgroup = table.find('>colgroup'), width, cols = map(visibleColumns, function (column) {\n width = column.width;\n if (width && parseInt(width, 10) !== 0) {\n return kendo.format('', typeof width === STRING ? width : width + 'px');\n }\n return '';\n });\n if (hasDetails || colgroup.find('.k-hierarchy-col').length) {\n cols.splice(0, 0, '');\n }\n if (colgroup.length) {\n colgroup.remove();\n }\n colgroup = $(new Array(groups + 1).join('') + cols.join(''));\n if (!colgroup.is('colgroup')) {\n colgroup = $('').append(colgroup);\n }\n table.prepend(colgroup);\n if (browser.msie && browser.version == 8) {\n table.css('display', 'inline-table');\n window.setTimeout(function () {\n table.css('display', '');\n }, 1);\n }\n }\n function normalizeHeaderCells(container, columns) {\n var lastIndex = 0;\n var idx, len;\n var th = container.find('th:not(.k-group-cell)');\n for (idx = 0, len = columns.length; idx < len; idx++) {\n if (columns[idx].locked) {\n th.eq(idx).insertBefore(th.eq(lastIndex));\n th = container.find('th:not(.k-group-cell)');\n lastIndex++;\n }\n }\n }\n function convertToObject(array) {\n var result = {}, item, idx, length;\n for (idx = 0, length = array.length; idx < length; idx++) {\n item = array[idx];\n result[item.value] = item.text;\n }\n return result;\n }\n function formatGroupValue(value, format, columnValues, encoded) {\n var isForeignKey = columnValues && columnValues.length && isPlainObject(columnValues[0]) && 'value' in columnValues[0], groupValue = isForeignKey ? convertToObject(columnValues)[value] : value;\n groupValue = groupValue != null ? groupValue : '';\n return format ? kendo.format(format, groupValue) : encoded === false ? groupValue : kendo.htmlEncode(groupValue);\n }\n function setCellVisibility(cells, index, visible) {\n var pad = 0, state, cell = cells[pad];\n while (cell) {\n state = visible ? true : cell.style.display !== 'none';\n if (state && !nonDataCellsRegExp.test(cell.className) && --index < 0) {\n cell.style.display = visible ? '' : 'none';\n break;\n }\n cell = cells[++pad];\n }\n }\n function hideColumnCells(rows, columnIndex) {\n var idx = 0, length = rows.length, cell, row;\n for (; idx < length; idx += 1) {\n row = rows.eq(idx);\n if (row.is('.k-grouping-row,.k-detail-row')) {\n cell = row.children(':not(.k-group-cell):first,.k-detail-cell').last();\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) - 1);\n } else {\n if (row.hasClass('k-grid-edit-row') && (cell = row.children('.k-edit-container')[0])) {\n cell = $(cell);\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) - 1);\n cell.find('col').eq(columnIndex).remove();\n row = cell.find('tr:first');\n }\n setCellVisibility(row[0].cells, columnIndex, false);\n }\n }\n }\n function groupRows(data) {\n var result = [];\n var item;\n for (var idx = 0; idx < data.length; idx++) {\n item = data[idx];\n if (!('field' in item && 'value' in item && 'items' in item)) {\n break;\n }\n result.push(item);\n if (item.hasSubgroups) {\n result = result.concat(groupRows(item.items));\n }\n }\n return result;\n }\n function groupFooters(data) {\n var result = [];\n var item;\n for (var idx = 0; idx < data.length; idx++) {\n item = data[idx];\n if (!('field' in item && 'value' in item && 'items' in item)) {\n break;\n }\n if (item.hasSubgroups) {\n result = result.concat(groupFooters(item.items));\n }\n result.push(item.aggregates);\n }\n return result;\n }\n function showColumnCells(rows, columnIndex) {\n var idx = 0, length = rows.length, cell, row, columns;\n for (; idx < length; idx += 1) {\n row = rows.eq(idx);\n if (row.is('.k-grouping-row,.k-detail-row')) {\n cell = row.children(':not(.k-group-cell):first,.k-detail-cell').last();\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) + 1);\n } else {\n if (row.hasClass('k-grid-edit-row') && (cell = row.children('.k-edit-container')[0])) {\n cell = $(cell);\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) + 1);\n normalizeCols(cell.find('>form>table'), visibleColumns(columns), false, 0);\n row = cell.find('tr:first');\n }\n setCellVisibility(row[0].cells, columnIndex, true);\n }\n }\n }\n function updateColspan(toAdd, toRemove, num) {\n num = num || 1;\n var item, idx, length;\n for (idx = 0, length = toAdd.length; idx < length; idx++) {\n item = toAdd.eq(idx).children().last();\n item.attr('colspan', parseInt(item.attr('colspan'), 10) + num);\n item = toRemove.eq(idx).children().last();\n item.attr('colspan', parseInt(item.attr('colspan'), 10) - num);\n }\n }\n function tableWidth(table) {\n var idx, length, width = 0;\n var cols = table.find('>colgroup>col');\n for (idx = 0, length = cols.length; idx < length; idx += 1) {\n width += parseInt(cols[idx].style.width, 10);\n }\n return width;\n }\n var Grid = kendo.ui.DataBoundWidget.extend({\n init: function (element, options, events) {\n var that = this;\n options = isArray(options) ? { dataSource: options } : options;\n Widget.fn.init.call(that, element, options);\n if (events) {\n that._events = events;\n }\n isRtl = kendo.support.isRtl(element);\n that._element();\n that._aria();\n that._columns($.extend(true, [], that.options.columns));\n that._dataSource();\n that._tbody();\n that._pageable();\n that._thead();\n that._groupable();\n that._toolbar();\n that._setContentHeight();\n that._templates();\n that._navigatable();\n that._selectable();\n that._clipboard();\n that._details();\n that._editable();\n that._attachCustomCommandsEvent();\n that._minScreenSupport();\n if (that.options.autoBind) {\n that.dataSource.fetch();\n } else {\n that._group = that._groups() > 0;\n that._footer();\n }\n if (that.lockedContent) {\n that.wrapper.addClass('k-grid-lockedcolumns');\n that._resizeHandler = function () {\n that.resize();\n };\n $(window).on('resize' + NS, that._resizeHandler);\n }\n kendo.notify(that);\n },\n events: [\n CHANGE,\n 'dataBinding',\n 'cancel',\n DATABOUND,\n DETAILEXPAND,\n DETAILCOLLAPSE,\n DETAILINIT,\n FILTERMENUINIT,\n FILTERMENUOPEN,\n COLUMNMENUINIT,\n COLUMNMENUOPEN,\n EDIT,\n BEFOREEDIT,\n SAVE,\n REMOVE,\n SAVECHANGES,\n CELLCLOSE,\n COLUMNRESIZE,\n COLUMNREORDER,\n COLUMNSHOW,\n COLUMNHIDE,\n COLUMNLOCK,\n COLUMNUNLOCK,\n NAVIGATE,\n 'page',\n 'sort',\n 'filter',\n 'group',\n 'groupExpand',\n 'groupCollapse'\n ],\n setDataSource: function (dataSource) {\n var that = this;\n var scrollable = that.options.scrollable;\n that.options.dataSource = dataSource;\n that._dataSource();\n that._pageable();\n that._thead();\n if (scrollable) {\n if (scrollable.virtual) {\n that.content.find('>.k-virtual-scrollable-wrap').scrollLeft(0);\n } else {\n that.content.scrollLeft(0);\n }\n }\n if (that.options.groupable) {\n that._groupable();\n }\n if (that.virtualScrollable) {\n that.virtualScrollable.setDataSource(that.options.dataSource);\n }\n if (that.options.navigatable) {\n that._navigatable();\n }\n if (that.options.selectable) {\n that._selectable();\n }\n if (that.options.autoBind) {\n dataSource.fetch();\n }\n },\n options: {\n name: 'Grid',\n columns: [],\n toolbar: null,\n autoBind: true,\n filterable: false,\n scrollable: true,\n sortable: false,\n selectable: false,\n allowCopy: false,\n navigatable: false,\n pageable: false,\n persistSelection: false,\n editable: false,\n groupable: false,\n rowTemplate: '',\n altRowTemplate: '',\n noRecords: false,\n dataSource: {},\n height: null,\n resizable: false,\n reorderable: false,\n columnMenu: false,\n detailTemplate: null,\n columnResizeHandleWidth: 3,\n mobile: '',\n messages: {\n editable: {\n cancelDelete: CANCELDELETE,\n confirmation: DELETECONFIRM,\n confirmDelete: CONFIRMDELETE\n },\n commands: {\n create: defaultCommands.create.text,\n cancel: defaultCommands.cancel.text,\n save: defaultCommands.save.text,\n destroy: defaultCommands.destroy.text,\n edit: defaultCommands.edit.text,\n update: defaultCommands.update.text,\n canceledit: defaultCommands.canceledit.text,\n excel: defaultCommands.excel.text,\n pdf: defaultCommands.pdf.text\n },\n noRecords: NORECORDS,\n expandCollapseColumnHeader: ''\n }\n },\n destroy: function () {\n var that = this, element;\n that._angularItems('cleanup');\n that._destroyColumnAttachments();\n Widget.fn.destroy.call(that);\n this._navigatableTables = null;\n if (that._resizeHandler) {\n $(window).off('resize' + NS, that._resizeHandler);\n }\n if (that.pager && that.pager.element) {\n that.pager.destroy();\n }\n that.pager = null;\n if (that.groupable && that.groupable.element) {\n that.groupable.element.kendoGroupable('destroy');\n }\n that.groupable = null;\n if (that.options.reorderable) {\n that.wrapper.data('kendoReorderable').destroy();\n }\n if (that.selectable && that.selectable.element) {\n that.selectable.destroy();\n that.clearArea();\n if (that.options.persistSelection === true) {\n that._selectedIds = null;\n }\n if (that.copyHandler) {\n that.wrapper.off('keydown', that.copyHandler);\n that.unbind(that.copyHandler);\n }\n if (that.updateClipBoardState) {\n that.unbind(that.updateClipBoardState);\n that.updateClipBoardState = null;\n }\n if (that.clearAreaHandler) {\n that.wrapper.off('keyup', that.clearAreaHandler);\n }\n }\n that.selectable = null;\n if (that.resizable) {\n that.resizable.destroy();\n if (that._resizeUserEvents) {\n if (that._resizeHandleDocumentClickHandler) {\n $(document).off('click', that._resizeHandleDocumentClickHandler);\n }\n that._resizeUserEvents.destroy();\n that._resizeUserEvents = null;\n }\n that.resizable = null;\n }\n that._destroyVirtualScrollable();\n that._destroyEditable();\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler).unbind(PROGRESS, that._progressHandler).unbind(ERROR, that._errorHandler);\n that._refreshHandler = that._progressHandler = that._errorHandler = null;\n }\n element = that.element.add(that.wrapper).add(that.table).add(that.thead).add(that.wrapper.find('>.k-grid-toolbar'));\n if (that.content) {\n element = element.add(that.content).add(that.content.find('>.k-virtual-scrollable-wrap'));\n }\n if (that.lockedHeader) {\n that._removeLockedContainers();\n }\n if (that.pane) {\n that.pane.destroy();\n }\n if (that.minScreenResizeHandler) {\n $(window).off('resize', that.minScreenResizeHandler);\n }\n if (that._draggableInstance && that._draggableInstance.element) {\n that._draggableInstance.destroy();\n }\n that._draggableInstance = null;\n element.off(NS);\n kendo.destroy(that.wrapper);\n that.rowTemplate = that.altRowTemplate = that.lockedRowTemplate = that.lockedAltRowTemplate = that.detailTemplate = that.footerTemplate = that.groupFooterTemplate = that.lockedGroupFooterTemplate = that.noRecordsTemplate = null;\n that.scrollables = that.thead = that.tbody = that.element = that.table = that.content = that.footer = that.wrapper = that.lockedTable = that.lockedContent = that.lockedHeader = that.lockedFooter = that._groupableClickHandler = that._groupRows = that._setContentWidthHandler = null;\n },\n getOptions: function () {\n var options = this.options;\n options.dataSource = null;\n var result = extend(true, {}, this.options);\n result.columns = kendo.deepExtend([], this.columns);\n var dataSource = this.dataSource;\n var initialData = dataSource.options.data && dataSource._data;\n dataSource.options.data = null;\n result.dataSource = $.extend(true, {}, dataSource.options);\n dataSource.options.data = initialData;\n result.dataSource.data = initialData;\n result.dataSource.page = dataSource.page();\n result.dataSource.filter = dataSource.filter();\n result.dataSource.pageSize = dataSource.pageSize();\n result.dataSource.sort = dataSource.sort();\n result.dataSource.group = dataSource.group();\n result.dataSource.aggregate = dataSource.aggregate();\n if (result.dataSource.transport) {\n result.dataSource.transport.dataSource = null;\n }\n if (result.pageable && result.pageable.pageSize) {\n result.pageable.pageSize = dataSource.pageSize();\n }\n result.$angular = undefined;\n return result;\n },\n setOptions: function (options) {\n var currentOptions = this.getOptions();\n kendo.deepExtend(currentOptions, options);\n if (!options.dataSource) {\n currentOptions.dataSource = this.dataSource;\n }\n var wrapper = this.wrapper;\n var events = this._events;\n var element = this.element;\n this.destroy();\n this.options = null;\n if (this._isMobile) {\n var mobileWrapper = wrapper.closest(kendo.roleSelector('pane')).parent();\n mobileWrapper.after(wrapper);\n mobileWrapper.remove();\n wrapper.removeClass('k-grid-mobile');\n }\n if (wrapper[0] !== element[0]) {\n wrapper.before(element);\n wrapper.remove();\n }\n element.empty();\n this.init(element, currentOptions, events);\n this._setEvents(currentOptions);\n },\n items: function () {\n if (this.lockedContent) {\n return this._items(this.tbody).add(this._items(this.lockedTable.children('tbody')));\n } else {\n return this._items(this.tbody);\n }\n },\n _items: function (container) {\n return container.children().filter(function () {\n var tr = $(this);\n return !tr.hasClass('k-grouping-row') && !tr.hasClass('k-detail-row') && !tr.hasClass('k-group-footer');\n });\n },\n dataItems: function () {\n var dataItems = kendo.ui.DataBoundWidget.fn.dataItems.call(this);\n if (this.lockedContent) {\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 _destroyColumnAttachments: function () {\n var that = this;\n that.resizeHandle = null;\n if (!that.thead) {\n return;\n }\n this.angular('cleanup', function () {\n return { elements: that.thead.get() };\n });\n that.thead.add(that.lockedHeader).find('th').each(function () {\n var th = $(this), filterMenu = th.data('kendoFilterMenu'), sortable = th.data('kendoColumnSorter'), columnMenu = th.data('kendoColumnMenu');\n if (filterMenu) {\n filterMenu.destroy();\n }\n if (sortable) {\n sortable.destroy();\n }\n if (columnMenu) {\n columnMenu.destroy();\n }\n });\n },\n _attachCustomCommandsEvent: function () {\n var that = this, columns = leafColumns(that.columns || []), command, idx, length;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n command = columns[idx].command;\n if (command) {\n attachCustomCommandEvent(that, that.wrapper, command);\n }\n }\n },\n _aria: function () {\n var id = this.element.attr('id') || 'aria';\n if (id) {\n this._cellId = id + '_active_cell';\n }\n },\n _element: function () {\n var that = this, table = that.element;\n if (!table.is('table')) {\n if (that.options.scrollable) {\n table = that.element.find('> .k-grid-content > table');\n } else {\n table = that.element.children('table');\n }\n if (!table.length) {\n table = $('').appendTo(that.element);\n }\n }\n if (isIE7) {\n table.attr('cellspacing', 0);\n }\n that.table = table.attr('role', that._hasDetails() ? 'treegrid' : 'grid');\n that._wrapper();\n },\n _createResizeHandle: function (container, th) {\n var that = this;\n var indicatorWidth = that.options.columnResizeHandleWidth;\n var scrollable = that.options.scrollable;\n var resizeHandle = that.resizeHandle;\n var groups = this._groups();\n var left;\n if (resizeHandle && that.lockedContent && resizeHandle.data('th')[0] !== th[0]) {\n resizeHandle.off(NS).remove();\n resizeHandle = null;\n }\n if (!resizeHandle) {\n resizeHandle = that.resizeHandle = $('
');\n container.append(resizeHandle);\n }\n if (!isRtl) {\n left = th[0].offsetWidth;\n var cells = leafDataCells(th.closest('thead')).filter(':visible');\n for (var idx = 0; idx < cells.length; idx++) {\n if (cells[idx] == th[0]) {\n break;\n }\n left += cells[idx].offsetWidth;\n }\n if (groups > 0) {\n left += outerWidth(container.find('.k-group-cell:first')) * groups;\n }\n if (that._hasDetails()) {\n left += outerWidth(container.find('.k-hierarchy-cell:first'));\n }\n } else {\n left = th.position().left;\n if (scrollable) {\n var headerWrap = th.closest('.k-grid-header-wrap, .k-grid-header-locked'), ieCorrection = browser.msie ? headerWrap.scrollLeft() : 0, webkitCorrection = browser.webkit ? headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - headerWrap.scrollLeft() : 0, firefoxCorrection = browser.mozilla ? headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - (headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - headerWrap.scrollLeft()) : 0;\n left -= webkitCorrection - firefoxCorrection + ieCorrection;\n }\n }\n resizeHandle.css({\n top: th.position().top,\n left: left - indicatorWidth,\n height: outerHeight(th),\n width: indicatorWidth * 3\n }).data('th', th).show();\n resizeHandle.off('dblclick' + NS).on('dblclick' + NS, function () {\n that._autoFitLeafColumn(th.data('index'));\n });\n },\n _positionColumnResizeHandle: function () {\n var that = this, lockedHead = that.lockedHeader ? that.lockedHeader.find('thead:first') : $();\n that.thead.add(lockedHead).on('mousemove' + NS, 'th', function (e) {\n var button = typeof e.buttons !== 'undefined' ? e.buttons : e.which || e.button;\n var th = $(this);\n if (th.hasClass('k-group-cell') || th.hasClass('k-hierarchy-cell')) {\n return;\n }\n if (typeof button !== 'undefined' && button !== 0) {\n return;\n }\n that._createResizeHandle(th.closest('div'), th);\n });\n },\n _resizeHandleDocumentClick: function (e) {\n if ($(e.target).closest('.k-column-active').length) {\n return;\n }\n $(document).off(e);\n this._hideResizeHandle();\n },\n _hideResizeHandle: function () {\n if (this.resizeHandle) {\n this.resizeHandle.data('th').removeClass('k-column-active');\n if (this.lockedContent && !this._isMobile) {\n this.resizeHandle.off(NS).remove();\n this.resizeHandle = null;\n } else {\n this.resizeHandle.hide();\n }\n }\n },\n _positionColumnResizeHandleTouch: function () {\n var that = this, lockedHead = that.lockedHeader ? that.lockedHeader.find('thead:first') : $();\n that._resizeUserEvents = new kendo.UserEvents(lockedHead.add(that.thead), {\n filter: 'th:not(.k-group-cell):not(.k-hierarchy-cell)',\n threshold: 10,\n hold: function (e) {\n var th = $(e.target);\n e.preventDefault();\n th.addClass('k-column-active');\n that._createResizeHandle(th.closest('div'), th);\n if (!that._resizeHandleDocumentClickHandler) {\n that._resizeHandleDocumentClickHandler = proxy(that._resizeHandleDocumentClick, that);\n }\n $(document).on('click', that._resizeHandleDocumentClickHandler);\n }\n });\n },\n _resizable: function () {\n var that = this, options = that.options, container, columnStart, columnWidth, columnMinWidth, gridWidth, isMobile = this._isMobile, scrollbar = !kendo.support.mobileOS ? kendo.support.scrollbar() : 0, isLocked, col, th;\n if (options.resizable) {\n container = options.scrollable ? that.wrapper.find('.k-grid-header-wrap:first') : that.wrapper;\n if (isMobile) {\n that._positionColumnResizeHandleTouch(container);\n } else {\n that._positionColumnResizeHandle(container);\n }\n if (that.resizable) {\n that.resizable.destroy();\n }\n that.resizable = new ui.Resizable(container.add(that.lockedHeader), {\n handle: (!!options.scrollable ? '' : '>') + '.k-resize-handle',\n hint: function (handle) {\n return $('
').css({ height: outerHeight(handle.data('th')) + that.tbody.attr('clientHeight') });\n },\n start: function (e) {\n th = $(e.currentTarget).data('th');\n if (isMobile) {\n that._hideResizeHandle();\n }\n var header = th.closest('table'), index = $.inArray(th[0], leafDataCells(th.closest('thead')).filter(':visible'));\n isLocked = header.parent().hasClass('k-grid-header-locked');\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 cursor(that.wrapper, 'col-resize');\n if (options.scrollable) {\n col = header.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(footer.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 columnStart = e.x.location;\n columnWidth = outerWidth(th);\n columnMinWidth = leafColumns(that.columns)[index].minResizableWidth || 10;\n gridWidth = isLocked ? outerWidth(contentTable.children('tbody')) : outerWidth(that.tbody);\n if (browser.webkit) {\n that.wrapper.addClass('k-grid-column-resizing');\n }\n },\n resize: function (e) {\n var rtlMultiplier = isRtl ? -1 : 1, currentWidth = columnWidth + e.x.location * rtlMultiplier - columnStart * rtlMultiplier;\n if (options.scrollable) {\n var footer;\n if (isLocked && that.lockedFooter) {\n footer = that.lockedFooter.children('table');\n } else if (that.footer) {\n footer = that.footer.find('>.k-grid-footer-wrap>table');\n }\n if (!footer || !footer[0]) {\n footer = $();\n }\n var header = th.closest('table');\n var contentTable = isLocked ? that.lockedTable : that.table;\n var constrain = false;\n var totalWidth = that.wrapper.width() - scrollbar;\n var width = currentWidth;\n if (isLocked && gridWidth - columnWidth + width > totalWidth) {\n width = columnWidth + (totalWidth - gridWidth - scrollbar * 2);\n if (width < 0) {\n width = currentWidth;\n }\n constrain = true;\n }\n if (width > 10 && width >= columnMinWidth) {\n col.css('width', width);\n if (gridWidth) {\n if (constrain) {\n width = totalWidth - scrollbar * 2;\n } else {\n width = gridWidth + e.x.location * rtlMultiplier - columnStart * rtlMultiplier;\n }\n contentTable.add(header).add(footer).css('width', width);\n if (!isLocked) {\n that._footerWidth = width;\n }\n }\n }\n that._scrollVirtualWrapperOnColumnResize();\n } else if (currentWidth > 10 && currentWidth >= columnMinWidth) {\n col.css('width', currentWidth);\n }\n },\n resizeend: function () {\n var newWidth = outerWidth(th), column, header;\n cursor(that.wrapper, '');\n if (browser.webkit) {\n that.wrapper.removeClass('k-grid-column-resizing');\n }\n if (columnWidth != newWidth) {\n header = that.lockedHeader ? that.lockedHeader.find('thead:first tr:first').add(that.thead.find('tr:first')) : th.parent();\n var index = th.attr(kendo.attr('index'));\n if (!index) {\n index = header.find('th:not(.k-group-cell):not(.k-hierarchy-cell)').index(th);\n }\n column = leafColumns(that.columns)[index];\n column.width = newWidth;\n that.trigger(COLUMNRESIZE, {\n column: column,\n oldWidth: columnWidth,\n newWidth: newWidth\n });\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n }\n that._hideResizeHandle();\n th = null;\n }\n });\n }\n },\n _draggable: function () {\n var that = this;\n if (that.options.reorderable) {\n if (that._draggableInstance) {\n that._draggableInstance.destroy();\n }\n var header = that.wrapper.children('.k-grid-header');\n that._draggableInstance = that.wrapper.kendoDraggable({\n group: kendo.guid(),\n autoScroll: true,\n filter: that.content ? '.k-grid-header:first ' + HEADERCELLS : 'table:first>.k-grid-header ' + HEADERCELLS,\n dragstart: function () {\n header.children('.k-grid-header-wrap').unbind('scroll' + NS + 'scrolling').bind('scroll' + NS + 'scrolling', function (e) {\n if (that.virtualScrollable) {\n that.content.find('>.k-virtual-scrollable-wrap').scrollLeft(this.scrollLeft);\n } else {\n that.scrollables.not(e.currentTarget).scrollLeft(this.scrollLeft);\n }\n });\n },\n dragend: function () {\n header.children('.k-grid-header-wrap').unbind('scroll' + NS + 'scrolling');\n },\n drag: function () {\n that._hideResizeHandle();\n },\n hint: function (target) {\n var title = target.attr(kendo.attr('title'));\n if (title) {\n title = kendo.htmlEncode(title);\n }\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(title || target.attr(kendo.attr('field')) || target.text()).prepend('');\n }\n }).data('kendoDraggable');\n }\n },\n _reorderable: function () {\n var that = this;\n if (that.options.reorderable) {\n if (that.wrapper.data('kendoReorderable')) {\n that.wrapper.data('kendoReorderable').destroy();\n }\n that.wrapper.kendoReorderable({\n draggable: that._draggableInstance,\n dragOverContainers: function (sourceIndex, targetIndex) {\n var columns = flatColumnsInDomOrder(that.columns);\n return columns[sourceIndex].lockable !== false && targetParentContainerIndex(columns, that.columns, sourceIndex, targetIndex) > -1;\n },\n inSameContainer: function (e) {\n return $(e.source).parent()[0] === $(e.target).parent()[0] && targetParentContainerIndex(flatColumnsInDomOrder(that.columns), that.columns, e.sourceIndex, e.targetIndex) > -1;\n },\n change: function (e) {\n var columns = flatColumnsInDomOrder(that.columns);\n var column = columns[e.oldIndex];\n var newIndex = targetParentContainerIndex(columns, that.columns, e.oldIndex, e.newIndex);\n that.trigger(COLUMNREORDER, {\n newIndex: newIndex,\n oldIndex: inArray(column, columns),\n column: column\n });\n that.reorderColumn(newIndex, column, e.position === 'before');\n }\n });\n }\n },\n _reorderHeader: function (sources, target, before) {\n var that = this;\n var sourcePosition = columnPosition(sources[0], that.columns);\n var destPosition = columnPosition(target, that.columns);\n var leafs = [];\n for (var idx = 0; idx < sources.length; idx++) {\n if (sources[idx].columns) {\n leafs = leafs.concat(sources[idx].columns);\n }\n }\n var ths = elements(that.lockedHeader, that.thead, 'tr:eq(' + sourcePosition.row + ')>th.k-header:not(.k-group-cell,.k-hierarchy-cell)');\n var sourceLockedColumns = lockedColumns(sources).length;\n var targetLockedColumns = lockedColumns([target]).length;\n if (leafs.length) {\n if (sourceLockedColumns > 0 && targetLockedColumns === 0) {\n moveCellsBetweenContainers(sources, target, leafs, that.columns, that.lockedHeader.find('thead'), that.thead, this._groups());\n } else if (sourceLockedColumns === 0 && targetLockedColumns > 0) {\n moveCellsBetweenContainers(sources, target, leafs, that.columns, that.thead, that.lockedHeader.find('thead'), this._groups());\n }\n if (target.columns || sourcePosition.cell - destPosition.cell > 1 || destPosition.cell - sourcePosition.cell > 1) {\n target = findReorderTarget(that.columns, target, sources[0], before);\n if (target) {\n that._reorderHeader(leafs, target, before);\n }\n }\n } else if (sourceLockedColumns !== targetLockedColumns) {\n updateCellRowSpan(ths[sourcePosition.cell], that.columns, sourceLockedColumns);\n }\n reorder(ths, sourcePosition.cell, destPosition.cell, before, sources.length);\n },\n _reorderContent: function (sources, destination, before) {\n var that = this;\n var lockedRows = $();\n var source = sources[0];\n var visibleSources = visibleColumns(sources);\n var sourceIndex = inArray(source, leafColumns(that.columns));\n var destIndex = inArray(destination, leafColumns(that.columns));\n var colSourceIndex = inArray(source, visibleLeafColumns(that.columns));\n var colDest = inArray(destination, visibleLeafColumns(that.columns));\n var lockedCount = lockedColumns(that.columns).length;\n var isLocked = !!destination.locked;\n var footer = that.footer || that.wrapper.find('.k-grid-footer');\n var headerCol, footerCol;\n headerCol = footerCol = colDest;\n if (destination.hidden) {\n if (isLocked) {\n colDest = that.lockedTable.find('colgroup');\n headerCol = that.lockedHeader.find('colgroup');\n footerCol = $(that.lockedFooter).find('>table>colgroup');\n } else {\n colDest = that.tbody.prev();\n headerCol = that.thead.prev();\n footerCol = footer.find('.k-grid-footer-wrap').find('>table>colgroup');\n }\n }\n if (that._hasFilterRow()) {\n reorder(that.wrapper.find('.k-filter-row th:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n reorder(elements(that.lockedHeader, that.thead.prev(), 'col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, headerCol, before, visibleSources.length);\n if (that.options.scrollable) {\n reorder(elements(that.lockedTable, that.tbody.prev(), 'col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, colDest, before, visibleSources.length);\n }\n if (footer && footer.length) {\n reorder(elements(that.lockedFooter, footer.find('.k-grid-footer-wrap'), '>table>colgroup>col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, footerCol, before, visibleSources.length);\n reorder(footer.find('.k-footer-template>td:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n var rows = that.tbody.children(':not(.k-grouping-row,.k-detail-row)');\n if (that.lockedTable) {\n if (lockedCount > destIndex) {\n if (lockedCount <= sourceIndex) {\n updateColspan(that.lockedTable.find('>tbody>tr.k-grouping-row'), that.table.find('>tbody>tr.k-grouping-row'), sources.length);\n }\n } else if (lockedCount > sourceIndex) {\n updateColspan(that.table.find('>tbody>tr.k-grouping-row'), that.lockedTable.find('>tbody>tr.k-grouping-row'), sources.length);\n }\n lockedRows = that.lockedTable.find('>tbody>tr:not(.k-grouping-row,.k-detail-row)');\n }\n for (var idx = 0, length = rows.length; idx < length; idx += 1) {\n reorder(elements(lockedRows[idx], rows[idx], '>td:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n },\n _autoFitLeafColumn: function (leafIndex) {\n this.autoFitColumn(leafColumns(this.columns)[leafIndex]);\n },\n autoFitColumn: function (column) {\n var that = this, options = that.options, columns = that.columns, index, th, headerTable, isLocked, visibleLocked = that.lockedHeader ? leafDataCells(that.lockedHeader.find('>table>thead')).filter(isCellVisible).length : 0, col, minWidth, contentDiv, scrollLeft, notGroupOrHierarchyCol = 'col:not(.k-group-col):not(.k-hierarchy-col)', notGroupOrHierarchyVisibleCell = 'td:visible:not(.k-group-cell):not(.k-hierarchy-cell)';\n if (typeof column == 'number') {\n column = columns[column];\n } else if (isPlainObject(column)) {\n column = grep(flatColumns(columns), function (item) {\n return item === column;\n })[0];\n } else {\n column = grep(flatColumns(columns), function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || !isVisible(column)) {\n return;\n }\n minWidth = column.minResizableWidth;\n index = inArray(column, leafColumns(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 && !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(notGroupOrHierarchyCol).eq(index).add(contentTable.children('colgroup').find(notGroupOrHierarchyCol).eq(index)).add(footerTable.find('colgroup').find(notGroupOrHierarchyCol).eq(index));\n if (!isLocked) {\n contentDiv = contentTable.parent();\n scrollLeft = contentDiv.scrollLeft();\n }\n } else {\n col = contentTable.children('colgroup').find(notGroupOrHierarchyCol).eq(index);\n }\n var tables = headerTable.add(contentTable).add(footerTable);\n var oldColumnWidth = outerWidth(th);\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(outerWidth(th), outerWidth(contentTable.find('tr:not(.k-grouping-row)').eq(0).children(notGroupOrHierarchyVisibleCell).eq(index)), outerWidth(footerTable.find('tr').eq(0).children(notGroupOrHierarchyVisibleCell).eq(index)))) + 1;\n if (minWidth && minWidth > newColumnWidth) {\n newColumnWidth = minWidth;\n }\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 if (cols.eq(idx).hasClass('k-group-col')) {\n totalWidth += parseInt(cols.eq(idx).width(), 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 if (scrollLeft) {\n contentDiv.scrollLeft(scrollLeft);\n }\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 reorderColumn: function (destIndex, column, before) {\n var that = this, parent = columnParent(column, that.columns), columns = parent ? parent.columns : that.columns, sourceIndex = inArray(column, columns), destColumn = columns[destIndex], lockChanged, isLocked = !!destColumn.locked, lockedCount = lockedColumns(that.columns).length;\n if (sourceIndex === destIndex) {\n return;\n }\n if (!column.locked && isLocked && nonLockedColumns(that.columns).length == 1) {\n return;\n }\n if (column.locked && !isLocked && lockedCount == 1) {\n return;\n }\n that._hideResizeHandle();\n if (before === undefined) {\n before = destIndex < sourceIndex;\n }\n var sourceColumns = [column];\n that._reorderHeader(sourceColumns, destColumn, before);\n if (that.lockedHeader) {\n removeEmptyRows(that.thead);\n removeEmptyRows(that.lockedHeader);\n }\n if (destColumn.columns) {\n destColumn = leafColumns(destColumn.columns);\n destColumn = destColumn[before ? 0 : destColumn.length - 1];\n }\n if (column.columns) {\n sourceColumns = leafColumns(column.columns);\n }\n that._reorderContent(sourceColumns, destColumn, before);\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 that._templates();\n that._updateColumnCellIndex();\n that._updateTablesWidth();\n that._applyLockedContainersWidth();\n that._syncLockedHeaderHeight();\n that._syncLockedContentHeight();\n that._updateFirstColumnClass();\n if (!lockChanged) {\n return;\n }\n if (isLocked) {\n that.trigger(COLUMNLOCK, { column: column });\n } else {\n that.trigger(COLUMNUNLOCK, { column: column });\n }\n },\n _updateColumnCellIndex: function () {\n var header;\n var offset = 0;\n if (this.lockedHeader) {\n header = this.lockedHeader.find('thead');\n offset = updateCellIndex(header, lockedColumns(this.columns));\n }\n updateCellIndex(this.thead, nonLockedColumns(this.columns), offset);\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.locked || column.hidden) {\n return;\n }\n var index = lockedColumns(columns).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.locked || column.hidden) {\n return;\n }\n var index = lockedColumns(columns).length;\n this.reorderColumn(index, column, true);\n },\n cellIndex: function (td) {\n var lockedColumnOffset = 0;\n if (this.lockedTable && !$.contains(this.lockedTable[0], td[0])) {\n lockedColumnOffset = leafColumns(lockedColumns(this.columns)).length;\n }\n return $(td).parent().children('td:not(.k-group-cell,.k-hierarchy-cell)').index(td) + lockedColumnOffset;\n },\n _modelForContainer: function (container) {\n container = $(container);\n if (!container.is('tr') && this._editMode() !== 'popup') {\n container = container.closest('tr');\n }\n var id = container.attr(kendo.attr('uid'));\n return this.dataSource.getByUid(id);\n },\n _editable: function () {\n var that = this, selectable = that.selectable && that.selectable.options.multiple, editable = that.options.editable, handler = function () {\n var target = activeElement(), cell = that._editContainer;\n if (cell && !$.contains(cell[0], target) && cell[0] !== target && !$(target).closest('.k-animation-container').length) {\n if (that.editable.end()) {\n that.closeCell();\n } else {\n that._scrollVirtualWrapper();\n }\n }\n };\n if (editable) {\n this.wrapper.addClass('k-editable');\n var mode = that._editMode();\n if (mode === 'incell') {\n that.table.add(that.lockedTable).on(kendo.support.touch ? 'touchstart' + NS : 'mousedown' + NS, NAVROW + '>' + NAVCELL, function (e) {\n var target = $(e.target);\n if (that._editMode() === 'incell' && target.hasClass('k-checkbox-label') && target.prev().attr(kendo.attr('bind'))) {\n e.preventDefault();\n }\n });\n if (editable.update !== false) {\n that.wrapper.on(CLICK + NS, 'tr:not(.k-grouping-row) > td', function (e) {\n var td = $(this), isLockedCell = that.lockedTable && td.closest('table')[0] === that.lockedTable[0];\n if (td.hasClass('k-hierarchy-cell') || td.hasClass('k-detail-cell') || td.hasClass('k-group-cell') || td.hasClass('k-edit-cell') || td.has('a.k-grid-delete').length || td.has('button.k-grid-delete').length || td.closest('tbody')[0] !== that.tbody[0] && !isLockedCell || $(e.target).is(':input')) {\n return;\n }\n if (that.editable) {\n if (that.editable.end()) {\n if (selectable) {\n $(activeElement()).blur();\n }\n that.closeCell();\n that.editCell(td);\n } else {\n that._scrollVirtualWrapper();\n }\n } else {\n that.editCell(td);\n }\n }).on('focusin' + NS, function () {\n if (!$.contains(this, activeElement())) {\n clearTimeout(that.timer);\n that.timer = null;\n }\n }).on('focusout' + NS, function () {\n that.timer = setTimeout(handler, 1);\n });\n }\n } else {\n if (editable.update !== false) {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible a.k-grid-edit', function (e) {\n e.preventDefault();\n that.editRow($(this).closest('tr'));\n });\n if (that._isVirtualInlineEditable()) {\n that.wrapper.on('focusout' + NS, 'tr:not(.k-grouping-row) > td', function () {\n if (that.editable && !that.editable.end()) {\n that._scrollVirtualWrapper();\n }\n });\n }\n }\n }\n if (editable.destroy !== false) {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible .k-grid-delete', function (e) {\n e.preventDefault();\n e.stopPropagation();\n that.removeRow($(this).closest('tr'));\n });\n } else {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible button.k-grid-delete', function (e) {\n e.stopPropagation();\n if (!that._confirmation()) {\n e.preventDefault();\n }\n });\n }\n }\n },\n editCell: function (cell) {\n cell = $(cell);\n var that = this, column = leafColumns(that.columns)[that.cellIndex(cell)], model = that._modelForContainer(cell);\n that.closeCell();\n if (model && isColumnEditable(column, model) && !column.command) {\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n that._attachModelChange(model);\n that._editContainer = cell;\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.editable = cell.addClass('k-edit-cell').kendoEditable({\n fields: {\n field: column.field,\n format: column.format,\n editor: column.editor,\n values: column.values\n },\n model: model,\n target: that,\n change: function (e) {\n if (that.trigger(SAVE, {\n values: e.values,\n container: cell,\n model: model\n })) {\n e.preventDefault();\n }\n },\n skipFocus: that._isVirtualIncellEditable() && that._editableState ? true : false\n }).data('kendoEditable');\n var tr = cell.parent().addClass('k-grid-edit-row');\n if (that.lockedContent) {\n adjustRowHeight(tr[0], that._relatedRow(tr).addClass('k-grid-edit-row')[0]);\n }\n that.trigger(EDIT, {\n container: cell,\n model: model\n });\n }\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 _syncLockedFooterHeight: function () {\n if (this.lockedFooter && this.footer && this.footer.length) {\n this._adjustRowsHeight(this.lockedFooter.children('table'), this.footer.find('.k-grid-footer-wrap > table'));\n }\n },\n _destroyEditable: function () {\n var that = this;\n var destroy = function () {\n if (that.editable) {\n var container = that.editView ? that.editView.element : that._editContainer;\n if (container) {\n container.off(CLICK + NS, 'a.k-grid-cancel', that._editCancelClickHandler);\n container.off(CLICK + NS, 'a.k-grid-update', that._editUpdateClickHandler);\n }\n that._detachModelChange();\n that.editable.destroy();\n that.editable = null;\n that._editContainer = null;\n that._destroyEditView();\n }\n };\n if (that.editable) {\n if (that._editMode() === 'popup' && !that._isMobile) {\n that._editContainer.data('kendoWindow').bind('deactivate', destroy).close();\n } else {\n destroy();\n }\n }\n if (that._actionSheet) {\n that._actionSheet.destroy();\n that._actionSheet = null;\n }\n },\n _destroyEditView: function () {\n if (this.editView) {\n this.editView.purge();\n this.editView = null;\n this.pane.navigate('');\n }\n },\n _attachModelChange: function (model) {\n var that = this;\n that._modelChangeHandler = function (e) {\n that._modelChange({\n field: e.field,\n model: this\n });\n };\n model.bind('change', that._modelChangeHandler);\n },\n _detachModelChange: function () {\n var that = this, container = that._editContainer, model = that._modelForContainer(container);\n if (model) {\n model.unbind(CHANGE, that._modelChangeHandler);\n }\n },\n closeCell: function (isCancel) {\n var that = this, cell = that._editContainer, column, tr, model;\n if (!cell) {\n return;\n }\n model = that._modelForContainer(cell);\n if (isCancel && that.trigger('cancel', {\n container: cell,\n model: model\n })) {\n return;\n }\n that.trigger(CELLCLOSE, {\n type: isCancel ? 'cancel' : 'save',\n model: model,\n container: cell\n });\n cell.removeClass('k-edit-cell');\n column = leafColumns(that.columns)[that.cellIndex(cell)];\n tr = cell.parent().removeClass('k-grid-edit-row');\n if (that.lockedContent) {\n that._relatedRow(tr).removeClass('k-grid-edit-row');\n }\n that._destroyEditable();\n that._displayCell(cell, column, model);\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.trigger('itemChange', {\n item: tr,\n data: model,\n ns: ui\n });\n if (that.lockedContent) {\n adjustRowHeight(tr.css('height', '')[0], that._relatedRow(tr).css('height', '')[0]);\n }\n },\n _displayCell: function (cell, column, dataItem) {\n var that = this, state = {\n storage: {},\n count: 0\n }, settings = extend({}, kendo.Template, that.options.templateSettings), tmpl = kendo.template(that._cellTmpl(column, state), settings);\n if (state.count > 0) {\n tmpl = proxy(tmpl, state.storage);\n }\n cell.empty().html(tmpl(dataItem));\n that.angular('compile', function () {\n return {\n elements: cell,\n data: [{ dataItem: dataItem }]\n };\n });\n },\n removeRow: function (row) {\n if (!this._confirmation(row)) {\n return;\n }\n this._removeRow(row);\n },\n _removeRow: function (row) {\n var that = this, model, modelId, key, mode = that._editMode();\n if (mode !== 'incell') {\n that.cancelRow();\n }\n row = $(row);\n if (that.lockedContent) {\n row = row.add(that._relatedRow(row));\n }\n row = row.hide();\n model = that._modelForContainer(row);\n if (model && !that.trigger(REMOVE, {\n row: row,\n model: model\n })) {\n if (that.options.persistSelection) {\n modelId = that.dataSource.options.schema.model.id;\n key = model[modelId];\n delete that._selectedIds[key];\n }\n that.dataSource.remove(model);\n if (mode === 'inline' || mode === 'popup') {\n that.dataSource.sync();\n }\n } else if (mode === 'incell') {\n that._destroyEditable();\n }\n },\n _editMode: function () {\n var mode = 'incell', 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;\n },\n editRow: function (row) {\n var model;\n var that = this;\n if (row instanceof ObservableObject) {\n model = row;\n } else {\n row = $(row);\n model = that._modelForContainer(row);\n }\n var mode = that._editMode();\n var container;\n that.cancelRow();\n if (model) {\n row = that.tbody.children('[' + kendo.attr('uid') + '=' + model.uid + ']');\n that._attachModelChange(model);\n if (mode === 'popup') {\n that._createPopupEditor(model);\n } else if (mode === 'inline') {\n that._createInlineEditor(row, model);\n } else if (mode === 'incell') {\n $(row).children(DATA_CELL).each(function () {\n var cell = $(this);\n var column = leafColumns(that.columns)[that.cellIndex(cell)];\n model = that._modelForContainer(cell);\n if (model && (!model.editable || model.editable(column.field)) && column.field && !column.selectable) {\n that.editCell(cell);\n return false;\n }\n });\n }\n container = that.editView ? that.editView.element : that._editContainer;\n if (container) {\n if (!this._editCancelClickHandler) {\n this._editCancelClickHandler = proxy(this._editCancelClick, this);\n }\n container.on(CLICK + NS, 'a.k-grid-cancel', this._editCancelClickHandler);\n if (!this._editUpdateClickHandler) {\n this._editUpdateClickHandler = proxy(this._editUpdateClick, this);\n }\n container.on(CLICK + NS, 'a.k-grid-update', this._editUpdateClickHandler);\n }\n }\n },\n _editUpdateClick: function (e) {\n e.preventDefault();\n e.stopPropagation();\n this.saveRow();\n },\n _editCancelClick: function (e) {\n var that = this;\n var navigatable = that.options.navigatable;\n var model = that.editable.options.model;\n var container = that.editView ? that.editView.element : that._editContainer;\n e.preventDefault();\n e.stopPropagation();\n if (that.trigger('cancel', {\n container: container,\n model: model\n })) {\n return;\n }\n var currentIndex = that.items().index($(that.current()).parent());\n that.cancelRow();\n if (navigatable) {\n that._setCurrent(that.items().eq(currentIndex).children().filter(NAVCELL).first());\n focusTable(that.table, true);\n }\n },\n _createPopupEditor: function (model) {\n var that = this;\n var html = '
';\n var column;\n var command;\n var fields = [];\n var idx;\n var length;\n var tmpl;\n var updateText;\n var cancelText;\n var updateIconClass;\n var cancelIconClass;\n var tempCommand;\n var columns = leafColumns(that.columns);\n var attr;\n var editable = that.options.editable;\n var template = editable.template;\n var options = isPlainObject(editable) ? editable.window : {};\n var settings = extend({}, kendo.Template, that.options.templateSettings);\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n options = options || {};\n if (template) {\n if (typeof template === STRING) {\n template = window.unescape(template);\n }\n html += kendo.template(template, settings)(model);\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (column.command) {\n tempCommand = getCommand(column.command, 'edit');\n if (tempCommand) {\n command = tempCommand;\n }\n }\n }\n } else {\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (column.selectable) {\n continue;\n }\n if (!column.command) {\n html += '
';\n if (isColumnEditable(column, model)) {\n fields.push({\n field: column.field,\n format: column.format,\n editor: column.editor,\n values: column.values\n });\n html += '
';\n } else {\n var state = {\n storage: {},\n count: 0\n };\n tmpl = kendo.template(that._cellTmpl(column, state), settings);\n if (state.count > 0) {\n tmpl = proxy(tmpl, state.storage);\n }\n html += '
' + tmpl(model) + '
';\n }\n } else if (column.command) {\n tempCommand = getCommand(column.command, 'edit');\n if (tempCommand) {\n command = tempCommand;\n }\n }\n }\n }\n if (command) {\n if (isPlainObject(command)) {\n if (isPlainObject(command.text)) {\n updateText = command.text.update;\n cancelText = command.text.cancel;\n }\n if (isPlainObject(command.iconClass)) {\n updateIconClass = command.iconClass.update;\n cancelIconClass = command.iconClass.cancel;\n }\n if (command.attr) {\n attr = command.attr;\n }\n }\n }\n var container;\n if (!that._isMobile) {\n html += '
';\n html += that._createButton({\n name: 'update',\n text: updateText,\n attr: attr,\n iconClass: updateIconClass\n }) + that._createButton({\n name: 'canceledit',\n text: cancelText,\n attr: attr,\n iconClass: cancelIconClass\n });\n html += '
';\n container = that._editContainer = $(html).appendTo(that.wrapper).eq(0).kendoWindow(extend({\n modal: true,\n resizable: false,\n draggable: true,\n title: 'Edit',\n visible: false,\n close: function (e) {\n if (e.userTriggered) {\n e.sender.element.focus();\n if (that.trigger('cancel', {\n container: container,\n model: model\n })) {\n e.preventDefault();\n return;\n }\n var currentIndex = that.items().index($(that.current()).parent());\n that.cancelRow();\n if (that.options.navigatable) {\n that._setCurrent(that.items().eq(currentIndex).children().filter(NAVCELL).first());\n focusTable(that.table, true);\n }\n }\n }\n }, options));\n } else {\n html += '
';\n that.editView = that.pane.append('
' + '
' + that._createButton({\n name: 'update',\n text: updateText,\n attr: attr\n }) + (options.title || 'Edit') + that._createButton({\n name: 'canceledit',\n text: cancelText,\n attr: attr\n }) + '
' + html + '
');\n container = that._editContainer = that.editView.element.find('.k-popup-edit-form');\n }\n that.editable = that._editContainer.kendoEditable({\n fields: fields,\n model: model,\n clearContainer: false,\n target: that\n }).data('kendoEditable');\n if (that._isMobile) {\n container.find('input[type=checkbox],input[type=radio]').parent('.k-edit-field').addClass('k-check').prev('.k-edit-label').addClass('k-check').click(function () {\n $(this).next().children('input').click();\n });\n }\n that._openPopUpEditor();\n that.trigger(EDIT, {\n container: container,\n model: model\n });\n },\n _openPopUpEditor: function () {\n if (!this._isMobile) {\n this._editContainer.data('kendoWindow').center().open();\n } else {\n this.pane.navigate(this.editView, this._editAnimation);\n }\n },\n _createInlineEditor: function (row, model) {\n var that = this;\n var column;\n var cell;\n var command;\n var fields = [];\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n if (that.lockedContent) {\n row = row.add(that._relatedRow(row));\n }\n row.children(':not(.k-group-cell,.k-hierarchy-cell)').each(function () {\n cell = $(this);\n column = leafColumns(that.columns)[that.cellIndex(cell)];\n if (!column.command && isColumnEditable(column, model)) {\n fields.push({\n field: column.field,\n format: column.format,\n editor: column.editor,\n values: column.values\n });\n cell.attr(kendo.attr('container-for'), column.field);\n cell.empty();\n } else if (column.command) {\n command = getCommand(column.command, 'edit');\n if (command) {\n cell.empty();\n var updateText, cancelText, updateIconClass, cancelIconClass, attr;\n if (isPlainObject(command)) {\n if (isPlainObject(command.text)) {\n updateText = command.text.update;\n cancelText = command.text.cancel;\n }\n if (isPlainObject(command.iconClass)) {\n updateIconClass = command.iconClass.update;\n cancelIconClass = command.iconClass.cancel;\n }\n if (command.attr) {\n attr = command.attr;\n }\n }\n $(that._createButton({\n name: 'update',\n text: updateText,\n attr: attr,\n iconClass: updateIconClass\n }) + that._createButton({\n name: 'canceledit',\n text: cancelText,\n attr: attr,\n iconClass: cancelIconClass\n })).appendTo(cell);\n }\n }\n });\n that._editContainer = row;\n that._editContainer.addClass('k-grid-edit-row');\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.editable = new kendo.ui.Editable(that._editContainer, {\n target: that,\n fields: fields,\n model: model,\n skipFocus: that._isVirtualInlineEditable() && that._editableState && that._editableState.field ? true : false,\n clearContainer: false\n });\n if (row.length > 1) {\n adjustRowHeight(row[0], row[1]);\n that._applyLockedContainersWidth();\n }\n that.trigger(EDIT, {\n container: row,\n model: model\n });\n },\n cancelRow: function (notify) {\n var that = this, container = that._editContainer, model;\n var virtualScrollable = that.virtualScrollable;\n var isScrolledToBottom = virtualScrollable && virtualScrollable._isScrolledToBottom();\n if (container) {\n model = that._modelForContainer(container);\n if (!model || notify && that.trigger('cancel', {\n container: container,\n model: model\n })) {\n return;\n }\n that._destroyEditable();\n that.dataSource.cancelChanges(model);\n if (that._isVirtualEditable() && isScrolledToBottom) {\n that._restoreVirtualView();\n }\n that._clearEditableState();\n if (that._editMode() !== 'popup') {\n that._displayRow(container);\n } else {\n that._displayRow(that.tbody.find('[' + kendo.attr('uid') + '=' + model.uid + ']'));\n }\n }\n },\n saveRow: function () {\n var that = this;\n var container = this._editContainer;\n var model = this._modelForContainer(container);\n var deferred = $.Deferred();\n var valid;\n if (!container || !this.editable) {\n return deferred.resolve().promise();\n }\n valid = that.editable && that.editable.end();\n if (!valid || this.trigger(SAVE, {\n container: container,\n model: model\n })) {\n if (!valid) {\n that._scrollVirtualWrapper();\n }\n return deferred.reject().promise();\n }\n that._clearEditableState();\n return this.dataSource.sync();\n },\n _displayRow: function (row) {\n var that = this, model = that._modelForContainer(row), related, newRow, nextRow, isSelected = row.hasClass('k-state-selected'), isAlt = row.hasClass('k-alt');\n if (model) {\n if (that.lockedContent) {\n related = $((isAlt ? that.lockedAltRowTemplate : that.lockedRowTemplate)(model));\n that._relatedRow(row.last()).replaceWith(related);\n }\n that.angular('cleanup', function () {\n return { elements: row.get() };\n });\n newRow = $((isAlt ? that.altRowTemplate : that.rowTemplate)(model));\n if (!row.is(':visible')) {\n newRow.hide();\n }\n row.replaceWith(newRow);\n that.trigger('itemChange', {\n item: newRow,\n data: model,\n ns: ui\n });\n if (related && related.length) {\n that.trigger('itemChange', {\n item: related,\n data: model,\n ns: ui\n });\n }\n var angularElements = newRow;\n var angularData = [{ dataItem: model }];\n if (related && related.length) {\n angularElements = newRow.add(related);\n angularData.push({ dataItem: model });\n }\n that.angular('compile', function () {\n return {\n elements: angularElements.get(),\n data: angularData\n };\n });\n if (isSelected && (that.options.selectable || that._checkBoxSelection)) {\n that.select(newRow.add(related));\n }\n if (related) {\n adjustRowHeight(newRow[0], related[0]);\n }\n nextRow = newRow.next();\n if (nextRow.hasClass('k-detail-row') && nextRow.is(':visible')) {\n newRow.find('.k-hierarchy-cell .k-icon').removeClass('k-i-expand').addClass('k-i-collapse');\n }\n }\n },\n _showMessage: function (messages, row) {\n var that = this;\n if (!that._isMobile) {\n return window.confirm(messages.title);\n }\n var template = kendo.template('');\n var html = $(template(messages)).appendTo(that.view.element);\n var actionSheet = that._actionSheet = new kendo.mobile.ui.ActionSheet(html, {\n cancel: messages.cancelDelete,\n cancelTemplate: '
  • #:cancel#
  • ',\n close: function () {\n this.destroy();\n },\n command: function (e) {\n var item = $(e.currentTarget).parent();\n if (!item.hasClass('km-actionsheet-cancel')) {\n that._removeRow(row);\n }\n },\n popup: that._actionSheetPopupOptions\n });\n actionSheet.open(row);\n return false;\n },\n _confirmation: function (row) {\n var that = this, editable = that.options.editable, confirmation = editable === true || typeof editable === STRING ? that.options.messages.editable.confirmation : editable.confirmation;\n if (isPlainObject(editable) && typeof editable.mode === STRING && typeof confirmation !== FUNCTION && typeof confirmation !== STRING && confirmation !== false) {\n confirmation = that.options.messages.editable.confirmation;\n }\n if (confirmation !== false && confirmation != null) {\n if (typeof confirmation === FUNCTION) {\n confirmation = confirmation(that._modelForContainer(row));\n }\n return that._showMessage({\n confirmDelete: editable.confirmDelete || that.options.messages.editable.confirmDelete,\n cancelDelete: editable.cancelDelete || that.options.messages.editable.cancelDelete,\n title: confirmation === true ? that.options.messages.editable.confirmation : confirmation\n }, row);\n }\n return true;\n },\n cancelChanges: function () {\n var that = this;\n that.dataSource.cancelChanges();\n if (that._isVirtualEditable()) {\n that._virtualPageToTop(function () {\n that.virtualScrollable.scrollToTop();\n });\n }\n },\n saveChanges: function () {\n var that = this;\n var valid = that.editable && that.editable.end();\n if ((valid || !that.editable) && !that.trigger(SAVECHANGES)) {\n that.dataSource.sync();\n } else if (!valid) {\n that._scrollVirtualWrapper();\n }\n },\n addRow: function () {\n var that = this, index, dataSource = that.dataSource, mode = that._editMode(), createAt = that.options.editable.createAt || '', pageSize = dataSource.pageSize(), view = dataSource.view() || [];\n var createAtBottom = createAt.toLowerCase() === BOTTOM;\n var model;\n var virtualEditable = that._isVirtualEditable();\n if (that.editable && that.editable.end() || !that.editable) {\n if (mode != 'incell') {\n that.cancelRow();\n }\n index = dataSource.indexOf(view[0]);\n if (createAtBottom) {\n index += view.length;\n if (pageSize && !dataSource.options.serverPaging && pageSize <= view.length) {\n index -= 1;\n }\n }\n if (index < 0) {\n if (dataSource.page() > dataSource.totalPages()) {\n index = (dataSource.page() - 1) * pageSize;\n } else {\n index = 0;\n }\n }\n if (that.options.navigatable && mode == 'incell') {\n that._removeCurrent();\n }\n if (virtualEditable) {\n that._virtualAddRow();\n } else {\n model = dataSource.insert(index, {});\n that._editModel(model);\n }\n } else {\n that._scrollVirtualWrapper();\n }\n },\n _editModel: function (model) {\n var that = this;\n var createAt = that.options.editable.createAt || '';\n var mode = that._editMode();\n if (model) {\n var id = model.uid, table = that.lockedContent ? that.lockedTable : that.table, row = table.find('tr[' + kendo.attr('uid') + '=' + id + ']'), cell = row.children('td:not(.k-group-cell,.k-hierarchy-cell)').eq(that._firstEditableColumnIndex(row));\n if (mode === 'inline' && row.length) {\n that.editRow(row);\n } else if (mode === 'popup') {\n that.editRow(model);\n } else if (cell.length) {\n that.editCell(cell);\n }\n if (createAt.toLowerCase() == 'bottom' && that.lockedContent) {\n that.lockedContent[0].scrollTop = that.content[0].scrollTop = that.table[0].offsetHeight;\n }\n }\n },\n _virtualAddRow: function () {\n var that = this;\n var createAtBottom = (that.options.editable.createAt || '').toLowerCase() === BOTTOM;\n that._clearEditableState();\n if (createAtBottom) {\n that._virtualAddRowAtBottom();\n } else {\n that._virtualAddRowAtTop();\n }\n },\n _virtualAddRowAtTop: function () {\n var that = this;\n var dataSource = that.dataSource;\n var virtualScrollable = that.virtualScrollable;\n var model;\n if (dataSource.page() === 1) {\n model = dataSource.insert(0, {});\n that._editModel(model);\n virtualScrollable.scrollToTop();\n } else {\n that._virtualPageToTop(function () {\n model = dataSource.insert(0, {});\n that._editModel(model);\n virtualScrollable.scrollToTop();\n });\n }\n },\n _virtualAddRowAtBottom: function () {\n var that = this;\n var dataSource = that.dataSource;\n var virtualScrollable = that.virtualScrollable;\n var index = dataSource.total();\n var model;\n if (dataSource.at(index - 1) instanceof ObservableObject) {\n model = dataSource.insert(index, {});\n that._virtualPageToBottom(function () {\n that._editModel(model);\n virtualScrollable.scrollToBottom();\n });\n } else {\n that._virtualPageToBottom(function () {\n model = dataSource.insert(index, {});\n that._editModel(model);\n virtualScrollable.scrollToBottom();\n });\n }\n },\n _virtualPageToTop: function (callback) {\n var that = this;\n that._virtualPage(0, that.dataSource.take(), function () {\n callback();\n });\n },\n _virtualPageToBottom: function (callback) {\n var that = this;\n var dataSource = that.dataSource;\n var take = dataSource.take();\n var total = dataSource.total();\n var skip = total > take ? total - take : 0;\n that._virtualPage(skip, take, function () {\n callback();\n });\n },\n _virtualPage: function (skip, take, callback) {\n var that = this;\n if (that._isVirtualEditable()) {\n that.virtualScrollable._preventScroll = true;\n that.virtualScrollable._page(skip, take, callback);\n }\n },\n _restoreVirtualView: function () {\n var that = this;\n var dataSource = that.dataSource;\n var virtualScrollable = that.virtualScrollable;\n var scrollbar = virtualScrollable.verticalScrollbar;\n var wrapper = virtualScrollable.wrapper;\n var take = dataSource.take();\n var total = dataSource.total();\n var rangeStart = dataSource.currentRangeStart();\n var skip = total >= take ? math.min(rangeStart, total - take) : rangeStart;\n var initialItemHeight = virtualScrollable.itemHeight;\n var scrolledItemsCount = scrollbar.scrollTop() / initialItemHeight;\n that._virtualPage(skip, take, function () {\n var itemHeight = virtualScrollable.itemHeight;\n var newScrollbarTop = scrolledItemsCount * itemHeight;\n if (virtualScrollable._isScrolledToBottom()) {\n virtualScrollable.scrollToBottom();\n } else {\n if (scrollbar.scrollTop() !== newScrollbarTop) {\n virtualScrollable._preventScroll = true;\n } else {\n virtualScrollable._preventScroll = false;\n }\n scrollbar.scrollTop(newScrollbarTop);\n wrapper.scrollTop(scrollbar.scrollTop() - skip * itemHeight);\n }\n });\n },\n _firstEditableColumnIndex: function (container) {\n var that = this, column, columns = leafColumns(that.columns), idx, length, model = that._modelForContainer(container);\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (model && (!model.editable || model.editable(column.field)) && !column.command && column.field && column.hidden !== true) {\n return idx;\n }\n }\n return -1;\n },\n _toolbar: function () {\n var that = this, wrapper = that.wrapper, toolbar = that.options.toolbar, editable = that.options.editable, container;\n if (toolbar) {\n container = that.wrapper.find('.k-grid-toolbar');\n if (!container.length) {\n if (!isFunction(toolbar)) {\n toolbar = typeof toolbar === STRING ? toolbar : that._toolbarTmpl(toolbar).replace(templateHashRegExp, '\\\\#');\n toolbar = proxy(kendo.template(toolbar), that);\n }\n container = $('
    ').html(toolbar({})).prependTo(wrapper);\n that.angular('compile', function () {\n return { elements: container.get() };\n });\n }\n if (editable && editable.create !== false) {\n container.on(CLICK + NS, '.k-grid-add', function (e) {\n e.preventDefault();\n that.addRow();\n }).on(CLICK + NS, '.k-grid-cancel-changes', function (e) {\n e.preventDefault();\n that.cancelChanges();\n }).on(CLICK + NS, '.k-grid-save-changes', function (e) {\n e.preventDefault();\n that.saveChanges();\n });\n }\n container.on(CLICK + NS, '.k-grid-excel', function (e) {\n e.preventDefault();\n that.saveAsExcel();\n });\n container.on(CLICK + NS, '.k-grid-pdf', function (e) {\n e.preventDefault();\n that.saveAsPDF();\n });\n }\n },\n _toolbarTmpl: function (commands) {\n var that = this, idx, length, html = '';\n if (isArray(commands)) {\n for (idx = 0, length = commands.length; idx < length; idx++) {\n html += that._createButton(commands[idx]);\n }\n }\n return html;\n },\n _createButton: function (command) {\n var template = command.template || COMMANDBUTTONTMPL, commandName = typeof command === STRING ? command : command.name || command.text, className = defaultCommands[commandName] ? defaultCommands[commandName].className : 'k-grid-' + (commandName || '').replace(/\\s/g, ''), options = {\n className: className,\n text: commandName,\n attr: '',\n iconClass: ''\n }, messages = this.options.messages.commands, attributeClassMatch;\n if (!commandName && !(isPlainObject(command) && command.template)) {\n throw new Error('Custom commands should have name specified');\n }\n if (isPlainObject(command)) {\n command = extend(true, {}, command);\n if (command.className && inArray(options.className, command.className.split(' ')) < 0) {\n command.className += ' ' + options.className;\n } else if (command.className === undefined) {\n command.className = options.className;\n }\n if (commandName === 'edit') {\n command = extend(true, {}, command);\n command.text = isPlainObject(command.text) ? command.text.edit : command.text;\n command.iconClass = isPlainObject(command.iconClass) ? command.iconClass.edit : command.iconClass;\n }\n if (command.attr) {\n if (isPlainObject(command.attr)) {\n command.attr = stringifyAttributes(command.attr);\n }\n if (typeof command.attr === STRING) {\n attributeClassMatch = command.attr.match(/class=\"(.+?)\"/);\n if (attributeClassMatch && inArray(attributeClassMatch[1], command.className.split(' ')) < 0) {\n command.className += ' ' + attributeClassMatch[1];\n }\n }\n }\n options = extend(true, options, defaultCommands[commandName], { text: messages[commandName] }, command);\n } else {\n options = extend(true, options, defaultCommands[commandName], { text: messages[commandName] });\n }\n return kendo.template(template)(options);\n },\n _hasFooters: function () {\n return !!this.footerTemplate || !!this.groupFooterTemplate || this.footer && this.footer.length > 0 || this.wrapper.find('.k-grid-footer').length > 0;\n },\n _groupable: function () {\n var that = this;\n if (that._groupableClickHandler) {\n that.table.add(that.lockedTable).off(CLICK + NS, that._groupableClickHandler);\n } else {\n that._groupableClickHandler = function (e) {\n var element = $(this), groupRow = element.closest('tr');\n var group = that._groupRows ? that._groupRows[that.wrapper.find('.k-grouping-row').index(groupRow)] : {};\n if (element.hasClass('k-i-collapse')) {\n if (!that.trigger('groupCollapse', {\n group: group,\n element: groupRow\n })) {\n that.collapseGroup(groupRow);\n }\n } else {\n if (!that.trigger('groupExpand', {\n group: group,\n element: groupRow\n })) {\n that.expandGroup(groupRow);\n }\n }\n e.preventDefault();\n e.stopPropagation();\n };\n }\n if (that._isLocked()) {\n that.lockedTable.on(CLICK + NS, '.k-grouping-row .k-i-expand, .k-grouping-row .k-i-collapse', that._groupableClickHandler);\n } else {\n that.table.on(CLICK + NS, '.k-grouping-row .k-i-expand, .k-grouping-row .k-i-collapse', that._groupableClickHandler);\n }\n that._attachGroupable();\n },\n _attachGroupable: function () {\n var that = this, wrapper = that.wrapper, groupable = that.options.groupable, draggables = HEADERCELLS + '[' + kendo.attr('field') + ']', filter = that.content ? '.k-grid-header:first ' + draggables : 'table:first>.k-grid-header ' + draggables;\n if (groupable && groupable.enabled !== false) {\n if (!wrapper.has('div.k-grouping-header')[0]) {\n $('
     
    ').addClass('k-grouping-header').prependTo(wrapper);\n }\n if (that.groupable) {\n that.groupable.destroy();\n }\n that.groupable = new ui.Groupable(wrapper, extend({}, groupable, {\n draggable: that._draggableInstance,\n groupContainer: '>div.k-grouping-header',\n dataSource: that.dataSource,\n draggableElements: filter,\n filter: filter,\n allowDrag: that.options.reorderable,\n change: function (e) {\n if (that.trigger('group', { groups: e.groups })) {\n e.preventDefault();\n } else {\n that._clearEditableState();\n if (that.dataSource.options.endless) {\n that.dataSource.options.endless = null;\n that._endlessPageSize = that.dataSource.options.pageSize;\n that.dataSource.pageSize(that.dataSource.options.pageSize);\n }\n }\n }\n }));\n }\n },\n _continuousItems: function (filter, cell) {\n if (!this.lockedContent) {\n return;\n }\n var that = this;\n var elements = that.table.add(that.lockedTable);\n var lockedItems = $(filter, elements[0]);\n var nonLockedItems = $(filter, elements[1]);\n var columns = cell ? lockedColumns(that.columns).length : 1;\n var nonLockedColumns = cell ? that.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 _selectable: function () {\n var that = this, multi, cell, notString = [], isLocked = that._isLocked(), selectable = that.options.selectable;\n if (selectable) {\n if (that.selectable) {\n that.selectable.destroy();\n }\n if (that.options.persistSelection === true) {\n that._selectedIds = {};\n }\n selectable = kendo.ui.Selectable.parseOptions(selectable);\n multi = selectable.multiple;\n cell = selectable.cell;\n if (that._hasDetails()) {\n notString[notString.length] = '.k-detail-row';\n }\n if (that.options.groupable || that._hasFooters() || that._groups()) {\n notString[notString.length] = '.k-grouping-row,.k-group-footer';\n }\n notString = notString.join(',');\n if (notString !== '') {\n notString = ':not(' + notString + ')';\n }\n var elements = that.table;\n if (isLocked) {\n elements = elements.add(that.lockedTable);\n }\n var filter = '>' + (cell ? SELECTION_CELL_SELECTOR : 'tbody>tr' + notString);\n that.selectable = new kendo.ui.Selectable(elements, {\n filter: filter,\n aria: true,\n multiple: multi,\n change: function () {\n if (that.options.persistSelection && !cell) {\n that._persistSelectedRows();\n }\n that.trigger(CHANGE);\n },\n useAllItems: isLocked && multi && cell,\n relatedTarget: function (items) {\n if (cell || !isLocked) {\n return;\n }\n var related;\n var result = $();\n for (var idx = 0, length = items.length; idx < length; idx++) {\n related = that._relatedRow(items[idx]);\n if (inArray(related[0], items) < 0) {\n result = result.add(related);\n }\n }\n return result;\n },\n continuousItems: function () {\n return that._continuousItems(filter, cell);\n }\n });\n if (that.options.navigatable) {\n elements.on('keydown' + NS, function (e) {\n var current = that.current();\n var target = e.target;\n if (e.keyCode === keys.SPACEBAR && !e.shiftKey && $.inArray(target, elements) > -1 && !current.is('.k-edit-cell,.k-header') && current.parent().is(':not(.k-grouping-row,.k-detail-row,.k-group-footer)')) {\n e.preventDefault();\n e.stopPropagation();\n current = cell ? current : current.parent();\n if (isLocked && !cell) {\n current = current.add(that._relatedRow(current));\n }\n if (multi) {\n if (!e.ctrlKey) {\n that.selectable.clear();\n } else {\n if (current.hasClass(SELECTED)) {\n current.removeClass(SELECTED);\n that.trigger(CHANGE);\n return;\n }\n }\n } else {\n that.selectable.clear();\n }\n if (!cell) {\n that.selectable._lastActive = current;\n }\n that.selectable.value(current);\n } else if (!cell && (e.shiftKey && e.keyCode == keys.LEFT || e.shiftKey && e.keyCode == keys.RIGHT || e.shiftKey && e.keyCode == keys.UP || e.shiftKey && e.keyCode == keys.DOWN || e.keyCode === keys.SPACEBAR && e.shiftKey)) {\n e.preventDefault();\n e.stopPropagation();\n current = current.parent();\n if (isLocked) {\n current = current.add(that._relatedRow(current));\n }\n if (multi) {\n if (!that.selectable._lastActive) {\n that.selectable._lastActive = current;\n }\n that.selectable.selectRange(that.selectable._firstSelectee(), current);\n } else {\n that.selectable.clear();\n that.selectable.value(current);\n }\n }\n });\n }\n }\n },\n _clipboard: function () {\n var options = this.options;\n var selectable = options.selectable;\n if (selectable && options.allowCopy) {\n var grid = this;\n if (!options.navigatable) {\n grid.table.add(grid.lockedTable).attr('tabindex', 0).on('mousedown' + NS + ' keydown' + NS, '.k-detail-cell', function (e) {\n if (e.target !== e.currentTarget) {\n e.stopImmediatePropagation();\n }\n }).on('mousedown' + NS, NAVROW + '>' + NAVCELL, proxy(tableClick, grid));\n }\n grid.copyHandler = proxy(grid.copySelection, grid);\n grid.updateClipBoardState = function () {\n if (grid.areaClipBoard) {\n grid.areaClipBoard.val(grid.getTSV()).focus().select();\n }\n };\n grid.bind('change', grid.updateClipBoardState);\n grid.wrapper.on('keydown', grid.copyHandler);\n grid.clearAreaHandler = proxy(grid.clearArea, grid);\n grid.wrapper.on('keyup', grid.clearAreaHandler);\n }\n },\n copySelection: function (e) {\n if (e instanceof jQuery.Event && !(e.ctrlKey || e.metaKey) || $(e.target).is('input:visible,textarea:visible') || window.getSelection && window.getSelection().toString() || document.selection && document.selection.createRange().text) {\n return;\n }\n if (!this.areaClipBoard) {\n this.areaClipBoard = $('