/*!@license * Infragistics.Web.ClientUI Grid Multi Headers 19.1.20 * * Copyright (c) 2011-2019 Infragistics Inc. * * http://www.infragistics.com/ * * Depends on: * jquery-1.9.1.js * jquery.ui.core.js * jquery.ui.widget.js * infragistics.util.js * infragistics.ui.widget.js * infragistics.dataSource.js * infragistics.ui.grid.framework.js * infragistics.ui.shared.js */ (function(factory){if(typeof define==="function"&&define.amd){define(["./infragistics.ui.grid.framework"],factory)}else{return factory(jQuery)}})(function($){var _aNull=function(val){return val===null||val===undefined};$.widget("ui.igGridColumnFixing",$.ui.igWidget,{renderInFeatureChooser:true,localeWidgetName:"ColumnFixing",events:{columnFixing:"columnFixing",columnFixed:"columnFixed",columnUnfixing:"columnUnfixing",columnUnfixed:"columnUnfixed",columnFixingRefused:"columnFixingRefused",columnUnfixingRefused:"columnUnfixingRefused"},css:{fixedContainer:"ui-iggrid-fixedcontainer",headerButtonIconContainer:"ui-iggrid-fixcolumn-headerbuttoncontainer",leftFixedContainer:"ui-iggrid-fixedcontainer-left",rightFixedContainer:"ui-iggrid-fixedcontainer-right",headerButtonIcon:"ui-icon ui-corner-all ui-icon-pin-w",headerButtonIconHover:"",headerButtonUnfixIcon:"ui-icon ui-corner-all ui-icon-pin-s",featureChooserIconClassFixed:"ui-icon ui-iggrid-icon-unfix",featureChooserIconClassUnfixed:"ui-icon ui-iggrid-icon-fix",unfixedTableLeft:"ui-iggrid-unfixed-table-left",unfixedTableRight:"ui-iggrid-unfixed-table-right"},options:{headerFixButtonText:undefined,headerUnfixButtonText:undefined,featureChooserTextFixedColumn:undefined,featureChooserTextUnfixedColumn:undefined,locale:{headerFixButtonText:undefined,headerUnfixButtonText:undefined,featureChooserTextFixedColumn:undefined,featureChooserTextUnfixedColumn:undefined},showFixButtons:true,syncRowHeights:true,scrollDelta:40,fixingDirection:"left",columnSettings:[{columnKey:null,columnIndex:null,allowFixing:true,isFixed:false}],minimalVisibleAreaWidth:30,fixNondataColumns:true,populateDataRowsAttributes:true},scrollContainerCheckValue:2,_createWidget:function(){this._fcData={};this._tds={};this._containers={};this._colgroups={};this._isInitFC=false;this._isFunctionsOverriden=false;$.Widget.prototype._createWidget.apply(this,arguments)},changeGlobalLanguage:function(){},changeGlobalRegional:function(){},_unfixColumnInternal:function(colKey,target,after){var noCancel,res={error:true},grid=this.grid,isGroupHeader=this.isGroupHeader(colKey);noCancel=this._trigger(this.events.columnUnfixing,null,{columnIdentifier:colKey,isGroupHeader:isGroupHeader,owner:grid});if(noCancel){res=this.unfixColumn(colKey,target,after);if(res.result===false){this._trigger(this.events.columnUnfixingRefused,null,{columnIdentifier:colKey,isGroupHeader:isGroupHeader,errorMessage:res.error,owner:grid})}else{this._trigger(this.events.columnUnfixed,null,{columnIdentifier:colKey,isGroupHeader:isGroupHeader,owner:grid})}}return res},unfixColumn:function(colIdentifier,target,after){if($.type(arguments[1])==="boolean"){target=arguments[2];after=arguments[3]}var col,res,children,isGroupHeader,colKey,mch,grid=this.grid,cols,aObj,scrollContainer=this._containers.body.unfixedContainer;isGroupHeader=this.isGroupHeader(colIdentifier);res={error:this._getLocaleValue("noneError"),result:true,col:null,isGroupHeader:isGroupHeader};if(!isGroupHeader){col=this._getColById(colIdentifier);res.col=col;if(!col){res.result=false;res.error=this._getLocaleValue("notValidIdentifierError");return res}res.col=col;colKey=col.key;children=[col];res.id=colKey}else{colKey=colIdentifier;res.id=colKey;mch=grid._getMultiHeaderColumnById(colIdentifier);if(!mch){res.result=false;res.error=this._getLocaleValue("notValidIdentifierError");return res}res.col=mch;children=mch.children}res.children=children;res=this._couldPerformUnfixing(res,target);if(!res.result){return res}if(!target){cols=grid._isMultiColumnGrid?grid._oldCols:grid.options.columns;$.each(cols,function(i,c){if(c.fixed!==true&&!!!c.hidden){target=c.key||c.identifier;return false}});after=false}this._performDomColumnMove(res,target,after,false);aObj=this._rearrangeColumns(colKey,target,after,false);grid._hasFixedColumns=!!grid._fixedColumns.length||grid.hasFixedDataSkippedColumns();this._refreshDOMOnUnfixing(res);grid._onFixedColumnsChanged({isToFix:false,id:colIdentifier,colWidth:res.colWidth,children:res.children,isGroupHeader:isGroupHeader,start:aObj.from.dIndex,length:aObj.from.children.length,at:aObj.at.dIndex});if(grid._fixedColumns.length===0&&(this._getDataSkippedColumnsLength(true)&&!this.options.fixNondataColumns)){this.unfixNonDataColumns()}if(scrollContainer.data("igScroll")!==undefined){scrollContainer.igScroll("refresh");if(this.grid.options.virtualization===true||this.grid.options.rowVirtualization===true){scrollContainer.igScroll("option","scrollWidth",this.grid._calculateContainerWidth())}scrollContainer.igScroll("option","scrollTop",0);scrollContainer.igScroll("option","scrollLeft",0)}if($(".igscroll-hnative-outer",this.grid.container()).length){if(this.grid.fixedBodyContainer().length){if(this.grid.fixingDirection()==="left"){$(".igscroll-hnative-outer",this.grid.container()).css("left",this.grid.fixedBodyContainer().width())}else if(this.grid.fixingDirection()==="right"){$(".igscroll-hnative-outer",this.grid.container()).css("right",this.grid.fixedBodyContainer().width())}}else{if(this.grid.fixingDirection()==="left"){$(".igscroll-hnative-outer",this.grid.container()).css("left","")}else if(this.grid.fixingDirection()==="right"){$(".igscroll-hnative-outer",this.grid.container()).css("right","")}}}else if($(".igscroll-hcontainer",this.grid.container()).length&&!this.grid._vdisplaycontainer().length){if(this.grid.fixedBodyContainer().length){if(this.grid.fixingDirection("left")){$(".igscroll-hcontainer",this.grid.container()).css("left",this.grid.fixedBodyContainer().width())}else if(this.grid.fixingDirection("right")){$(".igscroll-hcontainer",this.grid.container()).css("right",this.grid.fixedBodyContainer().width())}}else{if(this.grid.fixingDirection("left")){$(".igscroll-hcontainer",this.grid.container()).css("left","")}else if(this.grid.fixingDirection("right")){$(".igscroll-hcontainer",this.grid.container()).css("right","")}}}return res},checkAndSyncHeights:function(){this.syncHeights(true)},syncHeights:function(check,clearRowsHeights){if(!this.grid.hasFixedColumns()){return}if(!this._containers||!this._containers.body){this._populateContainers()}var c=this._containers,hTbl=c.header||c.body,fTbl=c.footer||c.body;this._checkAndSyncHeightsForTables(hTbl.fixedTable,hTbl.unfixedTable,"thead",check,clearRowsHeights);this._checkAndSyncHeightsForTables(c.body.fixedTable,c.body.unfixedTable,"tbody",check,clearRowsHeights);this._checkAndSyncHeightsForTables(fTbl.fixedTable,fTbl.unfixedTable,"tfoot",check,clearRowsHeights)},_checkAndSyncHeightsForTables:function($fTbl,$ufTbl,selector,check,clearRowsHeights){selector=selector||"tbody";var h,fH,ufH,uftblH,$fTrs=$fTbl.children(selector).children("tr"),$ufTrs=$ufTbl.children(selector).children("tr"),$fLastTr=$fTrs.last(),$ufLastTr=$ufTrs.last();uftblH=$ufTbl[0].style.height;$fTbl.height("");$ufTbl.height("");if(clearRowsHeights){this._removeRowsHeights($fTrs,true);this._removeRowsHeights($ufTrs,true)}if(!check||$fLastTr.length>0&&(Math.abs($fTbl.outerHeight()-$ufTbl.outerHeight())>1||Math.abs($fLastTr.igOffset().top-$ufLastTr.igOffset().top)>1)){this.syncRowsHeights($fTrs,$ufTrs);fH=$fTbl.height();ufH=$ufTbl.height();h=ufH;if(fH>ufH){h=fH}$fTbl.height(h);$ufTbl.height(h)}else if(uftblH){$ufTbl[0].style.height=uftblH;$fTbl[0].style.height=uftblH}},_syncTableHeights:function(){$("#"+this.grid.id()+"_fixed").height(this.grid.element.height())},_getKeyByVisibleIndex:function(index,isFixed){var col;isFixed=!!isFixed;index-=this._getDataSkippedColumnsLength(isFixed);col=this.grid._visibleColumns(isFixed)[index];return col?col.key:undefined},changeLocale:function(){var fc=this.grid.element.data("igGridFeatureChooser"),$container=this.grid.container(),self=this;if(fc&&this.renderInFeatureChooser){fc._removeFeature("ColumnFixing")}this._initFC();$container.find("th").find("[data-fixed]").each(function(){self._changeLocaleForElement($(this))})},_registerWidget:$.noop,_unregisterWidget:$.noop,_setOption:function(key,value){if(value===this.options[key]){return}this._superApply(arguments);if(key==="minimalVisibleAreaWidth"){this.grid._visibleAreaWidth(value)}},_gridSetOption:function(key,value){var w=value,grid=this.grid,fcw;if(!grid.hasFixedColumns()){return}if(key==="width"){if(typeof value==="string"&&value.indexOf("%")>0){grid.container().css("width",value);w=grid.container().outerWidth()}else{w=parseInt(value,10)}fcw=grid.fixedContainer().outerWidth();if(fcw===null){fcw=grid.fixedBodyContainer().outerWidth()}if(w-fcwcolgroup>col").each(function(ind,col){width+=parseInt(col.style.width,10)||0});width-=colWidth;$ufArea[0].style.width=width+this.grid._scrollbarWidth()+"px"}}$fArea=this._containers.body.fixedTable;$ufArea=grid.element;if(this._isVirtualGrid()&&grid._gridHasWidthInPercent()){$ufArea.width(this.grid.options.width);this._containers.header.unfixedTable.width(this.grid.options.width);this._containers.header.unfixedTable.css("max-width",width+this.grid._scrollbarWidth());$ufArea.css("max-width",width)}this._updateTblWidths($fArea,$ufArea,colWidth);if(grid.options.fixedFooters&&this._containers.footer){$fArea=this._containers.footer.fixedTable;$ufArea=this._containers.footer.unfixedTable;this._updateTblWidths($fArea,$ufArea,colWidth)}if(v){this._updateVirtualDOMWidth(colWidth);return}w=parseFloat($fCntnr[0].style.width||0);$fCntnr[0].style.width=w+colWidth+"px"},_calcTblWidth:function($tbl,delta){var styleWidth=$tbl[0].style.width,w;if($.type(styleWidth)==="string"&&styleWidth.indexOf("%")>-1){return styleWidth}w=parseInt(styleWidth,10)||0;if(w===0){$tbl.find(">colgroup>col").each(function(ind,col){w+=parseInt(col.style.width,10)||0})}return w+delta+"px"},_updateTblWidths:function($fixedTbl,$unfixedTbl,colWidth){var fW,ufW,fTbl=$fixedTbl[0],ufTbl=$unfixedTbl[0];ufW=this._calcTblWidth($unfixedTbl,-colWidth);fW=this._calcTblWidth($fixedTbl,colWidth);fTbl.style.width=fW;ufTbl.style.width=ufW;if(this._isVirtualGrid()){$fixedTbl.closest("div")[0].style.width=fW}},_updateVirtualDOMWidth:function(colWidth){var grid=this.grid,w,$col,$cntnr,widthInPerc=grid._gridHasWidthInPercent(),$displCntnr=grid._vdisplaycontainer(),$virtTbl=grid._virtualcontainer(),$virtColgroup=$virtTbl.children("colgroup");$col=$virtColgroup.children("col[data-fixed-col]");w=parseInt($col.attr("width"),10)||0;$col.attr("width",w+colWidth+"px");if(!widthInPerc){$col=$virtColgroup.children("col:not([data-fixed-col])").first();w=parseInt($col.attr("width"),10)||0;$col.attr("width",w-colWidth+"px");if(grid.options.showHeader){$cntnr=$("#"+grid.id()+"_headers_v");$cntnr.width($cntnr.width()-colWidth)}if(grid.options.showFooter){$cntnr=grid._fixedfooters();$cntnr.width($cntnr.width()-colWidth)}$displCntnr.width($displCntnr.width()-colWidth)}},_recalcTableWidths:function(){var c=this._containers;if(c.header){c.header.unfixedTable.width("")}if(c.footer){c.footer.unfixedTable.width("")}this.grid.element.width("");this._updateWidths(0)},_swapElements:function(area){var swap=area.from;area.from=area.to;area.to=swap;return area},_analyzeFixingObjects:function(colObj,target){var grid=this.grid,tObj,movedCol={start:-1,length:colObj.children.length},targetCol={start:-1,length:1},vIndFrom,vIndTo;vIndFrom=this.grid.getVisibleIndexByKey(colObj.children[0].key,true);if($.type(target)==="string"){tObj=grid._analyzeColumnByKey(target)}if(_aNull(target)){vIndTo=-1}else{targetCol.length=tObj.children.length;vIndTo=grid.getVisibleIndexByKey(tObj.children[0].key,true)}movedCol.start=vIndFrom;targetCol.start=vIndTo;return{movedCol:movedCol,targetCol:targetCol}},_performDomColumnMove:function(col,target,after,isToFix){var grid=this.grid,oCols,aObj,nW,afc=this._analyzeFixingObjects(col,target),movedCol=afc.movedCol,targetCol=afc.targetCol;movedCol.width=col.colWidth;movedCol.id=col.id;if(grid._isMultiColumnGrid){oCols=$.extend(true,[],grid._oldCols);aObj=grid._analyzeColumnMovingObjects(col.id,target,after,isToFix);grid._rearrangeArray(oCols,aObj.from.dMCHIndex,1,aObj.at.dMCHIndex);movedCol.oCols=oCols;if(movedCol.length>1){nW=0;movedCol.length=$.grep(aObj.from.children,function(col){var v=!col.hidden;nW+=v?parseFloat(col.width):0;return v}).length;movedCol.width=nW}}this._performDomColumnMoveByIndexes(movedCol,targetCol,after,isToFix)},_performDomColumnMoveByIndexes:function(movedCol,targetCol,after,isToFix){var grid=this.grid,area={},$fTbl,$ufTbl,w=isToFix?movedCol.width:-movedCol.width;this._updateWidths(w);$fTbl=grid.fixedHeadersTable();$ufTbl=grid.headersTable();area.from=$fTbl;area.to=$ufTbl;if(isToFix){area=this._swapElements(area)}if(grid.options.fixedHeaders===true){grid._moveCols({from:area.from.children("colgroup"),to:area.to.children("colgroup"),ignoreDataSkip:true},movedCol,targetCol,after)}if(grid._isMultiColumnGrid){if(!movedCol.nonData){this._fixUnfixMCHColumn(movedCol.id,{fixedThead:$fTbl.children("thead"),unfixedThead:$ufTbl.children("thead"),isToFix:isToFix,after:after},movedCol.oCols)}else{grid._moveColumnInBodyFooter({trsFrom:area.from.find("thead").children("tr[data-mch-level="+grid._maxLevel+"]"),trsTo:area.to.find("thead").children("tr[data-mch-level="+grid._maxLevel+"]"),ignoreDataSkip:true},movedCol,targetCol,after)}}grid._moveColumnInBodyFooter({trsFrom:area.from.find("thead").children("tr:not([data-mch-level])"),trsTo:area.to.find("thead").children("tr:not([data-mch-level])"),ignoreDataSkip:true},movedCol,targetCol,after);area.from=grid.fixedBodyContainer().children("table");area.to=grid.element;if(isToFix){area=this._swapElements(area)}grid._moveColumnInBodyFooter({trsFrom:area.from.children("tbody").children("tr"),trsTo:area.to.children("tbody").children("tr"),ignoreDataSkip:true},movedCol,targetCol,after);grid._moveCols({from:area.from.children("colgroup"),to:area.to.children("colgroup"),ignoreDataSkip:true},movedCol,targetCol,after);area.from=grid.fixedFootersTable();area.to=grid.footersTable();if(isToFix){area=this._swapElements(area)}if(grid.options.fixedFooters===true){grid._moveCols({from:area.from.children("colgroup"),to:area.to.children("colgroup"),ignoreDataSkip:true},movedCol,targetCol,after)}grid._moveColumnInBodyFooter({trsFrom:area.from.children("tfoot").children("tr"),trsTo:area.to.children("tfoot").children("tr"),ignoreDataSkip:true},movedCol,targetCol,after);this._updateHScrollbarWidth(w)},_getColumnWidth:function(col,$th){var w,grid=this.grid,$tbl,$col,funcGetWidth=function(){$th=$th||this._getTH(col.key);return $th.length===1&&$th.is(":visible")?$th.outerWidth():col.width||0};if(grid._isMultiColumnGrid){return funcGetWidth()}$tbl=col.fixed?grid.fixedBodyContainer().children("table"):this.element;$col=$tbl.find(">colgroup>col").eq(grid.getVisibleIndexByKey(col.key,true));w=$col.length?parseInt($col.width(),10):0;return w||parseInt(col.width,10)||funcGetWidth()},_updateGridWidth:function(){var grid=this.grid;grid._gridContentWidth=grid.element.width();if(!this._isVirtualGrid()){grid._gridInnerWidth=grid.scrollContainer().width();if(grid.options.height){grid._gridInnerWidth+=grid._scrollbarWidth()}}else{grid._gridInnerWidth=grid._vdisplaycontainer().width()+grid._scrollbarWidth()}},_refreshDOMOnUnfixing:function(colObj){var grid=this.grid,fDirRight=this.options.fixingDirection==="right";this._populateContainers();if($.ig.util.isIE10){grid._hscrollbar().width("")}this._updateGridWidth();grid._columnMovingResets();grid._hscrollbarcontent().scrollLeft(0);if(!colObj.nonData){this._changeStyleHeaderButton(colObj.id,false,colObj.isGroupHeader)}if(this._isVirtualGrid()){grid._scrollContainer().scrollTop(0);this._updateHScrollbarWidth();grid._resetVirtualDom();if(this._isContinuousVirtualization()){grid._setScrollContainerScrollTop(0)}if(fDirRight){this._adjustVirtWidthOnFixingRight(false)}}else{this._containers.body.unfixedContainer.scrollTop(0)}if(grid._fixedColumns.length===0&&(!this._getDataSkippedColumnsLength(true)||fDirRight)){this._removeFixedContainer();if(fDirRight&&!grid.options.fixedHeaders){grid._hscrollbarcontent().css("overflow-y","scroll")}}else if(this.options.syncRowHeights){this.checkAndSyncHeights()}if(fDirRight){this._removeCellPaddingForAllColumns(false)}if(grid._gridHasWidthInPercent()){this._setMinWidthForGridContainer()}grid._updateVerticalScrollbarCellPadding()},_refreshDOMOnFixing:function(id,isInit){var grid=this.grid,fDir=this.options.fixingDirection,v=this._isVirtualGrid();this._updateGridWidth();if(isInit){if(this._containers&&this._containers.body){if(fDir==="left"){this._containers.body.unfixedTable.addClass(this.css.unfixedTableLeft)}else{this._containers.body.unfixedTable.addClass(this.css.unfixedTableRight);this._adjustWidthOnFixingRight()}}}grid._columnMovingResets();if(!_aNull(id)){this._changeStyleHeaderButton(id,true)}this._containers.body.unfixedContainer.scrollTop(0);if(v){grid._scrollContainer().scrollTop(0);this._updateHScrollbarWidth();grid._resetVirtualDom();if(isInit){this._attachVirtualizationEvents()}if(this._isContinuousVirtualization()){this._containers.body.fixedContainer.scrollTop(this._containers.body.unfixedContainer.scrollTop())}if(!grid._outerHScrollbar){grid._hscrollbarcontent().css("overflow-y","hidden")}if(fDir==="right"){this._adjustVirtWidthOnFixingRight(true)}}if(grid._gridHasWidthInPercent()){this._setMinWidthForGridContainer();if(isInit&&v){grid._updateHScrollbarVisibility()}}this._checkAndRenderHScrlbarCntnr();grid._hscrollbarcontent().scrollLeft(0);if(grid._initialized){grid._updateVerticalScrollbarCellPadding()}if(this.options.syncRowHeights){this.checkAndSyncHeights()}},_setMinWidthForGridContainer:function(w){var $fc=this._mainFixedCntnr||this._containers.body.fixedContainer,$gc=this.grid.container();if(this.grid.hasFixedColumns()&&$fc.length){w=w||parseFloat($fc[0].style.width)||$fc.outerWidth();w+=parseFloat(this.options.minimalVisibleAreaWidth);$gc.css("min-width",w+"px")}else{$gc.css("min-width","")}},_couldPerformUnfixing:function(colObj,target){var grid=this.grid,mchLevel,$th,tCol;if(!!colObj.col.fixed===false){colObj.result=false;colObj.error=this._getLocaleValue("alreadyUnfixedError");return colObj}if(colObj.col.hidden){colObj.result=false;colObj.error=this._getLocaleValue("alreadyHiddenError");return colObj}if(!_aNull(target)){tCol=grid.columnByKey(target);if(!tCol){colObj.result=false;colObj.error=this._getLocaleValue("targetNotFoundError").replace("{key}",target);return colObj}if(tCol.fixed){colObj.result=false;colObj.error=this._getLocaleValue("unfixingRefusedError");return colObj}}$th=this._getTH(colObj.id);if(grid._isMultiColumnGrid){mchLevel=$th.closest("tr").attr("data-mch-level");if(mchLevel&&parseInt(mchLevel,10)!==grid._maxLevel){colObj.result=false;colObj.error=this._getLocaleValue("ActionNotAllowedForChildHeaderColumnError");return colObj}}colObj.colWidth=this._getColumnWidth(colObj.col,$th);if(!this.checkUnfixingAllowed(colObj.children)){colObj.result=false;colObj.error=this._getLocaleValue("unfixingRefusedError");return colObj}return colObj},_couldPerformFixing:function(colObj,target){var grid=this.grid,gridWidth,mchLevel,widthFixedCntr,$th,colWidth,tCol,vScrlBarW;if(colObj.col.fixed){colObj.result=false;colObj.error=this._getLocaleValue("alreadyFixedError");return colObj}if(colObj.col.hidden||!grid._initialized&&$.inArray(colObj.col,grid._initialHiddenColumns)>-1){colObj.result=false;colObj.error=this._getLocaleValue("alreadyHiddenError");return colObj}if(!_aNull(target)){tCol=grid.columnByKey(target)||this.grid._getMultiHeaderColumnById(target);if(!tCol){colObj.result=false;colObj.error=this._getLocaleValue("targetNotFoundError").replace("{key}",target);return colObj}if(!tCol.fixed){colObj.result=false;colObj.error=this._getLocaleValue("fixingRefusedError");return colObj}}gridWidth=grid.container().outerWidth();$th=this._getTH(colObj.id);if(grid._isMultiColumnGrid){mchLevel=$th.closest("tr").attr("data-mch-level");if(mchLevel&&parseInt(mchLevel,10)!==grid._maxLevel){colObj.result=false;colObj.error=this._getLocaleValue("ActionNotAllowedForChildHeaderColumnError");return colObj}}if(!this.checkFixingAllowed(colObj.children,colObj.isGroupHeader)){colObj.result=false;colObj.error=this._getLocaleValue("fixingRefusedError");return colObj}if(grid.hasFixedColumns()){widthFixedCntr=this._containers.body.fixedContainer.outerWidth()}if(isNaN(widthFixedCntr)){widthFixedCntr=0}colWidth=this._getColumnWidth(colObj.col,$th);colObj.colWidth=colWidth;vScrlBarW=this._isVirtualGrid()||grid._initialized&&grid.hasVerticalScrollbar()||grid.options.height?grid._scrollbarWidth():0;if(colWidth+widthFixedCntr+vScrlBarW>=gridWidth-parseInt(this.options.minimalVisibleAreaWidth,10)){colObj.result=false;colObj.error=this._getLocaleValue("fixingRefusedMinVisibleAreaWidthError");return colObj}return colObj},checkFixingAllowed:function(columns){var i,visibleColumnsCount=0;for(i=0;i-1){grid._rearrangeArray(grid._oldCols,aObj.from.dMCHIndex,1,aObj.at.dMCHIndex)}this._setFixingStateByCol(aObj.from.colMCHObj||aObj.from.colObj,isToFix);children=aObj.from.children.filter(function(col){return col.hidden===false});if(isToFix){targetColInfo=!_aNull(targetKey)?grid._getColumnInfo(targetKey,grid._fixedColumns):null;tInd=!_aNull(targetColInfo)?targetColInfo.index:grid._fixedColumns.length;grid._fixedColumns.insertRange(tInd,children)}else{grid._fixedColumns.splice(grid._getColumnInfo(children[0].key,grid._fixedColumns).index,children.length)}grid._columnMovingResets();return aObj},fixColumn:function(colIdentifier,target,after){if($.type(arguments[1])==="boolean"){target=arguments[2];after=arguments[3]}var col,res,children,isGroupHeader,colKey,aObj,grid=this.grid,mch,fixedCols=grid._fixedColumns,isInit=fixedCols.length===0;isGroupHeader=this.isGroupHeader(colIdentifier);res={error:this._getLocaleValue("noneError"),result:true,col:null,isInit:isInit,isGroupHeader:isGroupHeader};if(!isGroupHeader){col=this._getColById(colIdentifier);res.col=col;if(!col){res.result=false;res.error=this._getLocaleValue("notValidIdentifierError");return res}res.col=col;colKey=col.key;children=[col];res.id=colKey;delete col.oWidth}else{colKey=colIdentifier;res.id=colKey;mch=this.grid._getMultiHeaderColumnById(colIdentifier);if(!mch){res.result=false;res.error=this._getLocaleValue("notValidIdentifierError");return res}res.col=mch;children=mch.children}res.children=children;res=this._couldPerformFixing(res,target);if(!res.result){return res}if(res.colWidth!==parseFloat(res.col.width)){res.col.width=res.colWidth}after=$.type(after)==="boolean"?after:true;if(isInit&&!this.element.data("fixingApplied")){this._renderMainFixedContainer();this.fixNonDataColumns()}if(!this._containers||!this._containers.body){this._populateContainers()}this._performDomColumnMove(res,target,after,true);aObj=this._rearrangeColumns(colKey,target,after,true);grid._hasFixedColumns=true;this._refreshDOMOnFixing(res.id,res.isInit);grid._onFixedColumnsChanged({isToFix:true,id:colIdentifier,colWidth:res.colWidth,children:res.children,isGroupHeader:isGroupHeader,isInit:isInit,start:aObj.from.dIndex,length:aObj.from.children.length,at:aObj.at.dIndex});if(grid.element.igScroll!==undefined){this._updateIgScroll(true)}return res},_updateIgScroll:function(applySettings){var grid=this.grid,scrollContainer=this._containers.body.unfixedContainer,fixedContainer=this._containers.body.fixedContainer,scrollSettings=grid.options.scrollSettings;scrollSettings.scrollTop=0;scrollSettings.scrollLeft=0;if(scrollContainer.data("igScroll")){scrollContainer.igScroll("refresh");if(this._containers.body.fixedTable.length>0){scrollContainer.igScroll("option","syncedElemsV",[this._containers.body.fixedTable])}if(grid.options.virtualization===true||grid.options.rowVirtualization===true){scrollContainer.igScroll("option","scrollWidth",grid._calculateContainerWidth());scrollContainer.on("iggridrendered",function(){if(applySettings){scrollContainer.igScroll("option",scrollSettings)}grid._enableVirtualTouchScrollbars(scrollContainer)})}else{if(applySettings){scrollContainer.igScroll("option",scrollSettings)}if($(".igscroll-hnative-outer",grid.container()).length&&grid.fixingDirection()==="left"){$(".igscroll-hnative-outer",grid.container()).css("left",fixedContainer.width())}else if($(".igscroll-hcontainer",grid.container()).length&&grid.fixingDirection()==="left"){$(".igscroll-hcontainer",grid.container()).css("left",fixedContainer.width())}if($(".igscroll-hnative-outer",grid.container()).length&&grid.fixingDirection()==="right"){$(".igscroll-hnative-outer",grid.container()).css("right",fixedContainer.width())}else if($(".igscroll-hcontainer",grid.container()).length&&grid.fixingDirection()==="right"){$(".igscroll-hcontainer",grid.container()).css("right",fixedContainer.width())}}}else{scrollContainer.bind("igscrollrendered",$.proxy(this._onIgScrollCreated,this))}if(fixedContainer.data("igScroll")){fixedContainer.igScroll("refresh");if(grid.options.virtualization===true||grid.options.rowVirtualization===true){fixedContainer.igScroll("option","scrollOnlyVBar",true);fixedContainer.igScroll("option","scrollbarV",grid._scrollContainer());fixedContainer.data("igScroll")._content=grid._scrollContainer().children(":first-child")}else{fixedContainer.igScroll("option","syncedElemsV",[this._containers.body.unfixedTable])}if(applySettings){fixedContainer.igScroll("option",scrollSettings)}}else{fixedContainer.bind("igscrollrendered",$.proxy(this._onIgScrollCreated,this))}},_onIgScrollCreated:function(){this._updateIgScroll()},_attachVirtualizationEvents:function(){var grid=this.grid;grid.fixedBodyContainer().bind({mouseenter:function(){grid._isMouseOverVirtualTable=true},mouseleave:function(){grid._isMouseOverVirtualTable=false}})},fixNonDataColumns:function(){var grid=this.grid,cols=this._getDataSkippedCols(),w=this._getDataSkippedWidth(false,cols),len=cols.length;if(this.options.fixingDirection==="left"&&len){if(!$("#"+grid.id()+"_mainFixedContainer").length&&!this.element.data("fixingApplied")){this._renderMainFixedContainer()}grid._hasFixedDataSkippedColumns=true;this._performDomColumnMoveByIndexes({start:0,length:len,width:w,nonData:true},{start:-1,length:0},false,true);this._refreshDOMOnFixing(null,true);if(this.options.syncRowHeights){this.checkAndSyncHeights()}if(this._isVirtualGrid()){this.grid._hscrollbarcontent().css("overflow-y","hidden")}this._checkAndRenderHScrlbarCntnr();grid._hasFixedColumns=true;this.grid._onFixedColumnsChanged({isToFix:true,nonData:true,isInit:true,length:len})}},fixDataSkippedColumns:function(){this.fixNonDataColumns()},unfixNonDataColumns:function(){var w,cols=this._getDataSkippedCols(true),len=cols.length;if(this.options.fixingDirection==="left"&&len){w=this._getDataSkippedWidth(true,cols);this._performDomColumnMoveByIndexes({start:0,length:len,width:w,nonData:true},{start:0,length:0},false,false);this.grid._hasFixedColumns=!!this.grid._fixedColumns.length;this.grid._hasFixedDataSkippedColumns=false;this._refreshDOMOnUnfixing({nonData:true,width:w});this.grid._onFixedColumnsChanged({isToFix:false,nonData:true,length:len})}},unfixDataSkippedColumns:function(){this.unfixNonDataColumns()},_getDataSkippedWidth:function(isFixed,cols){var w=0;cols=cols||this._getDataSkippedCols(isFixed);cols.each(function(i,c){w+=parseFloat(c.style.width)});return w},_getDataSkippedCols:function(isFixed){if(!this._containers||!this._containers.body){this._populateContainers()}var $table=isFixed?this._containers.body.fixedTable:this._containers.body.unfixedTable;return $table.find("colgroup col[data-skip]")},_getDataSkippedColumnsLength:function(isFixed){return this._getDataSkippedCols(isFixed).length},unfixAllColumns:function(){if(!this.grid.hasFixedColumns()){return}var i,self=this,colsToUnfix=[];if(this.grid._isMultiColumnGrid){this.grid.fixedHeadersTable().children("thead").children("tr[data-mch-level]:nth-child(1)").children("th:not([data-skip])").each(function(index,th){var $th=$(th),id;id=$th.attr("data-mch-id");id=id||$th.attr("id").replace(self.grid.id()+"_","");colsToUnfix.push(id)})}else{colsToUnfix=$.map(this.grid._fixedColumns,function(c){return c.key})}if(colsToUnfix.length>0){for(i=colsToUnfix.length-1;i>=0;i--){this.unfixColumn(colsToUnfix[i])}}},_removeFixedContainer:function(){this.element.data("fixingApplied",false);var grid=this.grid,scrollContainer,v=this._isVirtualGrid();if(v){this._removeFixedContainerVirtualization()}if(!this._containers){this._populateContainers()}scrollContainer=this._containers.body.unfixedContainer;scrollContainer.unbind(".columnFixing");this.element.unbind(".columnFixing");if(this._containers&&this._containers.body){this._containers.body.unfixedTable.removeClass(this.css.unfixedTableLeft).removeClass(this.css.unfixedTableRight);if(!v){this._containers.body.unfixedTable.css("height","")}}if(!_aNull(this._DOMMouseScroll)){scrollContainer.unbind({DOMMouseScroll:this._DOMMouseScroll});this._DOMMouseScroll=null}grid.fixedContainer().remove();if(this.options.fixingDirection==="right"&&!v){scrollContainer.css({"overflow-y":"auto"});this.grid._hscrollbarcontent().css({"overflow-y":"scroll"})}if(!grid._outerHScrollbar){grid._hscrollbar().css({width:"100%",left:0})}if(grid.options.width===null&&grid.container()[0].style.width===""){ grid.container().css("width","")}if(grid.options.enableHoverStyles){this._dettachHoverEvents()}$("#"+grid.id()+"_floatCompensate").remove()},_removeFixedContainerVirtualization:function(){var $virtCntnr=this.grid._virtualcontainer();$virtCntnr.children("colgroup").children("col[data-fixed-col]").remove();$virtCntnr.children("tbody").children("tr").children("td[data-fixed-container]").remove()},_getRowsHtml:function($unfixedArea,type){var html="",attrs,i,j,len,tr,a,h,av,an,synch=this.options.syncRowHeights,trs=$unfixedArea.children("tr");this._heights=this._heights||{};this._heights[type]=[];len=trs.length;for(i=0;i'),cssClass=this.options.fixingDirection==="left"?this.css.leftFixedContainer:this.css.rightFixedContainer;if(this.options.fixingDirection==="left"){$td.prependTo($tr)}else{$tr.children("td:first").removeAttr("colspan");if(type==="body"){$td.insertBefore($tr.children("td:last"))}else{$td.attr("colspan",2);$td.appendTo($tr)}}$cntnr=this._renderContainer($td,$table,type);$cntnr.addClass(cssClass);this._containers[type].fixedContainer.width(0);this._containers[type].fixedTable.width(0);return $cntnr},_renderContainer:function($mainFixedCntr,$table,type){var fixedContainerId,$fixedContainer,$fixedTable,html;switch(type){case"header":fixedContainerId=this.grid.id()+"_fixedHeaderContainer";html="";break;case"footer":fixedContainerId=this.grid.id()+"_fixedFooterContainer";html='';break;default:fixedContainerId=this.grid.id()+"_fixedBodyContainer";html=''+this._getRowsHtml($table.children("tbody"),type)+"";break}$fixedContainer=$('
').appendTo($mainFixedCntr);if(type==="body"){$fixedContainer.attr("data-scroll","true")}$fixedTable=$('"+html+"
");$fixedTable.appendTo($fixedContainer);this._containers[type]=this._containers[type]||{};this._containers[type].fixedContainer=$fixedContainer;this._containers[type].fixedTable=$fixedTable;this._containers[type].unfixedContainer=$table.closest("div");this._containers[type].unfixedTable=$table;$fixedContainer.css({overflow:"hidden",position:"relative"});if(type==="header"){this._containers.header.fixedContainer.addClass(this._containers.header.unfixedContainer.attr("class"))}return $fixedContainer},_scrollTopFixedContainer:function(direction){var fC=this._scrollContainers.fCntnr,ufC=this._scrollContainers.ufCntnr,scrollTop=fC.scrollTop();direction=direction||0;scrollTop-=direction*this.options.scrollDelta;scrollTop=scrollTop<0?0:scrollTop;fC.scrollTop(scrollTop);ufC.scrollTop(scrollTop)},_syncScrollTopContainers:function($cntnr,$cntnrToScroll){$cntnrToScroll.scrollTop($cntnr.scrollTop())},_bindEvents:function(){var grid=this.grid,self=this,fc=this._scrollContainers.fCntnr,ufc=this._scrollContainers.ufCntnr;if(grid.options.enableHoverStyles){this._attachHoverEvents()}if(this._isContinuousVirtualization()){ufc.bind({scroll:function(){self._syncScrollTopContainers($(this),fc)}})}fc.delegate("tr, td",{focus:function(){if($.ig.util.isIE){setTimeout(function(){self._syncScrollTopContainers(fc,ufc)},0)}else{self._syncScrollTopContainers(fc,ufc)}}});if(grid.element.igScroll!==undefined){if((grid.options.virtualization||grid.options.rowVirtualization)&&!ufc.data("igScroll")){ufc.igScroll({modifyDOM:false,scrollbarType:"none"});ufc.data("igScroll")._bKeyboardNavigation=false;ufc.data("igScroll")._bMixedEnvironment=true}fc.igScroll({modifyDOM:false,scrollbarType:"none"});fc.data("igScroll")._bKeyboardNavigation=false;if(grid.options.virtualization||grid.options.rowVirtualization){fc.data("igScroll")._bMixedEnvironment=true}fc.css("-ms-touch-action","none");ufc.on("iggriddatarendered",$.proxy(this._onIgScrollCreated,this))}if(this._isVirtualGrid()){return}this._onMouseWheelHandler=function(event){var evt,direction,w,d,st;evt=event.originalEvent;w=evt.wheelDelta;d=evt.detail;if(d){if(w){direction=w/d/40*d>0?1:-1}else{direction=-d/3}}else{direction=w/120}st=fc.scrollTop();self._scrollTopFixedContainer(direction);if(grid.options.height===null||st===fc.scrollTop()){return true}return false};this._DOMMouseScroll=function(event){var dir=-1,delta;delta=-event.originalEvent.detail/3;if(delta>0){dir=1}self._scrollTopFixedContainer(dir);if(grid.options.height===null){return true}event.preventDefault()};if(this.options.fixingDirection==="right"){this._bindEventsToContainers(fc,ufc);this.element.bind({"mousewheel.columnFixing":this._onMouseWheelHandler,"DOMMouseScroll.columnFixing":this._DOMMouseScroll});ufc.bind({"scroll.columnFixing":function(){self._syncScrollTopContainers($(this),fc)}})}else{this._bindEventsToContainers(ufc,fc)}},_bindEventsToContainers:function($scrollable,$hiddenScroll){var self=this,selection=this.grid.element.data("igGridSelection");$scrollable.bind({"scroll.columnFixing":function(){self._syncScrollTopContainers($(this),$hiddenScroll)}});if($.ig.util.isIE){$scrollable.bind({"mousewheel.columnFixing":function(e){self._onMouseWheelHandler(e)}})}$hiddenScroll.bind({"mousewheel.columnFixing":this._onMouseWheelHandler,"DOMMouseScroll.columnFixing":this._DOMMouseScroll,"keydown.columnFixing":function(e){if(!selection){if(e.keyCode===$.ui.keyCode.UP){self._scrollTopFixedContainer(1)}else if(e.keyCode===$.ui.keyCode.DOWN){self._scrollTopFixedContainer(-1)}}}})},_renderMainFixedContainerInVirtGrid:function(){this._populateContainers();var grid=this.grid,$col,$pScrlbar,html,$colgroup,$hscrlbar=grid._vhorizontalcontainer(),$td,$vContainer=grid._virtualcontainer(),fixedBodyContainer,scrollContainer,scrollContainerHeight;$colgroup=$vContainer.children("colgroup:first");scrollContainer=this._containers.body.unfixedContainer;$col=$("").attr("data-fixed-col",this.options.fixingDirection);if(this.options.fixingDirection==="left"){$col.prependTo($colgroup)}else{$col.insertBefore($colgroup.children("col:last"))}fixedBodyContainer=this._renderContainerInVirtGrid(this._containers.body.unfixedContainer.closest("tr"),this._containers.body.unfixedTable,"body");fixedBodyContainer.addClass(grid.css.gridVirtualScrollDivClass).addClass(grid.css.gridScrollDivClass);if($.ig.util.isIE){fixedBodyContainer.children("table").height(scrollContainer.children("table").height())}scrollContainerHeight=scrollContainer.height();fixedBodyContainer.height(scrollContainerHeight);fixedBodyContainer.bind(grid._mouseClickEventHandlers);if(grid.options.showHeader){this._renderContainerInVirtGrid(this._containers.header.unfixedContainer.closest("tr"),this._containers.header.unfixedTable,"header");html=this._getRowsHtml(this._containers.header.unfixedTable.children("thead"),"header");this._containers.header.fixedTable.children("thead").html(html)}if(grid.options.showFooter&&this._containers.footer){this._renderContainerInVirtGrid(this._containers.footer.unfixedContainer.closest("tr"),this._containers.footer.unfixedTable,"footer");if(grid.options.fixedFooters){this._containers.footer.fixedContainer.bind(grid._mouseClickEventHandlers)}html=this._getRowsHtml(grid.footersTable().children("tfoot"),"footer");grid.fixedFootersTable().children("tfoot").html(html)}grid._fixedTable=fixedBodyContainer.children("table");if(!$hscrlbar.length){$hscrlbar=grid._hscrollbar()}$pScrlbar=$hscrlbar.parent();if($pScrlbar.is("td")){$td=$('');if(this.options.fixingDirection==="left"){$td.insertBefore($hscrlbar.closest("td"))}else{$td.attr("colspan",2).insertAfter($hscrlbar.closest("td").removeAttr("colspan"))}}this._scrollContainers={fCntnr:fixedBodyContainer,ufCntnr:scrollContainer};this._bindEvents()},_renderMainFixedContainer:function(){this.element.data("fixingApplied",true);if(this._isVirtualGrid()){return this._renderMainFixedContainerInVirtGrid()}var grid=this.grid,gridId=grid.id(),html,fDir=this.options.fixingDirection,scrCntnrTbl,fixedBodyTable,fixedHeaderContainer,fixedFooterContainer,scrollContainer,$mainFixedContainer,fixedBodyContainer,mainFixedContainerId=grid.id()+"_mainFixedContainer",scrollContainerHeight;$mainFixedContainer=$('
');this._mainFixedCntnr=$mainFixedContainer;$mainFixedContainer.css({width:"0px",overflow:"hidden",position:"relative"});scrollContainer=grid.scrollContainer();if(scrollContainer.length){scrCntnrTbl=scrollContainer.children("table")}else{scrollContainer=grid.element;scrCntnrTbl=grid.element}$mainFixedContainer.addClass(this.css.fixedContainer);$mainFixedContainer.insertBefore(grid.options.fixedHeaders&&grid.options.showHeader?grid.headersTable().closest("div"):scrollContainer);if(fDir==="left"){$mainFixedContainer.css({"float":"left",left:0});$mainFixedContainer.addClass(this.css.leftFixedContainer)}else{$mainFixedContainer.css({"float":"right",right:0});$mainFixedContainer.addClass(this.css.rightFixedContainer)}$mainFixedContainer.attr("data-fixing-direction",fDir);$mainFixedContainer.bind(this.grid._mouseClickEventHandlers);fixedBodyContainer=this._renderContainer($mainFixedContainer,scrCntnrTbl,"body");fixedBodyContainer.attr("data-fixing-direction",fDir);if(grid.options.height!==null&&$.ig.util.isIE){fixedBodyContainer.find("table").height(scrCntnrTbl.height())}if(grid.options.height!==null){scrollContainerHeight=scrollContainer.height();if(this.grid._hscrollbar().is(":visible")){scrollContainerHeight+=this.grid._hscrollbar().outerHeight()}}fixedBodyContainer.height(scrollContainerHeight);fixedBodyTable=fixedBodyContainer.find("table");if(grid.options.showHeader){if(grid.options.fixedHeaders&&grid.options.height!==null){fixedHeaderContainer=this._renderContainer($mainFixedContainer,grid.headersTable(),"header");fixedHeaderContainer.prependTo($mainFixedContainer)}else{if(grid.element.find("thead").next().is("tbody")){$("").insertBefore(fixedBodyContainer.find("tbody"))}else{if(grid.element.find("thead").prev().is("colgroup")){$("").insertAfter(fixedBodyContainer.find("colgroup"))}else{$("").insertAfter(fixedBodyContainer.find("tbody"))}}}}if(grid.options.showFooter){if(grid.options.fixedFooters&&grid.options.height!==null){fixedFooterContainer=this._renderContainer($mainFixedContainer,grid.footersTable(),"footer");this._containers.footer.fixedTable.css("whiteSpace",this._containers.footer.unfixedTable.css("whiteSpace"));fixedFooterContainer.appendTo($mainFixedContainer)}else{$('').insertAfter(fixedBodyContainer.find("tbody"))}}html=this._getRowsHtml(grid.headersTable().children("thead"),"header");grid.fixedHeadersTable().children("thead").html(html);html=this._getRowsHtml(grid.footersTable().children("tfoot"),"footer");grid.fixedFootersTable().children("tfoot").html(html);if(this.options.syncRowHeights){this._setRowHeights("header");this._setRowHeights("body");this._setRowHeights("footer")}grid._fixedTable=fixedBodyTable;if(fDir==="right"){fixedBodyContainer.css({"overflow-y":"auto"});scrollContainer.css({"overflow-y":"hidden"});this.grid._hscrollbarcontent().css({overflow:"","overflow-y":"hidden"})}this._scrollContainers={fCntnr:fixedBodyContainer,ufCntnr:scrollContainer};this._bindEvents();$('
').insertAfter(grid.container())},_setRowHeights:function(type){var i,heights=this._heights[type],heightsLength=heights.length;for(i=0;i0){functionPopulateContainers($unfixedHeaders.parent("div"),grid.fixedHeaderContainer(),"header")}functionPopulateContainers(scrollContainer,$fixedBodyContainer,"body");if($unfixedFooters.length>0&&$unfixedFooters[0].nodeName!=="TFOOT"){functionPopulateContainers($unfixedFooters,grid.fixedFooterContainer(),"footer")}},_fixUnfixMCHColumn:function(colId,fixingParams,oCols){var i,grid=this.grid,col,fixedThead=fixingParams.fixedThead,unfixedThead=fixingParams.unfixedThead,isToFix=fixingParams.isToFix,after=fixingParams.after,area=isToFix?fixedThead:unfixedThead,mchInstance=grid.element.data("igGridMultiColumnHeaders");oCols=oCols||grid._oldCols;if(!mchInstance){return}for(i=0;ith:not([data-skip])").length||!cells.length){$ths.appendTo($tr)}else{for(i=0;i0?cells[i-1]:null}else{for(i+=cols.length;i').appendTo(this._containers.body.fixedContainer)}else if($fixedScroller.length===1&&hscrollbar.length===1){if(hscrollbar.is(":visible")){$fixedScroller.show()}else{$fixedScroller.hide()}}},syncRowsHeights:function($trs,$anotherRows){var i,len=$trs.length,hToSync,h,heights=[];for(i=0;ihToSync?h:hToSync;heights.push(hToSync)}for(i=0;i0&&(Math.abs($fixedTable.outerHeight()-$unfixedTable.outerHeight())>1||Math.abs($lastTr.igOffset().top-$fTRs.last().igOffset().top)>1)){this.syncRowsHeights($fTRs,$ufTRs);fH=$fixedTable.height();ufH=$unfixedTable.height();h=fH>ufH?fH:ufH;$fixedTable.height(h);$unfixedTable.height(h)}},_syncContainerHeights:function(){var $fixedTable,$unfixedTable,containers=this._containers;if(containers&&containers.body){$fixedTable=containers.body.fixedTable;$unfixedTable=containers.body.unfixedTable;if($fixedTable.height()!==$unfixedTable.height()){$fixedTable.height($unfixedTable.height())}}},_adjustWidthOnFixingRight:function(){if(this.options.fixingDirection!=="right"||this.grid._gridHasWidthInPercent()||this._isVirtualGrid()){return}var $mfc,grid=this.grid,c=this._containers.body;if(c.unfixedContainer.width()-c.unfixedTable.width()>=0){$mfc=this._mainFixedCntnr||this._containers.body.fixedContainer;if($mfc.length){$mfc[0].style.width=parseFloat(grid.options.width)-grid.element.width()+"px"}}},_adjustVirtWidthOnFixingRight:function(isToFix){if(this.options.fixingDirection!=="right"){return}var grid=this.grid,w,$tblHeaders,stw,$colgroup=grid._virtualcontainer().children("colgroup"),$colFixed=$colgroup.children("col[data-fixed-col]"),$colUnfixed=$colgroup.children("col:not(:last):not([data-fixed-col])");if($colUnfixed.length){w=$colUnfixed[0].width;this._containers.header.unfixedContainer.width(w);this._containers.footer.unfixedContainer.width(w)}if(grid.options.showHeader&&$colFixed.length){this._containers.header.fixedContainer.width(this._containers.header.fixedContainer.width()+grid._scrollbarWidth()+"px")}if(!isToFix&&!grid._fixedColumns.length){$tblHeaders=$("#"+grid.id()+"_headers_v");stw=$tblHeaders[0].style.width;if(stw&&stw.indexOf("%")===-1){$tblHeaders.width($tblHeaders.width()+grid._scrollbarWidth()+"px")}$tblHeaders.closest("td").attr("colspan",2)}grid._vhorizontalcontainer().css("overflow-y","hidden");this._updateHScrollbarTblWidthsInFixedVirtRight()},_updateFixedColgroupVirt:function(colWidthDelta){var w,$colFixed,$colUnfixed,$colgroup;$colgroup=this.grid._virtualcontainer().children("colgroup");$colFixed=$colgroup.children("col[data-fixed-col]");$colUnfixed=$colgroup.children("col:not(:last):not([data-fixed-col])");w=parseInt($colFixed.attr("width"),10);$colFixed.attr("width",w+colWidthDelta);w=parseInt($colUnfixed.attr("width"),10);$colUnfixed.attr("width",w-colWidthDelta)},getWidthOfFixedColumns:function(fCols,excludeNonDataColumns,includeHidden){var $fTable,w=0,i;if(!this._containers||!this._containers.body){this._populateContainers()}$fTable=this._containers.body.fixedTable;if(excludeNonDataColumns){$fTable.children("colgroup").children("col[data-skip]").each(function(){w+=parseInt($(this).css("width"),10)})}fCols=fCols||this.grid._fixedColumns;if(!fCols||!fCols.length){return w}for(i=0;i0){$hScrollerContainer=grid._hscrollbar();if(scrollContainer.is(":visible")){scW=scrollContainer.width()}else{scW=parseInt(grid.options.width,10)-this.getWidthOfFixedColumns()}$hScrollerContainer.css({left:0});grid._hscrollbarinner().css({width:(grid._hasVerticalScrollbar&&grid.options.fixedHeaders&&fdirLeft?oTableWidth-grid._scrollbarWidth():oTableWidth)+"px",left:0})}},_headerRendered:function(sender,args){if(args.owner.element.attr("id")!==this.grid.element.attr("id")){return}if(this.options.showFixButtons===false){return}var i,j,cs,columnKey,ths,children,isFixed=false,allowFixing=true,grid=this.grid,self=this,cols=grid.options.columns,colsLength=cols.length;if(grid._isMultiColumnGrid){ths=grid.headersTable().children("thead").children("tr[data-mch-level="+grid._maxLevel+"]").children("th");ths.each(function(){var $th=$(this);if($th.attr("data-mch-id")){columnKey=$th.attr("data-mch-id");allowFixing=true;cs=self._getColumnSettingByKey(columnKey);if(cs&&cs.allowFixing===false){return true}for(j=0;j').appendTo($th)}$button=this.grid.container().find("#"+buttonId);if($button.length===0){$button=$("").attr("href","#").attr("data-fixing-indicator","true").attr("id",buttonId);$divHeaderButtonContainer=$columnFixingHeaderIconContainer.find(".ui-iggrid-fixcolumn-headerbuttoncontainer");if($divHeaderButtonContainer.length===0){$divHeaderButtonContainer=$("
").addClass(css.headerButtonIconContainer).appendTo($columnFixingHeaderIconContainer)}$button.appendTo($divHeaderButtonContainer);$("").appendTo($button);$button.bind({mousedown:function(){$(this).trigger("mouseout")},click:function(event){event.preventDefault();event.stopPropagation();if($button.attr("data-fixed")==="true"){self._unfixColumnInternal(columnKey)}else{self._fixColumnInternal(columnKey)}}})}this._changeStyleHeaderButton(columnKey,isFixed)},_getTH:function(id){return this.grid.container().find('th[data-mch-id="'+id+'"],th[id="'+this.grid.id()+"_"+id+'"]')},_changeStyleHeaderButton:function(columnKey,isFixed){var css=this.css,fc,attrVal="true",titleOption="headerFixButtonText",$button=this.grid.container().find("#"+this._id("header_cell","fixing",columnKey)),$span;$span=$button.find("span");if(isFixed){$span.removeClass(css.headerButtonIcon);$span.addClass(css.headerButtonUnfixIcon);titleOption="headerUnfixButtonText"}else{attrVal="false";$span.removeClass(css.headerButtonUnfixIcon);$span.addClass(css.headerButtonIcon)}$button.attr({title:this._getLocaleValue(titleOption),"data-localeid":titleOption,"data-localeattr":"title","data-fixed":attrVal});fc=this.grid.element.data("igGridFeatureChooser");if(fc){fc._setSelectedState("ColumnFixing",columnKey,isFixed,false)}},_dataRendering:function(event,ui){if(ui===undefined){return}if(this.grid.id()!==ui.owner.id()){return}if(this.grid.options.height===null&&this.grid.hasFixedColumns()&&$.ig.util.isIE&&$.ig.util.browserVersion>=9){$("#"+this.grid.id()+"_fixed").height("")}},_dataRendered:function(event,ui){if(ui===undefined||this.grid.id()!==ui.owner.id()){return}var grid=this.grid,fixedContainer,scrollContainer;if(grid.hasFixedColumns()){if(this.options.syncRowHeights){this.checkAndSyncHeights();if(this._isVirtualGrid()&&grid._virtualcontainer().outerHeight()>parseInt(grid.options.height)){grid._initializeHeights()}if($.ig.util.isIE){scrollContainer=this._containers.body.unfixedContainer;fixedContainer=this._containers.body.fixedContainer;this._syncScrollTopContainers(fixedContainer,scrollContainer)}}}},_colCollectionModified:function(){var i=0;this.grid._fixedColumns=[];for(i=0;i=0&&cs[i].columnIndex0){throw new Error($.ig.util.stringFormat(this._getLocaleValue("initialFixingNotApplied"),columnKeys[0],this._getLocaleValue("alreadyHiddenError")))}for(j=0;j0){this.unfixAllColumns()}if(this.grid.hasFixedDataSkippedColumns()){ this.unfixNonDataColumns()}this.grid._hasFixedDataSkippedColumns=false;this.element.data("fixingApplied",false);this.grid.headersTable().find("thead > tr > th").not("[data-skip=true]").each(function(){var th=$(this);th.find("a[data-fixing-indicator=true]").parent().remove()});this._detachEvents();if(this._gridRenderRowHandler!==undefined){this.grid._renderRow=this._gridRenderRowHandler}if(this._gridRenderRecordsForTableHandler){this.grid._renderRecordsForTable=this._gridRenderRecordsForTableHandler}if(this._gridRenderNewRowHandler){this.grid.renderNewRow=this._gridRenderNewRowHandler}if(this._gridDetachColumnHandler){this.grid._detachColumn=this._gridDetachColumnHandler}if(this._gridAttachColumnHandler){this.grid._attachColumn=this._gridAttachColumnHandler}if(this._gridRerenderColgroupsHandler){this.grid._rerenderColgroups=this._gridRerenderColgroupsHandler}if(this._gridRenderColgroupHandler){this.grid._renderColgroup=this._gridRenderColgroupHandler}if(this._gridUpdatePaddingHandler){this.grid._updateVScrollbarCellPaddingHelper=this._gridUpdatePaddingHandler}fc=this.grid.element.data("igGridFeatureChooser");if(fc&&this.renderInFeatureChooser){fc._removeFeature("ColumnFixing")}this._unregisterSetOptionCallback();this._superApply(arguments);return this},_headerCellRendered:function(event,ui){if(ui.owner.element.attr("id")!==this.grid.element.attr("id")){return}if(this._isInitFC!==true){this._initFC()}},_setFixedBodyCntnrHeight:function(scrollContainer,fixedBodyContainer){if(!this._containers||!this._containers.body){this._populateContainers()}var grid=this.grid,hScrlbar,scrollContainerHeight,wperc,v;fixedBodyContainer=fixedBodyContainer||this._containers.body.fixedContainer;scrollContainer=scrollContainer||this._containers.body.unfixedContainer;if(grid.options.height!==null){scrollContainerHeight=scrollContainer.height();hScrlbar=grid._hscrollbar();wperc=grid._gridHasWidthInPercent();v=this._isVirtualGrid();if(hScrlbar.is(":visible")&&(!v||!wperc&&v&&this._isContinuousVirtualization())){scrollContainerHeight+=this.grid._hscrollbar().outerHeight()}}fixedBodyContainer.height(scrollContainerHeight)},_summariesHeightsAdjusting:function(){var $fTbl,$ufTbl,grid=this.grid;if(!grid._initialized){if(grid.options.showFooter&&!grid.options.fixedFooters){grid._updateVerticalScrollbarCellPadding()}return}if(!this._containers||!this._containers.footer){this._populateContainers()}if(grid.options.showFooter&&grid.options.fixedFooters){$fTbl=this._containers.footer.fixedTable;$ufTbl=this._containers.footer.unfixedTable;this._syncHeightsForTables($fTbl,$ufTbl)}},_heightChanged:function(){var grid=this.grid;if(!grid.hasFixedColumns()){return}this._syncTableHeights();this._setFixedBodyCntnrHeight();this._checkAndRenderHScrlbarCntnr();if(this.options.syncRowHeights){this.checkAndSyncHeights()}},_lastColumnWidthAutoAdjusted:function(e,args){var grid=this.grid;if(grid.hasFixedColumns()){if(this.options.fixingDirection==="right"&&!grid._initialized){grid._hscrollbarcontent().css("overflow-y","hidden");this._updateHScrollbarWidth();this._adjustWidthOnFixingRight()}if(args&&args.specialColumnsWidth){this._recalcTableWidths();this._updateHScrollbarWidth();this._updateGridWidth();grid._updateHScrollbarVisibility()}}},_gridHeightChanging:function(e,arg){if(!this._containers.body){return}if(this._isVirtualGrid()){return}var scrollContainerHeight,diff,pc=this.grid._prevContainerHeight,$fixedBodyContainer=this.grid.fixedBodyContainer();if($fixedBodyContainer.length===0){return}scrollContainerHeight=arg.ch-arg.h;if(this.grid._hscrollbar().is(":visible")){scrollContainerHeight+=this.grid._hscrollbar().outerHeight()}$fixedBodyContainer.height(scrollContainerHeight);diff=Math.abs(pc-this.grid.container().height());$fixedBodyContainer.height(scrollContainerHeight-diff)},_initFC:function(){var i,fc,isMCH=this.grid._isMultiColumnGrid,o=this.options,cols=this.grid.options.columns,colsLength=cols.length,cs,columnKey;this._isInitFC=true;fc=this.grid.element.data("igGridFeatureChooser");if(fc!==null&&fc!==undefined&&this.renderInFeatureChooser&&o.showFixButtons){if(isMCH){cols=this.grid._oldCols;colsLength=cols.length}for(i=0;itd:not([data-skip])");unfixedCells=$unfixedRow.find(">td:not([data-skip])");for(i=0;iufH?fH:ufH;$fixedTable.height(h);$unfixedTable.height(h)}},_detachColumn:function(col){if(!this.grid.hasFixedColumns()){return this._gridDetachColumnHandler(col)}var pos,fixed,headerCells,grid=this.grid,$tbl,footerCells;fixed=col.fixed;col.hidden=false;grid._visibleColumnsArray=undefined;pos=grid.getVisibleIndexByKey(col.key);col.hidden=true;grid._visibleColumnsArray=undefined;grid._initializeDetachedContainers();if(grid._isMultiColumnGrid){grid._hideMultiHeaderCells(grid._headerCells,col.key)}$tbl=fixed?grid.fixedHeadersTable():grid.headersTable();headerCells=grid._isMultiColumnGrid?$tbl.children("thead").children("tr:not([data-mch-level])").not("[data-skip=true]"):$tbl.children("thead").children("tr").not("[data-skip=true]");grid._detachCells(headerCells,function(row){return row.filter(":not([data-new-row],[data-add-row])").children("th, td").not("[data-skip=true]")},pos,grid._detachedHeaderCells,col.key);$tbl=fixed?grid.fixedFootersTable():grid.footersTable();footerCells=$tbl.children("tfoot").children("tr");grid._detachCells(footerCells,function(row){return row.children("td").not("[data-skip=true]")},pos,grid._detachedFooterCells,col.key)},_attachColumn:function(col){if(!this.grid.hasFixedColumns()){this._gridAttachColumnHandler(col);return}var headerCells,footerCells,fixed=col.fixed,$tbl,grid=this.grid,pos=grid.getVisibleIndexByKey(col.key);grid._initializeDetachedContainers();if(grid._isMultiColumnGrid){grid._showMultiHeaderCells(col.key)}$tbl=fixed?grid.fixedHeadersTable():grid.headersTable();headerCells=grid._isMultiColumnGrid?$tbl.children("thead").children("tr:not([data-mch-level])").not("[data-skip=true]"):$tbl.children("thead").children("tr").not("[data-skip=true]");grid._attachCells(headerCells,function(row){return row.children("th, td").not("[data-skip=true]")},pos,grid._detachedHeaderCells,col.key);$tbl=fixed?grid.fixedFootersTable():grid.footersTable();footerCells=$tbl.children("tfoot").children("tr");grid._attachCells(footerCells,function(row){return row.children("td").not("[data-skip=true]")},pos,grid._detachedFooterCells,col.key)},_rerenderColgroups:function(){var grid=this.grid,c=this._containers,fc=grid.hasFixedColumns();if(fc){if(this._isVirtualGrid()){c.body.fixedTable.children("colgroup").remove();c.header.fixedTable.children("colgroup").remove();c.footer.fixedTable.children("colgroup").remove()}else{grid.fixedContainer().find("colgroup").remove()}}this._gridRerenderColgroupsHandler.apply(this.grid,arguments)},_renderColgroup:function(table,isHeader,isFooter,autofitLastColumn){var fc=this.grid.hasFixedColumns();if(fc){this._gridRenderColgroupHandler(document.getElementById(table.id+"_fixed"),isHeader,isFooter,false,{fixed:true})}this._gridRenderColgroupHandler(table,isHeader,isFooter,autofitLastColumn)},_resizeEl:function($e,delta){var w=this._calcTblWidth($e,delta);$e[0].style.width=w;return w},_containerResized:function(isFixed,deltaWidth){if(!this.grid.hasFixedColumns()){return}var grid=this.grid,w,v=this._isVirtualGrid();if(!this._containers||!this._containers.body){this._populateContainers()}if(isFixed){deltaWidth=-deltaWidth||0;w=this._resizeEl(this._containers.body.fixedTable,deltaWidth);if(grid.options.fixedHeaders&&grid.options.showHeader){w=this._resizeEl(this._containers.header.fixedTable,deltaWidth)}if(grid.options.fixedFooters&&grid.options.showFooter){w=this._resizeEl(this._containers.footer.fixedTable,deltaWidth)}if(v){this._resizeEl(this._containers.body.fixedContainer,deltaWidth);if(grid.options.fixedHeaders&&grid.options.showHeader){w=this._resizeEl(this._containers.header.fixedContainer,deltaWidth)}if(grid.options.fixedFooters&&grid.options.showFooter){w=this._resizeEl(this._containers.footer.fixedContainer,deltaWidth)}this._updateVirtualDOMWidth(deltaWidth)}else{this._mainFixedCntnr[0].style.width=w}this._updateHScrollbarWidth();this._updateGridWidth();grid._updateHScrollbarVisibility()}if(grid._gridHasWidthInPercent()){this._setMinWidthForGridContainer()}if(this.options.syncRowHeights){this.checkAndSyncHeights()}},_checkGridSupportedFeatures:function(){var self=this;if(this.grid.options._isHierarchicalGrid){throw new Error(this._getLocaleValue("hierarchicalGridNotSupported"))}var i,featureName,gridOptions=this.grid.options,cols=gridOptions.columns,dW=gridOptions.defaultColumnWidth,features=gridOptions.features,featuresLength=features.length;if(gridOptions.width===null||gridOptions.width===""){throw new Error(this._getLocaleValue("noGridWidthNotSupported"))}if(dW){if($.type(dW)==="string"&&dW.indexOf("%")>0){throw new Error(this._getLocaleValue("defaultColumnWidthInPercentageNotSupported"))}}$.each(cols,function(ind,col){var w=col.width;if(!w&&!dW||$.type(w)==="string"&&w.indexOf("%")>0){throw new Error(self._getLocaleValue("columnsWidthShouldBeSetInPixels").replace("{key}",col.key))}});$.each(cols,function(ind,col){if(col.unbound){throw new Error(self._getLocaleValue("unboundColumnsNotSupported"))}});if(gridOptions.columnVirtualization===true){throw new Error(this._getLocaleValue("columnVirtualizationNotSupported"))}if(gridOptions.width===null||gridOptions.width===""){throw new Error(this._getLocaleValue("noGridWidthNotSupported"))}if(gridOptions.virtualization&&gridOptions.virtualizationMode!=="continuous"){throw new Error(this._getLocaleValue("virtualizationNotSupported"))}if(featuresLength===1){return}for(i=0;itr");$trs=$trs.add(c.body.unfixedTable.children("tbody").find(">tr"));$trs.each(function(ind,tr){tr.style.height=""})}if(virt&&!this._isContinuousVirtualization()){if(this.options.syncRowHeights){this.syncRowsHeights(this.grid.fixedTable().children("tbody").children("tr"),this.grid.element.children("tbody").children("tr"))}}else{this._syncHeightsForTables(this.grid.fixedTable(),this.grid.element)}if(this.grid.options.showFooter){if(c.footer){this.syncRowsHeights(c.footer.fixedTable.children("tfoot").children("tr"),c.footer.unfixedTable.children("tfoot").children("tr"))}}}if(this.grid._gridHasWidthInPercent()){this._setMinWidthForGridContainer()}this._applySyncRowHeights=true},_syncRowsOnAddEdit:function(rowId){if(!this.options.syncRowHeights||!this.grid.hasFixedColumns()){return}var h,c=this._containers,$fRow=this.grid.rowById(rowId,true),$ufRow=this.grid.rowById(rowId);if(!$fRow||!$ufRow){return}if(!c||!c.body){this._populateContainers()}h=c.body.fixedTable.height();c.body.fixedTable.height("");c.body.unfixedTable.height("");$fRow.height("");$ufRow.height("");this.syncRowsHeights($fRow,$ufRow);c.body.fixedTable.height(h);c.body.unfixedTable.height(h);this.checkAndSyncHeights()},_internalRowDeleted:function(){if(!this.options.syncRowHeights||!this.grid.hasFixedColumns()){return}var c=this._containers;if(!c||!c.body){this._populateContainers()}if(!this._isVirtualGrid()){c.body.fixedTable.height("");c.body.unfixedTable.height("")}this.checkAndSyncHeights()},_internalRowAdded:function(args){if(!this.grid.hasFixedColumns()){return}this._syncRowsOnAddEdit(args.row.attr("data-id"))},_internalCellUpdated:function(args){if(!this.grid.hasFixedColumns()){return}this._syncRowsOnAddEdit(args.rowID)},_internalRowUpdated:function(args){if(!this.grid.hasFixedColumns()){return}this._syncRowsOnAddEdit(args.rowID)},_removeRowsHeights:function($rows,removeAttr){var i,len=$rows.length;for(i=0;i=9){this._dataRenderingHandler=$.proxy(this._dataRendering,this);this.grid.element.bind("iggriddatarendering",this._dataRenderingHandler)}this._dataRenderedHandler=$.proxy(this._dataRendered,this);this.grid.element.bind("iggriddatarendered",this._dataRenderedHandler);this._lastColumnWidthAutoAdjustedHandler=$.proxy(this._lastColumnWidthAutoAdjusted,this);this.grid.element.bind("iggrid_lastcolumnwidthautoadjusted",this._lastColumnWidthAutoAdjustedHandler);this._gridColCollectionModified=$.proxy(this._colCollectionModified,this);this.grid.element.bind("iggridcolumnscollectionmodified",this._gridColCollectionModified);if(!this._isFunctionsOverriden){this.grid._visibleAreaWidth(this.options.minimalVisibleAreaWidth);this._gridRenderRowHandler=$.proxy(this.grid._renderRow,this.grid);this._renderRowHandler=$.proxy(this._renderRow,this);this.grid._renderRow=this._renderRowHandler;this._gridRenderRecordsForTableHandler=$.proxy(this.grid._renderRecordsForTable,this.grid);this._renderRecordsForTableHandler=$.proxy(this._renderRecordsForTable,this);this.grid._renderRecordsForTable=this._renderRecordsForTableHandler;this._gridRenderNewRowHandler=$.proxy(this.grid.renderNewRow,this.grid);this._renderNewRowHandler=$.proxy(this._renderNewRow,this);this.grid.renderNewRow=this._renderNewRowHandler;this._gridDetachColumnHandler=$.proxy(this.grid._detachColumn,this.grid);this._detachColumnHandler=$.proxy(this._detachColumn,this);this.grid._detachColumn=this._detachColumnHandler;this._gridAttachColumnHandler=$.proxy(this.grid._attachColumn,this.grid);this._attachColumnHandler=$.proxy(this._attachColumn,this);this.grid._attachColumn=this._attachColumnHandler;this._gridRerenderColgroupsHandler=$.proxy(this.grid._rerenderColgroups,this.grid);this._rerenderColgroupsHndlr=$.proxy(this._rerenderColgroups,this);this.grid._rerenderColgroups=this._rerenderColgroupsHndlr;this._gridRenderColgroupHandler=$.proxy(this.grid._renderColgroup,this.grid);this._renderColgroupHandler=$.proxy(this._renderColgroup,this);this.grid._renderColgroup=this._renderColgroupHandler;this._gridUpdatePaddingHandler=$.proxy(this.grid._updateVScrollbarCellPaddingHelper,this.grid);this._updateVScrollbarCellPaddingHelperHandler=$.proxy(this._updateVScrollbarCellPaddingHelper,this);this.grid._updateVScrollbarCellPaddingHelper=this._updateVScrollbarCellPaddingHelperHandler;this._isFunctionsOverriden=true}}});$.extend($.ui.igGridColumnFixing,{version:"19.1.20"});return $});