📄 queryreadstore.js
字号:
/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details*/if(!dojo._hasResource["dojox.data.QueryReadStore"]){dojo._hasResource["dojox.data.QueryReadStore"]=true;dojo.provide("dojox.data.QueryReadStore");dojo.require("dojo.string");dojo.require("dojo.data.util.sorter");dojo.declare("dojox.data.QueryReadStore",null,{url:"",requestMethod:"get",_className:"dojox.data.QueryReadStore",_items:[],_lastServerQuery:null,_numRows:-1,lastRequestHash:null,doClientPaging:false,doClientSorting:false,_itemsByIdentity:null,_identifier:null,_features:{"dojo.data.api.Read":true,"dojo.data.api.Identity":true},_labelAttr:"label",constructor:function(_1){dojo.mixin(this,_1);},getValue:function(_2,_3,_4){this._assertIsItem(_2);if(!dojo.isString(_3)){throw new Error(this._className+".getValue(): Invalid attribute, string expected!");}if(!this.hasAttribute(_2,_3)){if(_4){return _4;}}return _2.i[_3];},getValues:function(_5,_6){this._assertIsItem(_5);var _7=[];if(this.hasAttribute(_5,_6)){_7.push(_5.i[_6]);}return _7;},getAttributes:function(_8){this._assertIsItem(_8);var _9=[];for(var i in _8.i){_9.push(i);}return _9;},hasAttribute:function(_b,_c){return this.isItem(_b)&&typeof _b.i[_c]!="undefined";},containsValue:function(_d,_e,_f){var _10=this.getValues(_d,_e);var len=_10.length;for(var i=0;i<len;i++){if(_10[i]==_f){return true;}}return false;},isItem:function(_13){if(_13){return typeof _13.r!="undefined"&&_13.r==this;}return false;},isItemLoaded:function(_14){return this.isItem(_14);},loadItem:function(_15){if(this.isItemLoaded(_15.item)){return;}},fetch:function(_16){_16=_16||{};if(!_16.store){_16.store=this;}var _17=this;var _18=function(_19,_1a){if(_1a.onError){var _1b=_1a.scope||dojo.global;_1a.onError.call(_1b,_19,_1a);}};var _1c=function(_1d,_1e,_1f){var _20=_1e.abort||null;var _21=false;var _22=_1e.start?_1e.start:0;if(_17.doClientPaging==false){_22=0;}var _23=_1e.count?(_22+_1e.count):_1d.length;_1e.abort=function(){_21=true;if(_20){_20.call(_1e);}};var _24=_1e.scope||dojo.global;if(!_1e.store){_1e.store=_17;}if(_1e.onBegin){_1e.onBegin.call(_24,_1f,_1e);}if(_1e.sort&&_17.doClientSorting){_1d.sort(dojo.data.util.sorter.createSortFunction(_1e.sort,_17));}if(_1e.onItem){for(var i=_22;(i<_1d.length)&&(i<_23);++i){var _26=_1d[i];if(!_21){_1e.onItem.call(_24,_26,_1e);}}}if(_1e.onComplete&&!_21){var _27=null;if(!_1e.onItem){_27=_1d.slice(_22,_23);}_1e.onComplete.call(_24,_27,_1e);}};this._fetchItems(_16,_1c,_18);return _16;},getFeatures:function(){return this._features;},close:function(_28){},getLabel:function(_29){if(this._labelAttr&&this.isItem(_29)){return this.getValue(_29,this._labelAttr);}return undefined;},getLabelAttributes:function(_2a){if(this._labelAttr){return [this._labelAttr];}return null;},_xhrFetchHandler:function(_2b,_2c,_2d,_2e){_2b=this._filterResponse(_2b);if(_2b.label){this._labelAttr=_2b.label;}var _2f=_2b.numRows||-1;this._items=[];dojo.forEach(_2b.items,function(e){this._items.push({i:e,r:this});},this);var _31=_2b.identifier;this._itemsByIdentity={};if(_31){this._identifier=_31;var i;for(i=0;i<this._items.length;++i){var _33=this._items[i].i;var _34=_33[_31];if(!this._itemsByIdentity[_34]){this._itemsByIdentity[_34]=_33;}else{throw new Error(this._className+": The json data as specified by: ["+this.url+"] is malformed. Items within the list have identifier: ["+_31+"]. Value collided: ["+_34+"]");}}}else{this._identifier=Number;for(i=0;i<this._items.length;++i){this._items[i].n=i;}}_2f=this._numRows=(_2f===-1)?this._items.length:_2f;_2d(this._items,_2c,_2f);this._numRows=_2f;},_fetchItems:function(_35,_36,_37){var _38=_35.serverQuery||_35.query||{};if(!this.doClientPaging){_38.start=_35.start||0;if(_35.count){_38.count=_35.count;}}if(!this.doClientSorting){if(_35.sort){var _39=_35.sort[0];if(_39&&_39.attribute){var _3a=_39.attribute;if(_39.descending){_3a="-"+_3a;}_38.sort=_3a;}}}if(this.doClientPaging&&this._lastServerQuery!==null&&dojo.toJson(_38)==dojo.toJson(this._lastServerQuery)){this._numRows=(this._numRows===-1)?this._items.length:this._numRows;_36(this._items,_35,this._numRows);}else{var _3b=this.requestMethod.toLowerCase()=="post"?dojo.xhrPost:dojo.xhrGet;var _3c=_3b({url:this.url,handleAs:"json-comment-optional",content:_38});_3c.addCallback(dojo.hitch(this,function(_3d){this._xhrFetchHandler(_3d,_35,_36,_37);}));_3c.addErrback(function(_3e){_37(_3e,_35);});this.lastRequestHash=new Date().getTime()+"-"+String(Math.random()).substring(2);this._lastServerQuery=dojo.mixin({},_38);}},_filterResponse:function(_3f){return _3f;},_assertIsItem:function(_40){if(!this.isItem(_40)){throw new Error(this._className+": Invalid item argument.");}},_assertIsAttribute:function(_41){if(typeof _41!=="string"){throw new Error(this._className+": Invalid attribute argument ('"+_41+"').");}},fetchItemByIdentity:function(_42){if(this._itemsByIdentity){var _43=this._itemsByIdentity[_42.identity];if(!(_43===undefined)){if(_42.onItem){var _44=_42.scope?_42.scope:dojo.global;_42.onItem.call(_44,{i:_43,r:this});}return;}}var _45=function(_46,_47){var _48=_42.scope?_42.scope:dojo.global;if(_42.onError){_42.onError.call(_48,_46);}};var _49=function(_4a,_4b){var _4c=_42.scope?_42.scope:dojo.global;try{var _4d=null;if(_4a&&_4a.length==1){_4d=_4a[0];}if(_42.onItem){_42.onItem.call(_4c,_4d);}}catch(error){if(_42.onError){_42.onError.call(_4c,error);}}};var _4e={serverQuery:{id:_42.identity}};this._fetchItems(_4e,_49,_45);},getIdentity:function(_4f){var _50=null;if(this._identifier===Number){_50=_4f.n;}else{_50=_4f.i[this._identifier];}return _50;},getIdentityAttributes:function(_51){return [this._identifier];}});}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -