merge with branch issue-268

This commit is contained in:
Sebastian Sdorra
2012-10-23 18:04:06 +02:00
4 changed files with 100 additions and 0 deletions

View File

@@ -79,6 +79,7 @@
<script type="text/javascript" src="resources/js/override/ext.data.store.js"></script>
<script type="text/javascript" src="resources/js/override/ext.grid.columnmodel.js"></script>
<script type="text/javascript" src="resources/js/override/ext.grid.gridpanel.js"></script>
<script type="text/javascript" src="resources/js/override/ext.grid.groupingview.js"></script>
<!-- sonia.navigation -->
<script type="text/javascript" src="resources/js/navigation/sonia.navigation.js"></script>

View File

@@ -29,8 +29,13 @@
*
*/
Ext.grid.GridPanel.prototype.applyStateExt = Ext.grid.GridPanel.prototype.applyState;
Ext.grid.GridPanel.prototype.getStateExt = Ext.grid.GridPanel.prototype.getState;
Ext.override(Ext.grid.GridPanel,{
stateEvents : ['columnmove', 'columnresize', 'sortchange', 'groupchange', 'toggleGroup'],
addColumn: function(field, column, colIndex){
if(!column){
if(field.dataIndex){
@@ -52,6 +57,26 @@ Ext.override(Ext.grid.GridPanel,{
if(colIndex >= 0){
this.colModel.removeColumn(colIndex);
}
},
applyState: function(state){
var view = this.getView();
if (view && view.applyState){
var groups = state.groups;
if (groups){
view.applyState(groups);
}
}
this.applyStateExt(state);
},
getState: function(){
var state = this.getStateExt();
var view = this.getView();
if (view && view.getState){
state.groups = view.getState();
}
return state;
}
});

View File

@@ -0,0 +1,73 @@
/* *
* Copyright (c) 2010, Sebastian Sdorra
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of SCM-Manager; nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* http://bitbucket.org/sdorra/scm-manager
*
*/
Ext.grid.GroupingView.prototype.initTemplatesExt = Ext.grid.GroupingView.prototype.initTemplates;
Ext.grid.GroupingView.prototype.toggleGroupExt = Ext.grid.GroupingView.prototype.toggleGroup;
Ext.override(Ext.grid.GroupingView,{
storedState: null,
idPrefix: '{grid.el.id}',
initTemplates : function(){
this.initTemplatesExt();
if (this.storedState){
this.state = this.storedState;
}
},
toggleGroup : function(group, expanded){
this.toggleGroupExt(group, expanded);
this.grid.fireEvent('toggleGroup', group, expanded);
},
getState: function(){
return this.state;
},
applyState: function(state){
this.storedState = state;
},
getPrefix: function(field){
var prefix;
if ( this.idPrefix == '{grid.id}' ){
prefix = this.grid.getId();
} else if (this.idPrefix == '{grid.el.id}') {
prefix = this.grid.getGridEl().id;
} else {
prefix = this.idPrefix;
}
prefix += '-gp-' + field + '-';
return prefix;
}
});

View File

@@ -200,6 +200,7 @@ Sonia.repository.Grid = Ext.extend(Sonia.rest.Grid, {
}
},
view: new Ext.grid.GroupingView({
idPrefix: '{grid.id}',
enableGrouping: ! state.clientConfig.disableGroupingGrid,
enableNoGroups: false,
forceFit: true,