Ext.define("Ext.grid.feature.Grouping",{extend:"Ext.grid.feature.Feature",mixins:{summary:"Ext.grid.feature.AbstractSummary"},requires:["Ext.grid.feature.GroupStore"],alias:"feature.grouping",eventPrefix:"group",groupCls:Ext.baseCSSPrefix+"grid-group-hd",eventSelector:"."+Ext.baseCSSPrefix+"grid-group-hd",refreshData:{},groupInfo:{},wrapsItem:true,groupHeaderTpl:"{columnName}: {name}",depthToIndent:17,collapsedCls:Ext.baseCSSPrefix+"grid-group-collapsed",hdCollapsedCls:Ext.baseCSSPrefix+"grid-group-hd-collapsed",hdNotCollapsibleCls:Ext.baseCSSPrefix+"grid-group-hd-not-collapsible",collapsibleCls:Ext.baseCSSPrefix+"grid-group-hd-collapsible",ctCls:Ext.baseCSSPrefix+"group-hd-container",groupByText:"Group by this field",showGroupsText:"Show in groups",hideGroupedHeader:false,startCollapsed:false,enableGroupingMenu:true,enableNoGroups:true,collapsible:true,expandTip:"Click to expand. CTRL key collapses all others",collapseTip:"Click to collapse. CTRL/click collapses all others",showSummaryRow:false,tableTpl:{before:function(a){if(this.groupingFeature.disabled||a.rows.length===1&&a.rows[0].isSummary){return}this.groupingFeature.setup(a.rows,a.view.rowValues)},after:function(a){if(this.groupingFeature.disabled||a.rows.length===1&&a.rows[0].isSummary){return}this.groupingFeature.cleanup(a.rows,a.view.rowValues)},priority:200},groupTpl:["{%","var me = this.groupingFeature;","if (me.disabled) {","values.needsWrap = false;","} else {","me.setupRowData(values.record, values.recordIndex, values);","values.needsWrap = !me.disabled && (values.isFirstRow || values.summaryRecord);","}","%}",'',' '+Ext.baseCSSPrefix+'grid-group-row">','','',"{%",'var groupTitleStyle = (!values.view.lockingPartner || (values.view.ownerCt === values.view.ownerCt.ownerLockable.lockedGrid) || (values.view.lockingPartner.headerCt.getVisibleGridColumns().length === 0)) ? "" : "visibility:hidden";',"%}",'
','
','{[values.groupHeaderTpl.apply(values.groupInfo, parent) || " "]}',"
","
","
",'',' ',Ext.baseCSSPrefix,'grid-table-summary"','border="0" cellspacing="0" cellpadding="0" style="width:100%">',"{[values.view.renderColumnSizer(out)]}",'',"{%","values.itemClasses.length = 0;","this.nextTpl.applyOut(values, out, parent);","%}","",'',"{%me.outputSummaryRecord(values.summaryRecord, values, out);%}","","
","
","","","","{%this.nextTpl.applyOut(values, out, parent);%}","",{priority:200,syncRowHeights:function(d,i){d=Ext.fly(d,"syncDest");i=Ext.fly(i,"sycSrc");var b=this.owner,e=d.down(b.eventSelector,true),f,g=d.down(b.summaryRowSelector,true),c,a,h;if(e&&(f=i.down(b.eventSelector,true))){e.style.height=f.style.height="";if((a=e.offsetHeight)>(h=f.offsetHeight)){Ext.fly(f).setHeight(a)}else{if(h>a){Ext.fly(e).setHeight(h)}}}if(g&&(c=i.down(b.summaryRowSelector,true))){g.style.height=c.style.height="";if((a=g.offsetHeight)>(h=c.offsetHeight)){Ext.fly(c).setHeight(a)}else{if(h>a){Ext.fly(g).setHeight(h)}}}},syncContent:function(b,g){b=Ext.fly(b,"syncDest");g=Ext.fly(g,"sycSrc");var a=this.owner,d=b.down(a.eventSelector,true),c=g.down(a.eventSelector,true),f=b.down(a.summaryRowSelector,true),e=g.down(a.summaryRowSelector,true);if(d&&c){Ext.fly(d).syncContent(c)}if(f&&e){Ext.fly(f).syncContent(e)}}}],constructor:function(){this.groupCache={};this.callParent(arguments)},init:function(b){var c=this,a=c.view;a.isGrouping=true;if(c.lockingPartner&&c.lockingPartner.groupCache){c.groupCache=c.lockingPartner.groupCache}c.mixins.summary.init.call(c);c.callParent(arguments);a.headerCt.on({columnhide:c.onColumnHideShow,columnshow:c.onColumnHideShow,columnmove:c.onColumnMove,scope:c});a.addTableTpl(c.tableTpl).groupingFeature=c;a.addRowTpl(Ext.XTemplate.getTpl(c,"groupTpl")).groupingFeature=c;a.preserveScrollOnRefresh=true;if(a.store.buffered){c.collapsible=false}else{if(this.lockingPartner&&this.lockingPartner.dataSource){c.dataSource=a.dataSource=this.lockingPartner.dataSource}else{c.dataSource=a.dataSource=new Ext.grid.feature.GroupStore(c,a.store)}}c.grid.on({reconfigure:c.onReconfigure});a.on({afterrender:c.afterViewRender,scope:c,single:true})},clearGroupCache:function(){var b=this,a=b.groupCache={};if(b.lockingPartner){b.lockingPartner.groupCache=a}return a},vetoEvent:function(a,c,d,b){if(b.type!=="mouseover"&&b.type!=="mouseout"&&b.type!=="mouseenter"&&b.type!=="mouseleave"&&b.getTarget(this.eventSelector)){return false}},enable:function(){var c=this,a=c.view,b=a.store,d;c.lastGroupField=c.getGroupField();a.isGrouping=true;if(c.lastGroupIndex){c.block();b.group(c.lastGroupIndex);c.unblock()}c.callParent();d=c.view.headerCt.getMenu().down("#groupToggleMenuItem");if(d){d.setChecked(true,true)}c.refreshIf()},disable:function(){var d=this,a=d.view,b=a.store,e,c;a.isGrouping=false;c=b.groupers.first();if(c){d.lastGroupIndex=c.property;d.block();b.clearGrouping();d.unblock()}d.callParent();e=d.view.headerCt.getMenu().down("#groupToggleMenuItem");if(e){e.setChecked(false,true)}d.refreshIf()},refreshIf:function(){var b=this.grid.ownerCt,a=this.view;if(!a.store.remoteGroup&&!this.blockRefresh){if(b&&b.lockable){b.view.refresh()}else{a.refresh()}}},afterViewRender:function(){var b=this,a=b.view;a.on({scope:b,groupclick:b.onGroupClick});if(b.enableGroupingMenu){b.injectGroupingMenu()}b.pruneGroupedHeader();b.lastGroupField=b.getGroupField();b.block();b.onGroupChange();b.unblock()},injectGroupingMenu:function(){var a=this,b=a.view.headerCt;b.showMenuBy=a.showMenuBy;b.getMenuItems=a.getMenuItems()},onColumnHideShow:function(c,f){var j=this.view,b=j.headerCt,a=b.getMenu(),e=a.down("#groupMenuItem"),k=b.getGridColumns().length,h,g,d;if(e){if(b.getVisibleGridColumns().length>1){e.enable()}else{e.disable()}}if(j.rendered){h=j.el.query("."+this.ctCls);for(d=0,g=h.length;d