/* TEMPLATE
var config = {
defaultOrderBy: "name",
defaultDirection: "asc",
valueListProvider: cocoon.getComponent( "valueListBeanName" ),
filterModelName: "filterModel",
viewName: "viewName",
errorRedirect: "/",
rowSelectionReturns: false,
bizData: bizData,
selections: selections,
formHandler: function ( action, bizData ) {
},
rowHandler: function( id, action, bizData ) {
}
}
*/
function sortedFilteredView( config ) {
var defaultMaxResults = new Integer( 100 );
var modelName = ( config.filterModelName != undefined ) ?
config.filterModelName : config.viewName;
var form = new Form( "cocoon:/form-def/" + modelName );
//form.createBinding("cocoon:/form-bind/" +
config.filterModelName );
form.locale = determineLocale();
var model = form.getModel();
var bizData = ( config.bizData != undefined ) ? config.bizData :
new java.util.HashMap();
model.orderBy = config.defaultOrderBy;
model.direction = ( config.defaultDirection != undefined ) ?
config.defaultDirection : "asc";
model.maxResults = ( config.maxResults != undefined ) ?
config.maxResults : defaultMaxResults;
if ( config.formInitializer != undefined ) {
config.formInitializer( model );
}
model.skipResults = new Integer( 0 );
while ( true ) {
model.pageNo = new java.lang.Integer( model.skipResults /
model.maxResults + 1 );
var filterContext =
Packages.org.apache.cocoon.forms.util.ContainerWidgetAsMap( form.form );
var items = config.valueListProvider.generateResults(
filterContext, bizData );
var totalItemCount = config.valueListProvider.countEntries(
filterContext, bizData );
var pageCount = new java.lang.Integer( java.lang.Math.ceil(
totalItemCount / model.maxResults ) );
var firstPage = ( model.skipResults == 0 );
var lastPage = ( model.skipResults + model.maxResults >=
totalItemCount );
form.showForm( "form/" + config.viewName,
{ items : items,
orderBy : model.orderBy,
direction: model.direction,
maxResults: model.maxResults,
pageNumber: model.pageNo,
pageCount: pageCount,
firstPage: firstPage,
lastPage : lastPage,
viewConfig: config,
startIndex: ((model.pageNo - 1) *
model.maxResults + 1),
bizData : bizData,
selections: config.selections },
function() {
delete items;
}
);
if ( form.submitId == "finish" ) { //search
model.skipResults = new Integer( 0 );
} else if ( form.submitId == "cancel" ) {
return null;
} else if ( form.submitId == "next" ) {
model.skipResults = new Integer( model.skipResults +
model.maxResults );
} else if ( form.submitId == "prev" ) {
model.skipResults = new Integer( model.skipResults -
model.maxResults );
if ( model.skipResults < 0 )
model.skipResults = new Integer( 0 );
} else if ( form.submitId == "first" ) {
model.skipResults = new Integer( 0 );
} else if ( form.submitId == "last" ) {
model.skipResults = new java.lang.Integer( (
java.lang.Math.ceil( totalItemCount / model.maxResults ) - 1 ) *
model.maxResults );
} else if ( form.submitId == "changePage" ) {
if ( model.pageNo != null ) {
var skipCount = ( model.pageNo - 1 ) *
model.maxResults;
if ( skipCount < totalItemCount )
model.skipResults = new Integer( skipCount );
else
model.skipResults = new java.lang.Integer( (
java.lang.Math.ceil( totalItemCount / model.maxResults ) - 1 ) *
model.maxResults );
if ( skipCount < 0 )
model.skipResults = new Integer( 0 );
}
} else if ( form.submitId == "changeMaxResults" ) {
model.skipResults = new Integer( 0 );
} else if ( form.submitId != null ) {
if ( form.submitId == "selectRow" &&
config.rowSelectionReturns == true )
return model.rowId;
if ( config.rowHandler != undefined && model.rowId != null )
config.rowHandler( model.rowId, form.submitId,
bizData );
if ( config.formHandler != undefined && model.rowId ==
null )
config.formHandler( form.submitId, bizData );
}
if ( model.maxResults <= 0 )
model.maxResults = defaultMaxResults;
model.rowId = null;
}
}
form.showForm( "form/" + config.viewName,
{ items : items,
orderBy : model.orderBy,
direction: model.direction,
maxResults: model.maxResults,
pageNumber: model.pageNo,
pageCount: pageCount,
firstPage: firstPage,
lastPage : lastPage,
viewConfig: config,
startIndex: ((model.pageNo - 1) *
model.maxResults + 1),
bizData : bizData,
selections: config.selections },
function() {
delete items;
}
);