📄 htmlstore.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.HtmlStore"]){dojo._hasResource["dojox.data.HtmlStore"]=true;dojo.provide("dojox.data.HtmlStore");dojo.require("dojox.data.dom");dojo.require("dojo.data.util.simpleFetch");dojo.require("dojo.data.util.filter");dojo.declare("dojox.data.HtmlStore",null,{constructor:function(_1){if(_1.url){if(!_1.dataId){throw new Error("dojo.data.HtmlStore: Cannot instantiate using url without an id!");}this.url=_1.url;this.dataId=_1.dataId;}else{if(_1.dataId){this._rootNode=dojo.byId(_1.dataId);this.dataId=this._rootNode.id;}else{this._rootNode=dojo.byId(this.dataId);}this._indexItems();}},url:"",dataId:"",_indexItems:function(){this._getHeadings();if(this._rootNode.rows){if(this._rootNode.tBodies&&this._rootNode.tBodies.length>0){this._rootNode=this._rootNode.tBodies[0];}var i;for(i=0;i<this._rootNode.rows.length;i++){this._rootNode.rows[i].store=this;this._rootNode.rows[i]._ident=i+1;}}else{var c=1;for(i=0;i<this._rootNode.childNodes.length;i++){if(this._rootNode.childNodes[i].nodeType===1){this._rootNode.childNodes[i].store=this;this._rootNode.childNodes[i]._ident=c;c++;}}}},_getHeadings:function(){this._headings=[];if(this._rootNode.tHead){dojo.forEach(this._rootNode.tHead.rows[0].cells,dojo.hitch(this,function(th){this._headings.push(dojox.data.dom.textContent(th));}));}else{this._headings=["name"];}},_getAllItems:function(){var _5=[];var i;if(this._rootNode.rows){for(i=0;i<this._rootNode.rows.length;i++){_5.push(this._rootNode.rows[i]);}}else{for(i=0;i<this._rootNode.childNodes.length;i++){if(this._rootNode.childNodes[i].nodeType===1){_5.push(this._rootNode.childNodes[i]);}}}return _5;},_assertIsItem:function(_7){if(!this.isItem(_7)){throw new Error("dojo.data.HtmlStore: a function was passed an item argument that was not an item");}},_assertIsAttribute:function(_8){if(typeof _8!=="string"){throw new Error("dojo.data.HtmlStore: a function was passed an attribute argument that was not an attribute name string");return -1;}return dojo.indexOf(this._headings,_8);},getValue:function(_9,_a,_b){var _c=this.getValues(_9,_a);return (_c.length>0)?_c[0]:_b;},getValues:function(_d,_e){this._assertIsItem(_d);var _f=this._assertIsAttribute(_e);if(_f>-1){if(_d.cells){return [dojox.data.dom.textContent(_d.cells[_f])];}else{return [dojox.data.dom.textContent(_d)];}}return [];},getAttributes:function(_10){this._assertIsItem(_10);var _11=[];for(var i=0;i<this._headings.length;i++){if(this.hasAttribute(_10,this._headings[i])){_11.push(this._headings[i]);}}return _11;},hasAttribute:function(_13,_14){return this.getValues(_13,_14).length>0;},containsValue:function(_15,_16,_17){var _18=undefined;if(typeof _17==="string"){_18=dojo.data.util.filter.patternToRegExp(_17,false);}return this._containsValue(_15,_16,_17,_18);},_containsValue:function(_19,_1a,_1b,_1c){var _1d=this.getValues(_19,_1a);for(var i=0;i<_1d.length;++i){var _1f=_1d[i];if(typeof _1f==="string"&&_1c){return (_1f.match(_1c)!==null);}else{if(_1b===_1f){return true;}}}return false;},isItem:function(_20){if(_20&&_20.store&&_20.store===this){return true;}return false;},isItemLoaded:function(_21){return this.isItem(_21);},loadItem:function(_22){this._assertIsItem(_22.item);},_fetchItems:function(_23,_24,_25){if(this._rootNode){this._finishFetchItems(_23,_24,_25);}else{if(!this.url){this._rootNode=dojo.byId(this.dataId);}else{var _26={url:this.url,handleAs:"text"};var _27=this;var _28=dojo.xhrGet(_26);_28.addCallback(function(_29){var _2a=function(_2b,id){if(_2b.id==id){return _2b;}if(_2b.childNodes){for(var i=0;i<_2b.childNodes.length;i++){var _2e=_2a(_2b.childNodes[i],id);if(_2e){return _2e;}}}return null;};var d=document.createElement("div");d.innerHTML=_29;_27._rootNode=_2a(d,_27.dataId);_27._indexItems();_27._finishFetchItems(_23,_24,_25);});_28.addErrback(function(_30){_25(_30,_23);});}}},_finishFetchItems:function(_31,_32,_33){var _34=null;var _35=this._getAllItems();if(_31.query){var _36=_31.queryOptions?_31.queryOptions.ignoreCase:false;_34=[];var _37={};var key;var _39;for(key in _31.query){_39=_31.query[key]+"";if(typeof _39==="string"){_37[key]=dojo.data.util.filter.patternToRegExp(_39,_36);}}for(var i=0;i<_35.length;++i){var _3b=true;var _3c=_35[i];for(key in _31.query){_39=_31.query[key]+"";if(!this._containsValue(_3c,key,_39,_37[key])){_3b=false;}}if(_3b){_34.push(_3c);}}_32(_34,_31);}else{if(_35.length>0){_34=_35.slice(0,_35.length);}_32(_34,_31);}},getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};},close:function(_3d){},getLabel:function(_3e){if(this.isItem(_3e)){if(_3e.cells){return "Item #"+this.getIdentity(_3e);}else{return this.getValue(_3e,"name");}}return undefined;},getLabelAttributes:function(_3f){if(_3f.cells){return null;}else{return ["name"];}},getIdentity:function(_40){this._assertIsItem(_40);if(this.hasAttribute(_40,"name")){return this.getValue(_40,"name");}else{return _40._ident;}},getIdentityAttributes:function(_41){return null;},fetchItemByIdentity:function(_42){var _43=_42.identity;var _44=this;var _45=null;var _46=null;if(!this._rootNode){if(!this.url){this._rootNode=dojo.byId(this.dataId);this._indexItems();if(_44._rootNode.rows){_45=this._rootNode.rows[_43+1];}else{for(var i=0;i<_44._rootNode.childNodes.length;i++){if(_44._rootNode.childNodes[i].nodeType===1&&_43===dojox.data.dom.textContent(_44._rootNode.childNodes[i])){_45=_44._rootNode.childNodes[i];}}}if(_42.onItem){_46=_42.scope?_42.scope:dojo.global;_42.onItem.call(_46,_45);}}else{var _48={url:this.url,handleAs:"text"};var _49=dojo.xhrGet(_48);_49.addCallback(function(_4a){var _4b=function(_4c,id){if(_4c.id==id){return _4c;}if(_4c.childNodes){for(var i=0;i<_4c.childNodes.length;i++){var _4f=_4b(_4c.childNodes[i],id);if(_4f){return _4f;}}}return null;};var d=document.createElement("div");d.innerHTML=_4a;_44._rootNode=_4b(d,_44.dataId);_44._indexItems();if(_44._rootNode.rows&&_43<=_44._rootNode.rows.length){_45=_44._rootNode.rows[_43-1];}else{for(var i=0;i<_44._rootNode.childNodes.length;i++){if(_44._rootNode.childNodes[i].nodeType===1&&_43===dojox.data.dom.textContent(_44._rootNode.childNodes[i])){_45=_44._rootNode.childNodes[i];break;}}}if(_42.onItem){_46=_42.scope?_42.scope:dojo.global;_42.onItem.call(_46,_45);}});_49.addErrback(function(_52){if(_42.onError){_46=_42.scope?_42.scope:dojo.global;_42.onError.call(_46,_52);}});}}else{if(this._rootNode.rows[_43+1]){_45=this._rootNode.rows[_43+1];if(_42.onItem){_46=_42.scope?_42.scope:dojo.global;_42.onItem.call(_46,_45);}}}}});dojo.extend(dojox.data.HtmlStore,dojo.data.util.simpleFetch);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -