improve repository filter and added archive filter

This commit is contained in:
Sebastian Sdorra
2012-03-27 15:51:55 +02:00
parent a1f12e6ec0
commit 473c5967a9
2 changed files with 90 additions and 4 deletions

View File

@@ -36,11 +36,21 @@ Sonia.repository.Grid = Ext.extend(Sonia.rest.Grid, {
colDescriptionText: 'Description',
colCreationDateText: 'Creation date',
colUrlText: 'Url',
colArchiveText: 'Archive',
emptyText: 'No repository is configured',
formTitleText: 'Repository Form',
unknownType: 'Unknown',
filterRequest: null,
/**
* @deprecated use filterRequest
*/
searchValue: null,
/**
* @deprecated use filterRequest
*/
typeFilter: null,
// TODO find better text
@@ -81,6 +91,8 @@ Sonia.repository.Grid = Ext.extend(Sonia.rest.Grid, {
name:'permissions'
},{
name: 'properties'
},{
name: 'archive'
}]
}),
sortInfo: {
@@ -138,6 +150,12 @@ Sonia.repository.Grid = Ext.extend(Sonia.rest.Grid, {
dataIndex: 'url',
renderer: this.renderUrl,
width: 250
},{
id: 'Archive',
header: this.colArchiveText,
dataIndex: 'archive',
width: 40,
hidden: true //! state.clientConfig.enableRepositoryArchive
},{
id: 'group',
dataIndex: 'group',
@@ -231,23 +249,63 @@ Sonia.repository.Grid = Ext.extend(Sonia.rest.Grid, {
this.ownerCt.doLayout();
},
getFilterRequest: function(){
if ( ! this.filterRequest ){
this.filterRequest = {};
}
return this.filterRequest;
},
/**
* @deprecated use filterByRequest
*/
search: function(value){
this.searchValue = value;
this.filterStore();
},
/**
* @deprecated use filterByRequest
*/
filter: function(type){
this.typeFilter = type;
this.filterStore();
},
clearStoreFilter: function(){
this.filterRequest = null;
this.searchValue = null;
this.typeFilter = null;
this.getStore().clearFilter();
},
filterByRequest: function(){
if (debug){
console.debug('filter repository store by request:');
console.debug(this.filterRequest);
}
var store = this.getStore();
if ( ! this.filterRequest ){
store.clearFilter();
} else {
var query = this.filterRequest.query;
if ( query ){
query = query.toLowerCase();
}
var archived = ! state.clientConfig.enableRepositoryArchive || this.filterRequest.archived;
store.filterBy(function(rec){
var desc = rec.get('description');
return (! query || rec.get('name').toLowerCase().indexOf(query) >= 0 ||
(desc && desc.toLowerCase().indexOf(query) >= 0)) &&
(! this.filterRequest.type || rec.get('type') == this.filterRequest.type) &&
(archived || ! rec.get('archived'));
}, this);
}
},
/**
* @deprecated use filterByRequest
*/
filterStore: function(){
var store = this.getStore();
if ( ! this.searchValue && ! this.typeFilter ){

View File

@@ -124,8 +124,26 @@ Sonia.repository.Panel = Ext.extend(Sonia.rest.Panel, {
fn: this.search,
scope: this
}
}
}
});
// repository archive
if (state.clientConfig.enableRepositoryArchive){
toolbar.push(' ',{
id: 'displayArchived',
xtype: 'checkbox',
listeners: {
changed: {
fn: this.filterByArchived,
scope: this
}
}
},{
xtype: 'label',
text: 'Archive',
cls: 'ytb-text'
})
}
var config = {
tbar: toolbar,
@@ -170,12 +188,22 @@ Sonia.repository.Panel = Ext.extend(Sonia.rest.Panel, {
Sonia.History.add(token);
},
filterByArchived: function(checkbox, checked){
var grid = this.getGrid();
grid.getFilterRequest().archived = checked;
grid.filterByRequest();
},
filterByType: function(combo, rec){
this.getGrid().filter(rec.get('name'));
var grid = this.getGrid();
grid.getFilterRequest().type = rec.get('name');
grid.filterByRequest();
},
search: function(field){
this.getGrid().search(field.getValue());
var grid = this.getGrid();
grid.getFilterRequest().query = field.getValue();
grid.filterByRequest();
},
removeRepository: function(){