/*!@license
* Infragistics.Web.ClientUI Outlook GroupBy feature 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
*	jquery.ui.mouse.js
*	jquery.ui.draggable.js
*	jquery.ui.droppable.js
*	infragistics.ui.widget.js
*	infragistics.ui.grid.framework.js
*	infragistics.ui.grid.shared.js
*	infragistics.ui.grid.featurechooser.js
*/
(function(factory){if(typeof define==="function"&&define.amd){define(["./infragistics.ui.grid.featurechooser","./infragistics.ui.tree"],factory)}else{return factory(jQuery)}})(function($){$.widget("ui.igGridGroupBy",$.ui.igWidget,{css:{dragMarkup:"ui-iggrid-dragMarkup",groupByArea:"ui-iggrid-groupbyarea",groupByAreaText:"ui-iggrid-groupbyareatext",groupedRow:"ui-iggrid-groupedrow",summaryRow:"ui-iggrid-summaryrow",expandHeaderCellGroupBy:"ui-iggrid-header ui-widget-header",groupByExpandCellExpanded:"ui-icon ui-iggrid-expandbutton ui-iggrid-expandbuttonexpanded ui-icon-minus",groupBySummaryIcon:"ui-icon ui-icon-calculator ui-iggrid-groupsummary-icon",groupByExpandCellCollapsed:"ui-icon ui-iggrid-expandbutton ui-icon-plus",groupByAreaDropHover:"ui-iggrid-groupbyareahover",groupByExpandColumn:"ui-iggrid-expandcolumn",groupBySummaryColumn:"ui-iggrid-summarycolumn",groupBySummaryIconColumn:"ui-iggrid-summaryiconcolumn",groupBySummaryEmptyCellColumn:"ui-iggrid-summaryemptycellcolumn",nonGroupRowEmptyCell:"ui-iggrid-nongrouprowemptycell",groupedColumnLabel:"ui-iggrid-groupedcolumnlabel ui-state-default",groupedColumnLabelText:"ui-iggrid-groupedcolumnlabeltext",groupByRemoveButton:"ui-icon ui-icon-circle-close ui-iggrid-groupbyremovebutton",groupedColumnLabelRightEdgeEnd:"ui-iggrid-groupbylabelrightedgeend",groupedColumnLabelRightEdge:"ui-iggrid-groupbylabelrightedge",groupedColumnLayoutLabel:"ui-iggrid-groupbylayoutlabel",headerExtraCell:"ui-iggrid-expandheadercellgb",footerExtraCell:"ui-widget-content ui-iggrid-footerextracell",featureChooserIconClass:"ui-icon ui-iggrid-icon-groupby",dialogGroupedColumns:"ui-iggrid-groupby-dialog-groupedcolumns",dialogUnroupedColumns:"ui-iggrid-groupby-dialog-ungroupedcolumns",dialogGroupedItem:"ui-widget-content",dialogUngroupedItem:"ui-widget-content",dialogUngroupedColumnsGroupByButton:"ui-iggrid-dialog-groupby-button",dialogUngroupedColumnsText:"ui-iggrid-dialog-text",dialogButtonAsc:"ui-button ui-corner-all ui-button-icon-only ig-sorting-indicator",dialogButtonAscIcon:"ui-button-icon-primary ui-icon ui-icon-arrowthick-1-n",dialogButtonDesc:"ui-button ui-corner-all ui-button-icon-only ig-sorting-indicator",dialogButtonDescIcon:"ui-button-icon-primary ui-icon ui-icon-arrowthick-1-s",dialogButtonUngroup:"ui-iggrid-dialog-groupedbuttons ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-igbutton ui-widget-content ui-igbutton-remove",dialogButtonUngroupContainer:"ui-button-icon-primary ui-icon ui-icon-circle-close",dialogGroupedColumnTextContainer:"ui-iggrid-dialog-text",dialogListGroupedColumns:"ui-iggrid-dialog-list-groupedcolumns",dialogListUngroupedColumns:"ui-iggrid-dialog-list-ungroupedcolumns",dialogLayoutsDDButton:"ui-icon ui-icon-triangle-1-s ui-iggrid-dialog-layouts-dd-button",dropDownLayoutsContainer:"ui-iggrid-featurechooser-dropdown-dialog ui-widget ui-widget-content ui-corner-all",dialogLayoutsDDField:"ui-iggrid-dialog-layouts-dd-field",dialogLayoutsDD:"ui-iggrid-dialog-layouts-dd ui-widget-content ui-corner-all ig-combo-icon-container",modalDialogTreeContainer:"ui-iggrid-groupby-dialog-tree",modalDialogLayoutsContainer:"ui-iggrid-groupby-dialog-layoutscontainer",dialogButtonsHover:"ui-state-hover",groupByLastEmptyCell:"ui-iggrid-last-emptycell"},renderInFeatureChooser:false,options:{groupByAreaVisibility:"top",initialExpand:true,pagingMode:"allRecords",expansionIndicatorVisibility:true,groupByLabelWidth:null,labelDragHelperOpacity:.5,indentation:30,defaultSortingDirection:"asc",groupedColumns:[{key:null,dir:"asc",layout:null,col:null}],resultResponseKey:null,groupedRowTextTemplate:"${key}: ${val} (${count})",type:null,groupByUrlKey:null,groupByUrlKeyAscValue:null,groupByUrlKeyDescValue:null,summarySettings:{multiSummaryDelimiter:",",summaryFormat:"#.00"},columnSettings:[{allowGrouping:true,isGroupBy:false,compareFunc:null,groupComparerFunction:null,groupLabelFormatter:null,dir:"asc",summaries:[{summaryFunction:"avg",text:null,customSummary:null}],groupSummaries:[{summaryFunction:null,label:"",summaryTemplate:"{label}{result}",format:null}]}],expandTooltip:undefined,collapseTooltip:undefined,removeButtonTooltip:undefined,modalDialogGroupByButtonText:undefined,modalDialogCaptionButtonDesc:undefined,modalDialogCaptionButtonAsc:undefined,modalDialogCaptionButtonUngroup:undefined,modalDialogCaptionText:undefined,modalDialogDropDownLabel:undefined,modalDialogRootLevelHierarchicalGrid:undefined,modalDialogDropDownButtonCaption:undefined,modalDialogClearAllButtonLabel:undefined,emptyGroupByAreaContentSelectColumnsCaption:undefined,modalDialogButtonApplyText:undefined,modalDialogButtonCancelText:undefined,locale:{emptyGroupByAreaContent:undefined,emptyGroupByAreaContentSelectColumns:undefined,emptyGroupByAreaContentSelectColumnsCaption:undefined,expandTooltip:undefined,collapseTooltip:undefined,removeButtonTooltip:undefined,modalDialogCaptionButtonDesc:undefined,modalDialogCaptionButtonAsc:undefined,modalDialogCaptionButtonUngroup:undefined,modalDialogGroupByButtonText:undefined,modalDialogCaptionText:undefined,modalDialogDropDownLabel:undefined,modalDialogClearAllButtonLabel:undefined,modalDialogRootLevelHierarchicalGrid:undefined,modalDialogDropDownButtonCaption:undefined,modalDialogButtonApplyText:undefined,modalDialogButtonCancelText:undefined,summaryRowTitle:undefined,summaryIconTitle:undefined},modalDialogGroupByOnClick:false,modalDialogDropDownWidth:200,modalDialogDropDownAreaWidth:null,modalDialogAnimationDuration:200,modalDialogWidth:400,modalDialogHeight:"",useGridColumnFormatter:true,persist:true,groupByDialogContainment:"owner",dialogWidget:"igGridModalDialog",inherit:false,groupSummaries:[{summaryFunction:"",label:"",summaryTemplate:"{label}{value}",format:null}],groupSummariesPosition:"bottom"},events:{groupedColumnsChanging:"groupedColumnsChanging",groupedColumnsChanged:"groupedColumnsChanged",modalDialogMoving:"modalDialogMoving",modalDialogClosing:"modalDialogClosing",modalDialogClosed:"modalDialogClosed",modalDialogOpening:"modalDialogOpening",modalDialogOpened:"modalDialogOpened",modalDialogContentsRendering:"modalDialogContentsRendering",modalDialogContentsRendered:"modalDialogContentsRendered",modalDialogButtonApplyClick:"modalDialogButtonApplyClick",modalDialogButtonResetClick:"modalDialogButtonResetClick",modalDialogGroupingColumn:"modalDialogGroupingColumn",modalDialogGroupColumn:"modalDialogGroupColumn",modalDialogUngroupingColumn:"modalDialogUngroupingColumn",modalDialogUngroupColumn:"modalDialogUngroupColumn",modalDialogSortGroupedColumn:"modalDialogSortGroupedColumn"},_create:function(){this._orderedGroupedCols=[]},_createWidget:function(){this.options.columnSettings=[];this.options.groupedColumns=[];this.options.groupSummaries=false;this._tempSortingExpr=[];this._tempGroupedColumns=[];this._tempOrderedGroupedCols=[];this._tempOptions={};this._currentTreeLayer=null;this._isInitFC=false;this._modalSelectedLayout=null;$.Widget.prototype._createWidget.apply(this,arguments)},_getModalDialog:function(){return this.grid._rootContainer().find("#"+this.grid.id()+"_groupby_modalDialog")},changeGlobalLanguage:function(){},changeGlobalRegional:function(){},changeLocale:function(){var $dialog=this._getModalDialog(),self=this,colHeaderText;this._setGroupAreaTextContent($(".ui-iggrid-groupbyarea .ui-iggrid-groupbyareatext",this.grid.container()));this._super($(".ui-iggrid-grouparealist",this.grid.container()));this._super($("tbody>tr.ui-iggrid-groupedrow",this.grid.container()));this.grid.container().find("tr.ui-iggrid-summaryrow>td[gbsummaryiconcell]").each(function(){$(this).attr("title",self._getSummaryIconTitle($(this).data("colheader"),$(this).data("groupval")))});if($dialog.length){$dialog[this.options.dialogWidget]("option","locale",{modalDialogCaptionText:this._getLocaleValue("modalDialogCaptionText"),buttonApplyText:this._getLocaleValue("modalDialogButtonApplyText"),buttonCancelText:this._getLocaleValue("modalDialogButtonCancelText")});this._super($dialog);$dialog.find("a[data-localeid='modalDialogGroupByButtonText']").each(function(){colHeaderText=$(this).parent().next("span.ui-iggrid-dialog-text").text();$(this).attr("aria-label",self._getLocaleValue("modalDialogGroupByButtonText")+" "+colHeaderText)});$dialog.find("button[data-localeid='modalDialogCaptionButtonUngroup']").each(function(){colHeaderText=$(this).prev("span.ui-iggrid-dialog-text").text();$(this).attr("aria-label",self._getLocaleValue("modalDialogCaptionButtonUngroup")+" "+colHeaderText)})}},_registerWidget:$.noop,_unregisterWidget:$.noop,changeRegional:function(){var html;if(this.options.groupedColumns.length>0){html=this._generateGroupByRowsMarkup(this._getDataView(),this._startRowIndex,this._endRowIndex);this.grid.element.find(">tbody").empty().html(html)}},_setOption:function(key,value){var modalDialog=this._getModalDialog();this._super(key,value);if(key==="expansionIndicatorVisibility"){throw new Error(this._getLocaleValue("optionChangeNotSupported").replace("{optionName}",key))}switch(key){case"modalDialogGroupByOnClick":this._getModalDialog().remove();this._renderGroupByDialog();break;case"modalDialogAnimationDuration":modalDialog[this.options.dialogWidget]("option","animationDuration",value);break;case"modalDialogWidth":modalDialog[this.options.dialogWidget]("option","modalDialogWidth",value);break;case"modalDialogHeight":modalDialog[this.options.dialogWidget]("option","modalDialogHeight",value);break;case"groupByAreaVisibility":this._setGroupByAreaVisibility(value);break;default:break}},_setGroupByAreaVisibility:function(groupByAreaVisibility){var groupby=this,$footer,caption,groupbyarea=$("#"+this.grid.element.attr("id")+"_groupbyarea"),init=this.grid._initialized,$cntnr=this.grid.container();groupbyarea.remove();if(groupByAreaVisibility==="top"){caption=this.grid._caption();groupbyarea=caption.length?$("
").insertAfter(caption):$("").prependTo($cntnr)}else if(groupByAreaVisibility==="bottom"){$footer=$cntnr.find(".ui-iggrid-footer").last();if(init&&$footer.length&&$footer.is(":visible")){groupbyarea=$("").insertBefore($footer)}else{groupbyarea=$("").appendTo($cntnr)}}else if(groupByAreaVisibility==="hidden"){if(init){this.grid._initializeHeights()}return}groupbyarea.attr("id",this.grid.element.attr("id")+"_groupbyarea").addClass(this.css.groupByArea);this._setGroupAreaTextContent($("").appendTo(groupbyarea).addClass(this.css.groupByAreaText));groupbyarea.droppable({accept:"th:not([ groupby-disabled ])",hoverClass:groupby.css.groupByAreaDropHover,drop:function(event,ui){var accepted,isdescendant;isdescendant=ui.draggable.closest(".ui-iggrid-root").attr("id")===groupby.grid.id()||ui.draggable.closest(".ui-iggrid").find(".ui-iggrid-root").length>0;if(!groupby.grid.element.hasClass("ui-iggrid-root")){isdescendant=true}accepted=ui.draggable.hasClass("ui-iggrid-header")&&isdescendant;if(accepted){groupby._groupBy(event,ui.draggable)}}});if(this.grid._isMultiColumnGrid){groupbyarea.droppable("option","tolerance","touch")}if(init){this.grid._initializeHeights();this._groupAreaList()}},_headerRendered:function(event,args){if(args.owner.id()!==this.grid.id()){return}if(args.owner.element.attr("data-childgrid")){return}this._renderGroupByDialog();this._setGroupByAreaVisibility(this.options.groupByAreaVisibility)},_renderGroupByDialog:function(){var $buttonOK,containment,self=this,o=this.options,$captionButtonContainer,modalDialog;if(this.options.groupByDialogContainment==="owner"){containment=this.grid.container()}else{containment="window"}modalDialog=$("").appendTo(this.grid._rootContainer()).attr("id",this.grid.id()+"_groupby_modalDialog");modalDialog[this.options.dialogWidget]({renderFooterButtons:!o.modalDialogGroupByOnClick,modalDialogWidth:o.modalDialogWidth,modalDialogHeight:o.modalDialogHeight,animationDuration:o.modalDialogAnimationDuration,locale:{modalDialogCaptionText:self._getLocaleValue("modalDialogCaptionText"),buttonApplyText:self._getLocaleValue("modalDialogButtonApplyText"),buttonCancelText:self._getLocaleValue("modalDialogButtonCancelText")},containment:containment,gridContainer:this.grid.container(),modalDialogOpening:function(event,args){return self._groupByDialogOpening(event,args)},modalDialogOpened:function(){self._trigger(self.events.modalDialogOpened,null,{modalDialogElement:modalDialog,owner:self})},modalDialogMoving:function(e,ui){self._trigger(self.events.modalDialogMoving,null,{modalDialogElement:e.target,owner:self,originalPosition:ui.originalPosition,position:ui.position})},modalDialogClosing:function(){return self._trigger(self.events.modalDialogClosing,null,{modalDialogElement:modalDialog,owner:self})},modalDialogClosed:function(){self._trigger(self.events.modalDialogClosed,null,{modalDialogElement:modalDialog,owner:self})}});if(o.modalDialogGroupByOnClick){$captionButtonContainer=modalDialog[this.options.dialogWidget]("getCaptionButtonContainer");$("").bind("click.hiding",function(event){modalDialog[o.dialogWidget]("closeModalDialog",true,event);event.preventDefault();event.stopPropagation();return false}).addClass("ui-icon ui-icon-closethick").appendTo($("").appendTo($captionButtonContainer).attr({title:this._getLocaleValue("columnChooserCloseButtonTooltip"),href:"#",role:"button","data-localeid":"columnChooserCloseButtonTooltip","data-localeattr":"title"}).addClass("ui-dialog-titlebar-close ui-corner-all"))}else{$captionButtonContainer=modalDialog[this.options.dialogWidget]("getCaptionButtonContainer");$buttonOK=this.grid.container().find("#"+this.grid.id()+"_groupby_modalDialog_footer_buttonok");$buttonOK.bind("igbuttonclick",function(e){self._groupByDialogButtonOKClick(e)})}},openGroupByDialog:function(){var modalDialog=this._getModalDialog();modalDialog[this.options.dialogWidget]("openModalDialog")},closeGroupByDialog:function(){var modalDialog=this._getModalDialog();modalDialog[this.options.dialogWidget]("closeModalDialog")},_groupByDialogOpening:function(){var noCancel,modalDialog=this._getModalDialog();noCancel=this._trigger(this.events.modalDialogOpening,null,{modalDialogElement:modalDialog,owner:this});if(noCancel){this.renderGroupByModalDialog()}return noCancel},renderGroupByModalDialog:function(){var $content,i,self=this,o=this.options,css=this.css,modalDialog=this._getModalDialog(),noCancel,$groupedColumns,$ungroupedColumns;noCancel=this._trigger(this.events.modalDialogContentsRendering,null,{modalDialogElement:modalDialog,owner:this});if(noCancel){$content=modalDialog[this.options.dialogWidget]("getContent");$content.empty();self._tempGroupedColumns=o.groupedColumns.slice(0);self._tempOrderedGroupedCols=self._orderedGroupedCols.slice(0);self._tempSortingExpr=self.grid.dataSource.settings.sorting.expressions.slice(0);self._tempOptions={columnLayouts:[]};if(this.grid.options.columnLayouts&&this.grid.options.columnLayouts.length>0){for(i=0;i").attr("id",this.grid.id()+"_groupby_modalDialog_groupedcolumns").addClass(css.dialogGroupedColumns).appendTo($content);$ungroupedColumns=$("").attr("id",this.grid.id()+"_groupby_modalDialog_ungroupedcolumns").addClass(css.dialogUnroupedColumns).appendTo($content);$("").addClass(css.dialogListGroupedColumns).appendTo($groupedColumns);$("").addClass(css.dialogListUngroupedColumns).appendTo($ungroupedColumns);this._renderColumnsDialog(this.grid.options.columns);this._currentTreeLayer=null;if(this._isToRenderClearAllButton()){this._renderDialogButtonClearAll()}else{this.grid.container().find("#"+this.grid.id()+"_groupbydialog_reset_button").remove()}this._trigger(this.events.modalDialogContentsRendered,null,{modalDialogElement:modalDialog,owner:this})}},_renderLayoutsDropDown:function(){var o=this.options,fn,w,dW,$ddField,self=this,css=this.css,modalDialog=this._getModalDialog(),$content=modalDialog[this.options.dialogWidget]("getContent"),cancelFunc,htmlLayouts,$buttonDD,$dropDown,$tree,dropDownId=this.grid.id()+"_groupby_modalDialog_layoutsDD",modalDialogDropDownAreaWidth=o.modalDialogDropDownAreaWidth||o.modalDialogDropDownWidth,columnLayoutsData=this.grid.options.columnLayouts.slice(0),$layoutsContainer;$layoutsContainer=$("").attr("id",this.grid.id()+"_groupby_modalDialog_layoutsContainer").addClass(css.modalDialogLayoutsContainer).appendTo($content);htmlLayouts=""+this._getLocaleValue("modalDialogDropDownLabel")+"
"+""+"\t
"+this._getLocaleValue("modalDialogRootLevelHierarchicalGrid")+"
"+"\t
^"+"\t
"+"
'+app}else if(!dsRow.__gbRecord){html+=this._renderSummaryRecord(dsRow,i)}else{html+=this._renderGroupRow(dsRow,i)}}return html},_renderRecordsInternal:function(args){var grid=this.grid,ds,noCancel=true,dataSkipWidth=0,scrollContainer,start,end,vrtWnd,tbody=grid.element.children("tbody"),html,$thDataSkip;noCancel=grid._trigger(grid.events.rowsRendering,null,args);if(noCancel){ds=this._getDataView();if(this._colspan===undefined||this._colspan===null){this._determineColspan()}if(!grid.headersTable().find("thead tr th").hasClass("ui-iggrid-expandheadercellgb")){$thDataSkip=$(" | ").prependTo(grid.headersTable().find("thead tr:nth-child(1)")).addClass(this.css.expandHeaderCellGroupBy).addClass(this.css.headerExtraCell).attr("data-skip",true);if(grid._isMultiColumnGrid){$thDataSkip.attr("rowspan",grid._maxLevel+1)}}tbody.show();if(this.grid.options.virtualization){vrtWnd=args.vrtWnd;start=vrtWnd.start;end=vrtWnd.end;if(start===undefined){start=0;end=ds.length-1}if(start!==undefined&&end===undefined){end=start;if(end>ds.length-1){end=ds.length-1}start=0}if(start<0||start>ds.length-1){start=0;grid._startRowIndex=0}if(!start){grid._virtualRowCount=grid._determineVirtualRowCount();if(grid._virtualRowCount>ds.length){grid._virtualRowCount=ds.length}end=grid._virtualRowCount}else if(start>=end){grid._virtualRowCount=grid._determineVirtualRowCount();end=start+grid._virtualRowCount}if(end>ds.length-1){end=ds.length-1}if(!start&&!end&&ds.length){grid._virtualRowCount=grid._determineVirtualRowCount();grid._totalRowCount=grid._getTotalRowCount();if(grid._virtualRowCount>grid._totalRowCount){grid._virtualRowCount=grid._totalRowCount}end=grid._virtualRowCount-1}}else{start=0;end=ds.length-1}this._startRowIndex=start;this._endRowIndex=end;html=this._generateGroupByRowsMarkup(ds,start,end);this._expandedRowCount=0;if(window.MSApp===undefined){tbody.html(html)}else{MSApp.execUnsafeLocalFunction(function(){tbody.html(html)})}if(grid.options.width===null){grid._setContainerWidth(grid.container())}else{grid._updateGridContentWidth()}if(grid._persistVirtualScrollTop&&grid._prevFirstVisibleTROffset){if(grid.options.virtualization!==true&&grid.options.rowVirtualization!==true){grid.scrollContainer()[0].scrollTop=grid._prevFirstVisibleTROffset}}scrollContainer=grid._virtualcontainer().length>0?grid._virtualcontainer():grid.scrollContainer();if(this.options.groupedColumns.length>0&&scrollContainer.length>0&&grid.element.width()>scrollContainer.width()&&(grid.options.virtualization===true||grid.options.rowVirtualization===true)){$(grid.element).find(">colgroup>col[ data-skip=true ]").each(function(){dataSkipWidth+=parseInt(this.style.width,10)});grid._setGridContentWidth(grid._calculateContainerWidth(false)+dataSkipWidth)}tbody.find("[data-id='"+this._focusCellId+"']").find(">td[gbexpandcell]").focus();this._focusCellId=null;grid._buildVirtualDomForContinuousVirtualization();this.grid._trigger(this.grid.events.rowsRendered,null,{owner:this.grid,tbody:tbody})}},_encodeSummaryParams:function(owner,params){var cs=this.options.columnSettings,i,j,key;for(i=0;i0){for(j=0;j0?parseInt(this.options.indentation,10)*indent:0,cscol,htext,text,state,css,i,cs=this.options.columnSettings,shtml="",tmpl,title,j,hide=false;if(!collapsed){css=this.css.groupByExpandCellExpanded;title=this._getLocaleValue("collapseTooltip")}else{css=this.css.groupByExpandCellCollapsed;title=this._getLocaleValue("expandTooltip");if(indent>0&&!this.grid.options.virtualization){hide=true}}if(this.options.expansionIndicatorVisibility){expcell=" | "}else{expcell=" | "}tmpl=this.options.groupedRowTextTemplate;col=this.grid.columnByKey(field);if(colCustomSetting&&colCustomSetting.groupLabelFormatter){if(typeof colCustomSetting.groupLabelFormatter==="function"){val=colCustomSetting.groupLabelFormatter(val)}else{val=window[colCustomSetting.groupLabelFormatter](val)}}else if(this.options.useGridColumnFormatter===true){val=this.grid._renderCell(val,col,gbRec.recs&&gbRec.recs.length?gbRec.recs[0]:null," ")}tmpl=tmpl.replace(new RegExp("\\$\\{key\\}","g"),col.headerText);if(customName){text=tmpl.replace(new RegExp("\\$\\{val\\}","g"),customName).replace(new RegExp("\\$\\{count\\}","g"),"__sum__")}else{text=tmpl.replace(new RegExp("\\$\\{val\\}","g"),val).replace(new RegExp("\\$\\{count\\}","g"),"__sum__")}if(!collapsed){state="expanded"}else{state="collapsed"}for(i=0;i"+text+"";tr=" | "+expcell+textcell+"
";tr=this._calcRealSummary(tr,gbRec.fieldName,gbRec.val,gbRec.recs,gbRec.recs);tr=tr.replace(new RegExp("__sum__","g"),gbRec.recs.length);return tr},_getSummaryIconTitle:function(colHeader,groupVal){return this._getLocaleValue("summaryIconTitle").replace("{0}",colHeader).replace("{1}",groupVal)},_renderSummaryRecord:function(gbRec,rowInd){var grid=this.grid,cols=grid.options.columns,indent=gbRec.level-1,margin=indent>0?parseInt(this.options.indentation,10)*indent:0,tr="",groupVal=gbRec.groupValue,colIndex,summIndex,summLabel,summValue,colSetting,i,emptyCells,compareFunc,col,cscol,colKey,colHeader,summaryIconTitle;tr+="";colKey=gbRec.id.split(":")[indent*2];cscol=this.grid.columnByKey(colKey);colHeader=cscol?cscol.headerText:colKey;if(cscol&&(cscol.dataType==="date"||cscol.dataType==="time")){groupVal=new Date(parseInt(groupVal,10))}groupVal=this.grid._renderCell(groupVal,cscol);summaryIconTitle=this._getSummaryIconTitle(colHeader,groupVal);tr+="| "+""+""+""+""+"";emptyCells=this.grid.headersTable().find("colgroup").children("[ data-skip ]").length-1;for(i=0;i"}compareFunc=function(target){return target.columnKey===col.key};for(colIndex=0;colIndex";if(!gbRec.summaries[col.key]){tr+="";continue}for(summIndex=0;summIndex"+colSetting[0].groupSummaries[summIndex].summaryTemplate.replace("{label}",summLabel).replace("{value}",summValue)+""}tr+=""}tr+=" | 
";return tr},_renderNewRow:function(rec){var tbody=this.grid.element.children("tbody"),dataRows=tbody.children("tr:not([ data-container='true' ],[ data-grouprow='true' ])"),index=dataRows.length,row;row=$(this.grid._renderRecord(rec,index));dataRows.last().find("td."+this.css.nonGroupRowEmptyCell).removeClass(this.css.groupByLastEmptyCell);if(this.groupByColumns().length>0){$("").addClass(this.css.nonGroupRowEmptyCell).addClass(this.css.groupByLastEmptyCell).attr("tabindex",this.grid.options.tabIndex).attr("data-skip",true).prependTo(row)}if(this.grid.options.virtualization){this.grid._buildVirtualDomForContinuousVirtualization()}MSApp.execUnsafeLocalFunction(function(){tbody.append(row)})},_summaries:function(contents,data,gcval,allGroupData){var i,j,cs=this.options.columnSettings,s,ret=contents,arr,val,argsData,format;if(contents&&contents.indexOf&&contents.indexOf("$$value$$")===-1){return contents}for(i=0;i0){arr=this._arr(cs[i].columnKey,data);for(j=0;j0){indent+=indentation*this.options.groupedColumns.length;if(this.options.indentation&&this.options.indentation.indexOf&&this.options.indentation.indexOf("%")>=0){indent=this.options.indentation}this._indent=indent;this._addOrUpdateDataSkipCol(indent)}$cntnr=this.grid.container();if(this._isgroup!==null&&this._isgroup!==undefined&&$cntnr.length&&$cntnr[0].style.width&&!this.grid.options.width){if(this._isgroup===true){if(this.grid.options.virtualization!==true){$cntnr.width(parseInt($cntnr.width(),10)+indentation)}}else{$cntnr.width(parseInt($cntnr.width(),10)-indentation);indentation*=-1}if(this.grid.options.virtualization===true&&this.grid.options.virtualizationMode==="continuous"){this.grid._setDisplayContainerWidth(this.grid._getDisplayContainerWidth()+indentation);this.grid._setVHeadersWidth(this.grid._getVHeadersWidth()+indentation)}this._isgroup=null}this._tbody=args.tbody;if(!this._isgroup&&this.groupByColumns().length>0){this._groupAreaList()}event.stopPropagation()},_checkGroupExists:function(key){var exists=false,i;for(i=0;i0&&!this.grid.options.width){this.grid.container().width(parseInt(this.grid.container().width(),10)-indent)}this.grid.dataSource.settings.sorting.expressions=[];this.options.groupedColumns=[];this._orderedGroupedCols=[];if(!this._hierarchical){cols=[]}else{for(i=0;i0?"asc":"desc";if(layout){groupby._findLayout(layout,groupby.grid.options,layouts);lobj=layouts[0];for(i=0;lobj&&igrid._avgRowHeight){grid._avgRowHeight=avgRowHeight;grid._updateVirtualScrollContainer()}}else{$scrCntnr=grid.scrollContainer();scrTop=$scrCntnr.scrollTop();grid._renderData();$scrCntnr.scrollTop(scrTop)}this.grid._adjustLastColumnWidth(false);this._saveCollapseStates(grid)},_toggleGroup:function(event){var parentrow=$(event.target).closest("tr"),grid,exp=parentrow.attr("data-state")!=="expanded";if(this._hierarchical){grid=parentrow.closest(".ui-iggrid-table").data("igGrid")}else{grid=this.grid}this._focusCellId=parentrow.attr("data-id");this._expandCollapseRow(parentrow.attr("data-id"),exp,grid,parentrow);event.stopPropagation()},_groupAreaList:function(){var area=$(".ui-iggrid-groupbyarea",this.grid.container()),layout,allgrouped=[],dropFunc,mousedownFunc,list=area.find("ul"),i,groupby=this,css,key,item,itemEdge,helperFunc,overFunc,outFunc,text;allgrouped=this.groupByColumns();if(list.length>0){list.empty()}else{list=$("").appendTo(area).addClass("ui-iggrid-grouparealist")}helperFunc=function(event){var li=null;if($(event.target).is("li")){li=$(event.target)}else{li=$(event.target).closest("li")}li=li.clone();li.find(".ui-iggrid-groupbylabelrightedgeend").remove();li.find(".ui-iggrid-groupbylabelrightedge").remove();li.find(".ui-iggrid-groupbyremovebutton").remove();li.attr("data-dragging",true);return li};overFunc=function(event,ui){var $li;if(!ui.draggable.hasClass("ui-iggrid-groupedcolumnlabel")){return false}if(ui.draggable.attr("data-key")===$(this).attr("data-key")){return false}if(groupby._thOver){$li=ui.draggable.closest("ul").find("li[ data-key="+groupby._thOver+" ]");if($li.length>0&&$li.hasClass("ui-iggrid-groupbydroppableedge")){$li.removeClass("ui-iggrid-groupbydroppableedge")}}groupby._thOver=$(event.target).attr("data-key");$(event.target).addClass("ui-iggrid-groupbydroppableedge")};outFunc=function(event,ui){if(!ui.draggable.hasClass("ui-iggrid-groupedcolumnlabel")){return false}if(ui.draggable.attr("data-key")===$(this).attr("data-key")){return false}$(event.target).removeClass("ui-iggrid-groupbydroppableedge")};dropFunc=function(event,ui){var parent,$dragged,$target;$(this).removeClass("ui-iggrid-groupbydroppableedge");if(!ui.draggable.hasClass("ui-iggrid-groupedcolumnlabel")){return}if(ui.draggable.attr("data-key")!==$(this).attr("data-key")){parent=$(this).closest("ul");$target=$(this);$dragged=ui.draggable;if($dragged.index()>$target.index()){$dragged.insertBefore($target)}else{$dragged.insertAfter($target)}parent.find("li[ data-dragging=true ]").remove();parent.find("li").removeClass("ui-iggrid-groupbydroppableedge");groupby._regroup();groupby._groupAreaList();event.preventDefault();event.stopPropagation();return false}return};mousedownFunc=function(event){event.preventDefault();event.stopPropagation();return false};for(i=0;i").appendTo(list).addClass(this.css.groupedColumnLabel).css("float","left").attr("data-key",key).attr("data-layout",layout||"").bind({mouseup:$.proxy(this._changeSortState,this)}).draggable({containment:"body",appendTo:"parent",distance:5,revert:"invalid",helper:helperFunc}).droppable({accept:"li",tolerance:"touch",over:overFunc,out:outFunc,drop:dropFunc});if(this.options.groupByLabelWidth!==null){item.width(this.options.groupByLabelWidth)}itemEdge=$("").appendTo(item).css({"float":"right"}).addClass(this.css.groupedColumnLabel).addClass(this.css.groupedColumnLabelRightEdgeEnd);itemEdge.attr("data-marker","edge");item.prev().find("span[ data-marker ]").removeClass(this.css.groupedColumnLabelRightEdgeEnd).addClass(this.css.groupedColumnLabelRightEdge);if(layout){$(""+text+"").appendTo(item).addClass(this.css.groupedColumnLabelText);$(""+layout+"").prependTo(item).addClass(this.css.groupedColumnLayoutLabel)}else{$(""+text+"").appendTo(item)}$("").appendTo(item).addClass(css);if(!$.ig.util.isTouch){$("").appendTo(item).addClass("ui-iggrid-groupbyremovebutton").attr("data-localeid","removeButtonTooltip").attr("data-localeattr","title").attr("title",groupby._getLocaleValue("removeButtonTooltip")).bind({mouseup:$.proxy(groupby._removeButtonClick,groupby),mousedown:mousedownFunc})}if($.ig.util.isIE7&&item.width()>300){item.width(260)}else{item.width(Math.ceil(item.width())+22)}}list.children().bind({mouseover:$.proxy(this._showRemoveButton,this),mouseout:$.proxy(this._hideRemoveButton,this)})},_changeSortState:function(event){var li=$(event.target).closest("li"),key=li.attr("data-key"),i,layout=li.attr("data-layout"),layouts,eArgs,j,gc=this._orderedGroupedCols,s=this.grid.dataSource.settings.sorting.expressions,settings,lobj,noCancel;for(i=0;i0){for(i=0;i0){for(i=0;i0){if(prepend===true){$(" | ").addClass(this.css.footerExtraCell).prependTo(row).attr("data-skip",true)}else{$(" | ").addClass(this.css.footerExtraCell).appendTo(row).attr("data-skip",true)}}},_renderExtraHeaderCells:function(row,colgroup,prepend){if(this.options.groupedColumns.length>0){if(prepend===true){$(" | ").prependTo(row).addClass(this.css.headerExtraCell).attr("data-skip",true);if(colgroup){$("").prependTo(colgroup).attr("data-skip",true).css("width",this.options.indentation)}}else{$(" | ").appendTo(row).addClass(this.css.headerExtraCell).attr("data-skip",true);if(colgroup){$("").appendTo(colgroup).attr("data-skip",true).css("width",this.options.indentation)}}}},_addOrUpdateDataSkipCol:function(width){var $colgroup,attrs,$col,$htbl=this.grid.headersTable(),$ftbl=this.grid.footersTable();$colgroup=this.grid.element.children("colgroup");$col=$colgroup.children("[data-groupby-col]");if(!$col.length){attrs={"data-skip":"true","data-groupby-col":"true"};$("").prependTo($colgroup).attr(attrs).width(width);if($htbl.attr("id")!==this.grid.element.attr("id")){$("").prependTo($htbl.children("colgroup")).attr(attrs).width(width)}if($ftbl.attr("id")!==this.grid.element.attr("id")){$("").prependTo($ftbl.children("colgroup")).attr(attrs).width(width)}}else{$col.width(width);$htbl.find(">colgroup>col[data-groupby-col]").width(width);$ftbl.find(">colgroup>col[data-groupby-col]").width(width)}},_columnsCollectionModified:function(event,args){if(args.owner.id()!==this.grid.id()){return}args.tbody=this.grid.element.children("tbody");if(this.options.groupedColumns.length>0){this._addOrUpdateDataSkipCol(this._indent);if(this.grid.options.width===null){this.grid._setContainerWidth(this.grid.container())}else{this.grid._updateGridContentWidth()}}this._dataEmpty(event,args)},_onUIDirty:function(){if(this.options.persist){return}this.ungroupAll()},_saveSortingExpressions:function(){if(this.options.persist){this.grid._savePersistenceData(this.grid.dataSource.settings.sorting.expressions,"sorting");this._groupedColumns=this._orderedGroupedCols;this._optionsGC=this.options.groupedColumns}this.grid._fireInternalEvent("_sortedColumnsChanging",this.grid.dataSource.settings.sorting.expressions)},_saveCollapseStates:function(grid){grid=grid||this.grid;grid._savePersistenceData(grid.dataSource._gbCollapsed,"gbCollapsed",grid.element[0].id)},_getSortingExpressions:function(){return this.grid._getPersistenceData("sorting")},_restoreGroupBy:function(){var se=this._getSortingExpressions(),col,layouts,lobj,i,key,nse=[];this.grid.dataSource._gbCollapsed=this.grid._getPersistenceData("gbCollapsed",this.grid.element[0].id);if(this._groupedColumns){this._orderedGroupedCols=this._groupedColumns}if(this._optionsGC){this.grid.dataSource.settings.sorting.expressions=se;this.grid.dataSource.settings.sorting.defaultFields=se;this.options.groupedColumns=this._optionsGC;if(this.grid._hasUnboundColumns&&this.options.type==="local"){nse=[];for(i=0;i0&&this.grid._isDataBoundCalled){this.grid._trigger("headerExtraCellsModified",null,{owner:this})}},_filterExpressionsByLayout:function(exprs,layout){exprs=exprs||[];layout=!layout||layout===""?null:layout;var i,len=exprs.length,res=[];for(i=0;icol:not([ data-hiding ])").length-1}else{if(this.grid.options.showHeader){this._colspan=this.grid.headersTable().find("thead > tr:first").children("th:not(.ui-iggrid-expandheadercellgb)").length}else{this._colspan=this.grid.container().find("#"+this.grid.id()+" colgroup:first>col").length-1}}},_removeOverridenFunctions:function(){if(this._getDataViewHandler){this.grid._getDataView=this._getDataViewHandler}if(this._renderRecordsForVirtRowCountHandler){this.grid._renderRecordsForVirtRowCount=this._renderRecordsForVirtRowCountHandler}if(this._renderNewRowHandler){this.grid.renderNewRow=this._renderNewRowHandler}},_overrideFunctions:function(){if(!this._getDataViewHandler){this._getDataViewHandler=$.proxy(this.grid._getDataView,this.grid);this.grid._getDataView=$.proxy(this._getDataView,this)}if(!this._renderRecordsForVirtRowCountHandler){this._renderRecordsForVirtRowCountHandler=$.proxy(this.grid._renderRecordsForVirtRowCount,this.grid);this.grid._renderRecordsForVirtRowCount=$.proxy(this._renderRecordsForVirtRowCount,this)}if(!this._renderNewRowHandler){this._renderNewRowHandler=$.proxy(this.grid.renderNewRow,this.grid);this.grid.renderNewRow=$.proxy(this._renderNewRow,this)}},_renderRecordsForVirtRowCount:function(ds,rowNumber,rrFunc){var data=ds.slice(0,rowNumber),html;if(this._colspan===undefined||this._colspan===null){this._determineColspan()}if(this.options.groupedColumns.length>0){html=this._generateGroupByRowsMarkup(data,0,data.length-1)}else{html=this._renderRecordsForVirtRowCountHandler.call(this,ds,rowNumber,rrFunc)}return html},_getDataView:function(){if(this.options.groupedColumns.length>0){return this.grid.dataSource.groupByDataView()}return this._getDataViewHandler()},_removeInitCallbacks:function(){var i;for(i=0;this.grid._headerInitCallbacks&&i0){bEmptySummaries=false;summaries=this._getApplicableSummaries(cols[i].dataType,this.options.groupSummaries,defaultSummaries);columnDefault.groupSummaries.push.apply(columnDefault.groupSummaries,summaries)}resSummariesSettings[cols[i].key]=columnDefault}getColSettingsByKey=function(colKey){return colSettings.filter(function(target){return target.columnKey===colKey})};for(i=0;i0){bEmptySummaries=false;summaries=this._getApplicableSummaries(cols[i].dataType,columnSetting.groupSummaries,defaultSummaries);resSummariesSettings[cols[i].key].groupSummaries=summaries}else if($.isArray(columnSetting.groupSummaries)){resSummariesSettings[cols[i].key].groupSummaries=[]}}for(i=0;i0){for(j=0;j0&&this.grid.options.key){
layoutGrouped=[];for(i=0;i0){this._addOrUpdateDataSkipCol(this._indent);this.grid._adjustLastColumnWidth(true)}},_checkGridNotSupportedFeatures:function(){var gridOptions=this.grid.options;if((gridOptions.virtualization===true||gridOptions.rowVirtualization===true||gridOptions.columnVirtualization===true)&&gridOptions.virtualizationMode==="fixed"){throw new Error(this._getLocaleValue("fixedVirualizationNotSupported"))}}});$.extend($.ui.igGridGroupBy,{version:"19.1.20"});return $}); |