webgui/www/extras/yui-ext/build/data/LoadableDataModel-min.js
JT Smith 4f68a0933c added YUI and YUI-ext
fixed the resizable text area with IE problem
fixed the ad space with IE problem
merged the 7.2.0 and 7.1.4 change logs
2006-11-07 23:15:57 +00:00

20 lines
No EOL
6.2 KiB
JavaScript

/*
* YUI Extensions
* Copyright(c) 2006, Jack Slocum.
*
* This code is licensed under BSD license.
* http://www.opensource.org/licenses/bsd-license.php
*/
YAHOO.ext.grid.LoadableDataModel=function(dataType){YAHOO.ext.grid.LoadableDataModel.superclass.constructor.call(this,[]);this.onLoad=new YAHOO.util.CustomEvent('load');this.onLoadException=new YAHOO.util.CustomEvent('loadException');this.events['load']=this.onLoad;this.events['beforeload']=new YAHOO.util.CustomEvent('beforeload');this.events['loadexception']=this.onLoadException;this.dataType=dataType;this.preprocessors=[];this.postprocessors=[];this.loadedPage=1;this.remoteSort=false;this.pageSize=0;this.pageUrl=null;this.baseParams={};this.paramMap={'page':'page','pageSize':'pageSize','sortColumn':'sortColumn','sortDir':'sortDir'};};YAHOO.extendX(YAHOO.ext.grid.LoadableDataModel,YAHOO.ext.grid.DefaultDataModel);YAHOO.ext.grid.LoadableDataModel.prototype.setLoadedPage=function(pageNum,userCallback){this.loadedPage=pageNum;if(typeof userCallback=='function'){userCallback();}};YAHOO.ext.grid.LoadableDataModel.prototype.isPaged=function(){return this.pageSize>0;};YAHOO.ext.grid.LoadableDataModel.prototype.getTotalRowCount=function(){return this.totalCount||this.getRowCount();};YAHOO.ext.grid.LoadableDataModel.prototype.getPageSize=function(){return this.pageSize;};YAHOO.ext.grid.LoadableDataModel.prototype.getTotalPages=function(){if(this.getPageSize()==0||this.getTotalRowCount()==0){return 1;}
return Math.ceil(this.getTotalRowCount()/this.getPageSize());};YAHOO.ext.grid.LoadableDataModel.prototype.initPaging=function(url,pageSize,baseParams){this.pageUrl=url;this.pageSize=pageSize;this.remoteSort=true;if(baseParams)this.baseParams=baseParams;};YAHOO.ext.grid.LoadableDataModel.prototype.createParams=function(pageNum,sortColumn,sortDir){var params={},map=this.paramMap;for(var key in this.baseParams){if(typeof this.baseParams[key]!='function'){params[key]=this.baseParams[key];}}
params[map['page']]=pageNum;params[map['pageSize']]=this.getPageSize();params[map['sortColumn']]=(typeof sortColumn=='undefined'?'':sortColumn);params[map['sortDir']]=sortDir||'';return params;};YAHOO.ext.grid.LoadableDataModel.prototype.loadPage=function(pageNum,callback,keepExisting){var sort=this.getSortState();var params=this.createParams(pageNum,sort.column,sort.direction);this.load(this.pageUrl,params,this.setLoadedPage.createDelegate(this,[pageNum,callback]),keepExisting?(pageNum-1)*this.pageSize:null);};YAHOO.ext.grid.LoadableDataModel.prototype.applySort=function(suppressEvent){if(!this.remoteSort){YAHOO.ext.grid.LoadableDataModel.superclass.applySort.apply(this,arguments);}else if(!suppressEvent){var sort=this.getSortState();if(sort.column){this.fireRowsSorted(sort.column,sort.direction,true);}}};YAHOO.ext.grid.LoadableDataModel.prototype.resetPaging=function(){this.loadedPage=1;};YAHOO.ext.grid.LoadableDataModel.prototype.sort=function(columnModel,columnIndex,direction,suppressEvent){if(!this.remoteSort){YAHOO.ext.grid.LoadableDataModel.superclass.sort.apply(this,arguments);}else{this.columnModel=columnModel;this.sortColumn=columnIndex;this.sortDir=direction;var params=this.createParams(this.loadedPage,columnIndex,direction);this.load(this.pageUrl,params,this.fireRowsSorted.createDelegate(this,[columnIndex,direction,true]));}}
YAHOO.ext.grid.LoadableDataModel.prototype.load=function(url,params,callback,insertIndex){this.fireEvent('beforeload');if(params&&typeof params!='string'){var buf=[];for(var key in params){if(typeof params[key]!='function'){buf.push(encodeURIComponent(key),'=',encodeURIComponent(params[key]),'&');}}
delete buf[buf.length-1];params=buf.join('');}
var cb={success:this.processResponse,failure:this.processException,scope:this,argument:{callback:callback,insertIndex:insertIndex}};var method=params?'POST':'GET';YAHOO.util.Connect.asyncRequest(method,url,cb,params);};YAHOO.ext.grid.LoadableDataModel.prototype.processResponse=function(response){var cb=response.argument.callback;var keepExisting=(typeof response.argument.insertIndex=='number');var insertIndex=response.argument.insertIndex;switch(this.dataType){case YAHOO.ext.grid.LoadableDataModel.XML:this.loadData(response.responseXML,cb,keepExisting,insertIndex);break;case YAHOO.ext.grid.LoadableDataModel.JSON:var rtext=response.responseText;try{while(rtext.substring(0,1)==" "){rtext=rtext.substring(1,rtext.length);}
if(rtext.indexOf("{")<0){throw"Invalid JSON response";}
if(rtext.indexOf("{}")===0){this.loadData({},response.argument.callback);return;}
var jsonObjRaw=eval("("+rtext+")");if(!jsonObjRaw){throw"Error evaling JSON response";}
this.loadData(jsonObjRaw,cb,keepExisting,insertIndex);}catch(e){this.fireLoadException(e,response);if(typeof callback=='function'){callback(this,false);}}
break;case YAHOO.ext.grid.LoadableDataModel.TEXT:this.loadData(response.responseText,cb,keepExisting,insertIndex);break;};};YAHOO.ext.grid.LoadableDataModel.prototype.processException=function(response){this.fireLoadException(null,response);if(typeof response.argument.callback=='function'){response.argument.callback(this,false);}};YAHOO.ext.grid.LoadableDataModel.prototype.fireLoadException=function(e,responseObj){this.onLoadException.fireDirect(this,e,responseObj);};YAHOO.ext.grid.LoadableDataModel.prototype.fireLoadEvent=function(){this.fireEvent('load',this.loadedPage,this.getTotalPages());};YAHOO.ext.grid.LoadableDataModel.prototype.addPreprocessor=function(columnIndex,fn){this.preprocessors[columnIndex]=fn;};YAHOO.ext.grid.LoadableDataModel.prototype.getPreprocessor=function(columnIndex){return this.preprocessors[columnIndex];};YAHOO.ext.grid.LoadableDataModel.prototype.removePreprocessor=function(columnIndex){this.preprocessors[columnIndex]=null;};YAHOO.ext.grid.LoadableDataModel.prototype.addPostprocessor=function(columnIndex,fn){this.postprocessors[columnIndex]=fn;};YAHOO.ext.grid.LoadableDataModel.prototype.getPostprocessor=function(columnIndex){return this.postprocessors[columnIndex];};YAHOO.ext.grid.LoadableDataModel.prototype.removePostprocessor=function(columnIndex){this.postprocessors[columnIndex]=null;};YAHOO.ext.grid.LoadableDataModel.prototype.loadData=function(data,callback,keepExisting,insertIndex){};YAHOO.ext.grid.LoadableDataModel.XML='xml';YAHOO.ext.grid.LoadableDataModel.JSON='json';YAHOO.ext.grid.LoadableDataModel.TEXT='text';