var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); var __aspxTableColumnResizing = null; var __aspxScrollerHelpers = null; ASPxClientTableHelper = _aspxCreateClass(null, { constructor: function(control, contentTableIDSuffix, headerTableIDSuffix, footerTableIDSuffix, isHorizontalScrolling){ this.control = control; this.contentTableIDSuffix = contentTableIDSuffix; this.headerTableIDSuffix = headerTableIDSuffix; this.footerTableIDSuffix = footerTableIDSuffix; this.isHorizontalScrolling = isHorizontalScrolling; }, GetTable: function(tableIDSuffix) { return this.control.GetChildElementById(tableIDSuffix); }, GetContentTable: function() { return this.GetTable(this.contentTableIDSuffix); }, GetHeaderTable: function() { return this.GetTable(this.headerTableIDSuffix); }, GetFooterTable: function() { return this.GetTable(this.footerTableIDSuffix); }, GetResizableTable: function() { return this.GetHeaderTable() || this.GetContentTable(); }, GetVerticalScrollBarWidth: function(table) { return table.offsetParent.offsetHeight > table.offsetHeight ? 0 : _aspxGetVerticalScrollBarWidth(); }, GetArmatureCells: function(table) { return table.rows[0].cells; }, GetArmatureCell: function(cell) { var grid = this.control; var index; if(grid.IsHeaderRow(cell.parentNode)) { var columnIndex = grid.getColumnIndex(cell.id); index = grid.GetHeaderMatrix().GetLeafIndex(columnIndex) + grid.indentColumnCount; } else { index = cell.cellIndex; } return this.GetArmatureCells(_aspxGetParentByTagName(cell, "TABLE"))[index]; }, GetCellRealWidth: function(cell) { var width = this.GetStylePxWidth(this.GetArmatureCell(cell)); return width > -1 ? width : cell.offsetWidth }, GetStylePxWidth: function(element) { var width = element.style.width; if(width && width.indexOf("px") > -1) return parseInt(width, 10); return -1; }, UpdateIndentCellWidths: function() { var indentCount = this.control.indentColumnCount; if(indentCount == 0) return; var indentWidth = this.GetIndentCellWidth(); if(indentWidth <= 0) return; var tables = [this.GetHeaderTable(), this.GetContentTable(), this.GetFooterTable()]; for(var i = 0; i < tables.length; i++) { var table = tables[i]; if(!table) continue; var armCells = this.GetArmatureCells(table); for(var j = 0; j < armCells.length; j++) { if(j >= indentCount) break; var cell = armCells[j]; if(this.GetStylePxWidth(cell) != indentWidth) cell.style.width = indentWidth + "px"; } } }, GetIndentCellWidth: function() { var buttonImage = this.FindExpandCollapseButtonImage(); if(buttonImage) return buttonImage.offsetWidth + _aspxGetLeftRightBordersAndPaddingsSummaryValue(buttonImage.parentNode); return -1; }, FindExpandCollapseButtonImage: function() { var tree = this.control; var table = this.GetHeaderTable() || this.GetContentTable(); var row = table.rows[1]; if(!row) return null; if(row.querySelectorAll) { var list = row.querySelectorAll("td:first-child > img"); if(list.length > 0) return list[0]; return null; } var cell = row.cells[0]; for(var i = 0; i < cell.childNodes.length; i++) { var element = cell.childNodes[i]; if(element.tagName == "IMG") return element; } return null; } }); ASPxClientTableColumnResizing = _aspxCreateClass(ASPxClientTableHelper, { constructor: function(control, contentTableIDSuffix, headerTableIDSuffix, footerTableIDSuffix, isHorizontalScrolling){ this.constructor.prototype.constructor.call(this, control, contentTableIDSuffix, headerTableIDSuffix, footerTableIDSuffix, isHorizontalScrolling); this.firstDataRowIndex = -2; this.resizableCell = null; this.scrollerHelper = null; this.maximumOffset = __aspxTouchUI ? 10 : 3; this.minimumWidth = 16; this.prevX = 0; }, GetHiddenField: function() { return this.control.GetColResizedInput(); }, GetColumnToResize: function(cell, e) { var grid = this.control; var isLeft = _aspxGetEventX(e) < _aspxGetAbsoluteX(cell) + cell.offsetWidth / 2; if(grid.rtl) isLeft = !isLeft; var columnIndex = grid.getColumnIndex(cell.id); columnIndex = grid.GetHeaderMatrix().GetLeaf(columnIndex, isLeft, isLeft); return grid.columns[columnIndex]; }, IsResizing: function() { return __aspxTableColumnResizing == this; }, OnMouseUp: function(evt) { this.EndResizing(); this.CancelResizing(evt); }, OnMouseMove: function(e) { if(this.resizableCell.cellIndex < 0) { this.CancelResizing(e); return; } if(ASPxClientTouchUI.isTouchEvent(e) && !ASPxClientTouchUI.isGesture) e.preventDefault(); var grid = this.control; var newX = _aspxGetEventX(e); var delta = newX - this.prevX; if(grid.rtl) delta = -delta; var newWidth = this.GetCellRealWidth(this.resizableCell) + delta; if(newWidth < this.minimumWidth) return; var resizableColumnIndex = grid.getColumnIndex(this.resizableCell.id); var nextColumnIndex, nextCell, nextCellNewWidth; var rootTable, rootWidth; if(!grid.isMainControlResizable) { nextColumnIndex = grid.GetHeaderMatrix().GetRightNeighborLeaf(resizableColumnIndex); nextCell = grid.GetHeader(nextColumnIndex); nextCellNewWidth = this.GetCellRealWidth(nextCell) - delta; if(nextCellNewWidth < this.minimumWidth) return; } else if(!this.isHorizontalScrolling) { rootTable = grid.GetRootTable(); rootWidth = rootTable.offsetWidth; } this.prevX = newX; this.ApplyWidth( grid.indentColumnCount + grid.GetHeaderMatrix().GetLeafIndex(resizableColumnIndex), newWidth ); if(nextCell) { this.ApplyWidth( grid.indentColumnCount + grid.GetHeaderMatrix().GetLeafIndex(nextColumnIndex), nextCellNewWidth ); } else if(!this.isHorizontalScrolling) { rootTable.style.width = (rootWidth + delta) + "px"; if(this.scrollerHelper) this.scrollerHelper.CorrectHeaderFooterColsWidth(); } }, ApplyWidth: function(colIndex, width) { this.ApplyColumnWidth(this.GetHeaderTable(), colIndex, width); this.ApplyColumnWidth(this.GetContentTable(), colIndex, width); if(!this.control.hasFooterRowTemplate) this.ApplyColumnWidth(this.GetFooterTable(), colIndex, width); }, ApplyColumnWidth: function(table, colIndex, width) { if(!table) return; this.GetArmatureCells(table)[colIndex].style.width = width + "px"; }, StartResizing: function(cell, e, column) { this.resizableCell = cell; this.resizingColumn = column; __aspxTableColumnResizing = this; _aspxSetElementSelectionEnabled(document.body, false); if(this.GetHeaderTable()) this.scrollerHelper = new ASPxClientTableScrollerHelper(this.control, this.contentTableIDSuffix, this.headerTableIDSuffix, this.footerTableIDSuffix, this.isHorizontalScrolling); }, EndResizing: function() { if(!this.resizableCell) return; var grid = this.control; var obj = { }; var indices = grid.GetHeaderMatrix().GetLeafIndices(); for(var i = 0; i < indices.length; i++) { var index = indices[i]; obj[index] = this.GetCellRealWidth(grid.GetHeader(index)); } this.GetHiddenField().value = _aspxToJson(obj); aspxGetControlCollection().AdjustControls(grid.GetMainElement()); this.control.RaiseColumnResized(this.resizingColumn); }, CancelResizing: function(evt) { __aspxTableColumnResizing = null; _aspxSetElementSelectionEnabled(document.body, true); this.firstDataRowIndex = -2; this.resizableCell = null; this.resizingColumn = null; this.prevX = 0; if(this.scrollerHelper != null) this.scrollerHelper.CorrectHeaderFooterColsWidth(); }, UpdateCursor: function(cell, e) { if(this.IsResizing() || this.CanStartResizing(cell, e)) _aspxChangeStyleAttribute(cell, "cursor", "w-resize"); else _aspxRestoreStyleAttribute(cell, "cursor"); }, CanStartResizing: function(cell, e) { this.prevX = _aspxGetEventX(e); var grid = this.control; var left = _aspxGetAbsoluteX(cell); var right = left + cell.offsetWidth - 1; var isLeftEdge = this.prevX - left < this.maximumOffset; var isRightEdge = right - this.prevX <= this.maximumOffset; if(!isLeftEdge && !isRightEdge) return false; var columnIndex = grid.getColumnIndex(cell.id); var rtl = grid.rtl; if(isLeftEdge && !rtl || isRightEdge && rtl) return !grid.GetHeaderMatrix().IsLeftmostColumn(columnIndex); if(isRightEdge && !rtl || isLeftEdge && rtl) { if(grid.isMainControlResizable) return true; return !grid.GetHeaderMatrix().IsRightmostColumn(columnIndex); } }, ValidateColumnWidths: function() { var grid = this.control; if(!grid.isMainControlResizable) return; var rootTable = grid.GetRootTable(); var rootWidth = this.GetStylePxWidth(rootTable); if(rootWidth < 0) return; rootWidth -= _aspxGetLeftRightBordersAndPaddingsSummaryValue(rootTable); var totalColumnWidth = 0; var armCells = this.GetArmatureCells(this.GetResizableTable()); for(var i = 0; i < armCells.length; i++) { var width = this.GetStylePxWidth(armCells[i]); if(width < 0) return; totalColumnWidth += width; } var precision = 5; var excess = rootWidth - totalColumnWidth; if(precision > excess) return; var indices = grid.GetHeaderMatrix().GetLeafIndices(); var lastColumnIndex = indices[indices.length - 1]; var armCell = this.GetArmatureCell(grid.GetHeader(lastColumnIndex)); var newWidth = excess + this.GetStylePxWidth(armCell); this.ApplyWidth( grid.indentColumnCount + grid.GetHeaderMatrix().GetLeafIndex(lastColumnIndex), newWidth ); } }); ASPxClientTableScrollerHelper = _aspxCreateClass(ASPxClientTableHelper, { constructor: function(control, contentTableIDSuffix, headerTableIDSuffix, footerTableIDSuffix, isHorizontalScrolling){ this.constructor.prototype.constructor.call(this, control, contentTableIDSuffix, headerTableIDSuffix, footerTableIDSuffix, isHorizontalScrolling); this.verticalScrollBarWidth = -1; this.IsWidthTypePercent = false; this.isScrolling = false; this.SetOnScroll(); if(__aspxScrollerHelpers == null) { __aspxScrollerHelpers = [ ]; } __aspxScrollerHelpers.push(this); }, CorrectHeaderFooterColsWidth : function() { this.SetHeaderFooterContainersWidth(); }, AfterWindowResize: function() { this.CorrectHeaderFooterColsWidth(); }, OnWindowResize: function(index) { if(!this.IsWidthTypePercent) return; _aspxSetTimeout(function() { if(__aspxScrollerHelpers != null && index < __aspxScrollerHelpers.length) __aspxScrollerHelpers[index].AfterWindowResize(); }, 0); }, SetOnScroll: function() { if(!this.isHorizontalScrolling) return; this.SetOnScrollCore(this.GetContentTable(), this.OnContentScroll); this.SetOnScrollCore(this.GetHeaderTable(), this.OnHeaderScroll); }, SetOnScrollCore: function(table, proc) { var parent = this.GetScrollDiv(table); if(parent != null) { _aspxAttachEventToElement(parent, "scroll", proc); parent.scrollHelper = this; } }, OnContentScroll: function(event) { var src = _aspxGetEventSource(event); var scrollHelper = src.scrollHelper; if(!scrollHelper) return; scrollHelper.OnDivScrollCore(src, scrollHelper.GetHeaderTable(), scrollHelper.GetFooterTable()); }, OnHeaderScroll: function(event) { var src = _aspxGetEventSource(event); var scrollHelper = src.scrollHelper; if(!scrollHelper) return; scrollHelper.OnDivScrollCore(src, scrollHelper.GetContentTable(), scrollHelper.GetFooterTable()); }, OnDivScrollCore: function(src, table1, table2) { if(this.isScrolling) return; this.isScrolling = true; this.SetScrollLeft(src, table1); this.SetScrollLeft(src, table2); this.isScrolling = false; }, GetScrollDiv: function(table) { if(!table) return null; return table.parentNode; }, SetScrollLeft: function(src, table) { var div = this.GetScrollDiv(table); if(div && div.scrollLeft != src.scrollLeft) div.scrollLeft = src.scrollLeft; }, SetHeaderFooterContainersWidth: function() { if(!this.control.GetMainElement()) return; if(!this.control.IsVisible()) { this.control.sizeCorrectedOnce = false; return; } var mainTable = this.control.GetMainElement(), mainCell = mainTable.rows[0].cells[0], headerTable = this.GetHeaderTable(), contentTable = this.GetContentTable(), footerTable = this.GetFooterTable(); var parts = [ headerTable, contentTable, footerTable ]; var body = __aspxWebKitFamily ? document.body : document.documentElement; var scrollTop = this.GetScrollDiv(contentTable).scrollTop, scrollLeft = this.GetScrollDiv(contentTable).scrollLeft, savedHeight = mainTable.style.height, bodyScrollLeft = body.scrollLeft; mainTable.style.height = mainCell.offsetHeight + "px"; for(var i = 0; i < parts.length; i++) { if(parts[i]) parts[i].parentNode.style.display = "none"; } ASPxClientGridView.ResetElementWidth(mainTable); var desiredTableWidth = mainTable.offsetWidth; var desiredPartWidth = desiredTableWidth - _aspxGetLeftRightBordersAndPaddingsSummaryValue(mainTable) - _aspxGetLeftRightBordersAndPaddingsSummaryValue(mainCell); var oldIE = __aspxIE && __aspxBrowserVersion < 8; for(var i = 0; i < parts.length; i++) { var part = parts[i]; if(!part) continue; var div = part.parentNode; var margin = 0; if(part != contentTable) margin = _aspxGetVerticalScrollBarWidth(); if(this.control.rtl && this.control.fixedColumnCount > 0) { _aspxSetElementFloat(part, "right"); } else { div.align = "left"; } div.style.marginLeft = 0; div.style.marginRight = margin + "px"; div.style.width = oldIE ? "1%" : ""; div.style.display = ""; if(!this.isHorizontalScrolling && part == headerTable) { var actualWidth = part.offsetWidth + margin; if(actualWidth > desiredPartWidth) desiredPartWidth = actualWidth; } this.SetElementWidth(div, desiredPartWidth, margin, margin); if(!this.isHorizontalScrolling && oldIE && part == contentTable) part.style.width = (desiredPartWidth - _aspxGetVerticalScrollBarWidth()) + "px"; } if(this.control.pageRowCount < 1 && this.isHorizontalScrolling && headerTable) { contentTable.style.width = headerTable.offsetWidth + "px"; } mainTable.style.width = desiredTableWidth + "px"; mainTable.style.height = savedHeight; this.GetScrollDiv(contentTable).scrollTop = scrollTop; this.GetScrollDiv(contentTable).scrollLeft = scrollLeft; if(body.scrollLeft != bodyScrollLeft) body.scrollLeft = bodyScrollLeft; aspxGetControlCollection().AdjustControls(mainTable); }, SetElementWidth: function(element, width, margin, marginRight) { if(!element) return; if(width <= _aspxGetVerticalScrollBarWidth()) return; if(marginRight != 0) { element.style.marginRight = marginRight + "px"; element.style.marginLeft = ""; } element.style.width = (width - margin) + "px"; }, MakeRowVisible: function(row) { var div = this.GetScrollDiv(this.GetContentTable()); if(div == null) return; var top = row.offsetTop; if(top + row.offsetHeight < div.offsetHeight) { top = 0; } div.scrollTop = top; } }); ASPxClientTableScrollerHelper.prevBodyWidth = -1; ASPxClientTableFixedColumnsHelper = _aspxCreateClass(ASPxClientTableHelper, { constructor: function(control, contentTableIDSuffix, headerTableIDSuffix, footerTableIDSuffix, fixedDivName, fixedContentDivName, fixedColumnCount, areaWidth){ this.constructor.prototype.constructor.call(this, control, contentTableIDSuffix, headerTableIDSuffix, footerTableIDSuffix, true); this.FixedDivName = fixedDivName; this.FixedContentDivName = fixedContentDivName; this.FixedColumnCount = fixedColumnCount; this.hiddenColumnCount = 0; this.prevHiddenColumnCount = 0; this.doScrolling = false; this.areaWidth = areaWidth; this.savedScrollPos = -1; this.touchUIScroller = null; }, GetFixedDiv: function() { return this.control.GetChildElementById(this.FixedDivName); }, GetFixedContentDiv: function() { return this.control.GetChildElementById(this.FixedContentDivName); }, Update: function() { var fixedDiv = this.GetFixedDiv(); if(fixedDiv.scrollLeft > 0) return; if((__aspxWebKitFamily || __aspxIE) && fixedDiv.scrollLeft == 0 && this.savedScrollPos > 0) { fixedDiv.scrollLeft = this.savedScrollPos; return; } _aspxDetachEventFromElement(this.GetFixedDiv(), "scroll", this.OnScroll); this.GetFixedDiv().helper = this; this.UpdateRowHeights(); this.GetFixedContentDiv().style.width = this.GetResizableTable().offsetWidth + "px"; var scrollHeigth = (_aspxGetVerticalScrollBarWidth() + 1) + "px"; this.GetFixedDiv().style.height = scrollHeigth; this.GetFixedContentDiv().style.height = scrollHeigth; _aspxAttachEventToElement(this.GetFixedDiv(), "scroll", this.OnScroll); if(__aspxTouchUI) { var contentDiv = this.GetContentTable().parentNode; if(!this.mouseDownHandler) this.mouseDownHandler = function(e) { this.OnMouseDown(e); }.aspxBind(this); _aspxDetachEventFromElement(contentDiv, ASPxClientTouchUI.touchMouseDownEventName, this.mouseDownHandler); _aspxAttachEventToElement(contentDiv, ASPxClientTouchUI.touchMouseDownEventName, this.mouseDownHandler); this.UpdateTouchUIScroller(); } }, UpdateTouchUIScroller: function() { this.touchUIScroller = this.touchUIScroller || this.CreateTouchUIScroller(); if(!_aspxIsExistsElement(this.touchUIScroller.element)) this.touchUIScroller.ChangeElement(this.GetFixedDiv()); }, CreateTouchUIScroller: function() { return ASPxClientTouchUI.MakeScrollable(this.GetFixedDiv(), { showHorizontalScrollbar: true, showVerticalScrollbar: false, forceCustomScroll: true }); }, OnMouseDown: function(e) { this.processMouseMove = true; this.prevX = _aspxGetEventX(e); if(!this.mouseMoveHandler) this.mouseMoveHandler = function(e) { this.OnMouseMove(e); }.aspxBind(this); if(!this.mouseUpHandler) this.mouseUpHandler = function(e) { this.OnMouseUp(e); }.aspxBind(this); _aspxAttachEventToDocument(ASPxClientTouchUI.touchMouseMoveEventName, this.mouseMoveHandler); _aspxAttachEventToDocument(ASPxClientTouchUI.touchMouseUpEventName, this.mouseUpHandler); this.UpdateTouchScrollBars(); }, OnMouseMove: function(e) { if(!this.processMouseMove || ASPxClientTouchUI.isGesture) return; var fixedDiv = this.GetFixedDiv(); var x = _aspxGetEventX(e); var diff = this.prevX - x; this.SetScrollLeft(fixedDiv, fixedDiv.scrollLeft + diff); this.prevX = x; e.preventDefault(); this.UpdateTouchScrollBars(); }, OnMouseUp: function(e) { _aspxDetachEventFromDocument(ASPxClientTouchUI.touchMouseMoveEventName, this.mouseMoveHandler); _aspxDetachEventFromDocument(ASPxClientTouchUI.touchMouseMoveEventName, this.mouseUpHandler); this.processMouseMove = false; if(this.touchUIScroller) this.touchUIScroller.hideScrollBars(); }, UpdateTouchScrollBars: function() { if(this.touchUIScroller) { this.touchUIScroller.updateScrollHandles(); this.touchUIScroller.showScrollBars(); } }, AttacheEvent: function(element, eventName, eventHandler) { if(!element) return; var eventMarker = "gvfh" + eventName; if(element[eventMarker]) return; _aspxAttachEventToElement(element, eventName, eventHandler); element[eventMarker] = true; element.fixedHelper = this; }, SetScrollLeft: function(target, scrollLeft) { if(target.scrollLeft != scrollLeft) target.scrollLeft = scrollLeft; }, OnScroll: function(event) { var src = _aspxGetEventSource(event); if(src.doScrolling) return; src.doScrolling = true; var helper = src.helper; helper.savedScrollPos = src.scrollLeft; var columnsToHide = helper.GetColumnsToHide(src.scrollLeft); if(helper.hiddenColumnCount != columnsToHide) { helper.prevHiddenColumnCount = helper.hiddenColumnCount; helper.hiddenColumnCount = columnsToHide; helper.UpdateCellsVisibility(); } if(helper.control.rtl && __aspxIE && __aspxBrowserVersion < 8) { var tables = [ helper.GetHeaderTable(), helper.GetContentTable(), helper.GetFooterTable() ]; for(var i = 0; i < tables.length; i++) { if(!tables[i]) continue; tables[i].offsetParent.scrollLeft = 0x1fffffff; } } src.doScrolling = false; }, GetColumnsToHide: function(pos) { var grid = this.control; var indices = grid.GetHeaderMatrix().GetLeafIndices(); if(grid.rtl) pos = this.GetFixedContentDiv().scrollWidth - pos - grid.GetMainElement().offsetWidth + _aspxGetVerticalScrollBarWidth(); var i; var width = 0; for(i = this.FixedColumnCount; i < indices.length; i ++) { if(width >= pos) break; width += this.GetCellRealWidth(grid.GetHeader(indices[i])); } return i - this.FixedColumnCount; }, UpdateCellsVisibility: function() { var tables = [ this.GetHeaderTable(), this.GetContentTable(), this.GetFooterTable() ]; var startIndex = Math.min(this.prevHiddenColumnCount, this.hiddenColumnCount) + this.FixedColumnCount; var endIndex = Math.max(this.prevHiddenColumnCount, this.hiddenColumnCount) + this.FixedColumnCount; var display = this.hiddenColumnCount - this.prevHiddenColumnCount > 0 ? "none" : ""; for(var tableIndex = 0; tableIndex < tables.length; tableIndex++) { var table = tables[tableIndex]; if(!table) continue; var armCells = this.GetArmatureCells(table); for(var i = startIndex; i < endIndex; i++) armCells[i].style.display = display; for(var rowIndex = 0; rowIndex < table.rows.length; rowIndex++) { var row = table.rows[rowIndex]; if(this.control.IsHeaderRow(row)) continue; for(var i = startIndex; i < endIndex; i ++) { if(!row.cells[i]) break; row.cells[i].style.display = display; } } } this.UpdateHeadersVisibility(); }, UpdateHeadersVisibility: function() { var grid = this.control; var matrix = grid.GetHeaderMatrix(); var totalSpans = { }; var hiddenSpans = { }; for(var rowIndex = 0; rowIndex < matrix.GetRowCount(); rowIndex++) { var indices = matrix.GetRowIndices(rowIndex); for(var i = this.FixedColumnCount; i < indices.length; i++) { var columnIndex = indices[i]; if(isNaN(totalSpans[columnIndex])) totalSpans[columnIndex] = 0; if(isNaN(hiddenSpans[columnIndex])) hiddenSpans[columnIndex] = 0; totalSpans[columnIndex]++; if(i < this.FixedColumnCount + this.hiddenColumnCount) hiddenSpans[columnIndex]++; } } for(var i = 0; i < grid.columns.length; i++) { var columnIndex = grid.columns[i].index; if(isNaN(totalSpans[columnIndex])) continue; var visible = totalSpans[columnIndex] > hiddenSpans[columnIndex]; var header = grid.GetHeader(columnIndex); header.style.display = visible ? "" : "none"; if(visible) header.colSpan = Math.max(1, (totalSpans[columnIndex] - hiddenSpans[columnIndex]) / matrix.GetRowSpan(columnIndex)); } }, UpdateRowHeights: function() { var tables = [ this.GetHeaderTable(), this.GetContentTable(), this.GetFooterTable() ]; for(var tableIndex = 0; tableIndex < tables.length; tableIndex++) { var table = tables[tableIndex]; if(!table) continue; for(var rowIndex = 0; rowIndex < table.rows.length; rowIndex++) { var row = table.rows[rowIndex]; if(row.cells.length < 1) continue; var cell = row.cells[row.cells.length - 1]; var h = cell.offsetHeight; if(h > 0) cell.style.height = h + "px"; } } }, SaveCallbackSettings: function() { this.savedScrollPos = -1; }, RestoreCallbackSettings: function() { this.hiddenColumnCount = 0; this.prevHiddenColumnCount = 0; } }); _aspxAttachEventToDocument(ASPxClientTouchUI.touchMouseUpEventName, function(e) { if(__aspxTableColumnResizing != null) { __aspxTableColumnResizing.OnMouseUp(e); return true; } }); _aspxAttachEventToDocument(ASPxClientTouchUI.touchMouseMoveEventName, function(e) { if(__aspxTableColumnResizing != null && !(__aspxTouchUI && ASPxClientTouchUI.isGesture)) { __aspxTableColumnResizing.OnMouseMove(e); return true; } }); _aspxAttachEventToElement(window, "resize", function(e) { if(!document.body) return; var width = document.body.offsetWidth; if(width == ASPxClientTableScrollerHelper.prevBodyWidth) return; ASPxClientTableScrollerHelper.prevBodyWidth = width; if(__aspxScrollerHelpers != null) { for(var i = 0; i < __aspxScrollerHelpers.length; i++) __aspxScrollerHelpers[i].OnWindowResize(i); } for(var name in ASPxClientGridView.instances) { var obj = ASPxClientGridView.instances[name]; if(obj.UpdateHorzScrollDivs) obj.UpdateHorzScrollDivs(true); } }); } /* playback timings (ms): captures_list: 121.904 exclusion.robots: 0.096 exclusion.robots.policy: 0.088 RedisCDXSource: 2.173 esindex: 0.01 LoadShardBlock: 96.384 (3) PetaboxLoader3.datanode: 114.932 (4) CDXLines.iter: 20.473 (3) load_resource: 67.597 PetaboxLoader3.resolve: 21.522 */