Skip to content

Instantly share code, notes, and snippets.

@garyjoy
Created July 7, 2014 06:26
Show Gist options
  • Save garyjoy/328b5fef1637bfdfd7d5 to your computer and use it in GitHub Desktop.
Save garyjoy/328b5fef1637bfdfd7d5 to your computer and use it in GitHub Desktop.
Implement a Lazy-Loading Table in a Report (on IBM BPM v7.5)
dojo.require("dojox.data.QueryReadStore");
dojo.provide("bt.LazyLoadStore");
dojo.declare("bt.LazyLoadStore", dojox.data.QueryReadStore, {
lazyLoadFunction: null,
constructor: function(args) {
dojo.safeMixin(this,args);
},
_fetchItems: function(request, fetchHandler, errorHandler) {
var serverQuery = request.serverQuery || request.query || {};
if(!this.doClientPaging) {
serverQuery.start = request.start || 0;
if (request.count) {
serverQuery.count = request.count;
}
}
if(!this.doClientSorting) {
if(request.sort) {
var sort = request.sort[0];
if(sort && sort.attribute) {
var sortStr = sort.attribute;
if(sort.descending) {
sortStr = "-" + sortStr;
}
serverQuery.sort = sortStr;
}
}
}
if(this.doClientPaging && this._lastServerQuery!==null && dojo.toJson(serverQuery)==dojo.toJson(this._lastServerQuery)) {
this._numRows = (this._numRows === -1) ? this._items.length : this._numRows;
fetchHandler(this._items, request, this._numRows);
}
else {
var returnData = this.lazyLoadFunction(request);
this._xhrFetchHandler(returnData, request, fetchHandler, errorHandler);
this.lastRequestHash = new Date().getTime()+"-"+String(Math.random()).substring(2);
this._lastServerQuery = dojo.mixin({}, serverQuery);
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment