📄 opmlstore.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.OpmlStore"]){dojo._hasResource["dojox.data.OpmlStore"]=true;dojo.provide("dojox.data.OpmlStore");dojo.require("dojo.data.util.filter");dojo.require("dojo.data.util.simpleFetch");dojo.declare("dojox.data.OpmlStore",null,{constructor:function(_1){this._xmlData=null;this._arrayOfTopLevelItems=[];this._arrayOfAllItems=[];this._metadataNodes=null;this._loadFinished=false;this.url=_1.url;this._opmlData=_1.data;if(_1.label){this.label=_1.label;}this._loadInProgress=false;this._queuedFetches=[];this._identityMap={};this._identCount=0;this._idProp="_I";},label:"text",url:"",_assertIsItem:function(_2){if(!this.isItem(_2)){throw new Error("dojo.data.OpmlStore: a function was passed an item argument that was not an item");}},_assertIsAttribute:function(_3){if(!dojo.isString(_3)){throw new Error("dojox.data.OpmlStore: a function was passed an attribute argument that was not an attribute object nor an attribute name string");}},_removeChildNodesThatAreNotElementNodes:function(_4,_5){var _6=_4.childNodes;if(_6.length===0){return;}var _7=[];var i,_9;for(i=0;i<_6.length;++i){_9=_6[i];if(_9.nodeType!=1){_7.push(_9);}}for(i=0;i<_7.length;++i){_9=_7[i];_4.removeChild(_9);}if(_5){for(i=0;i<_6.length;++i){_9=_6[i];this._removeChildNodesThatAreNotElementNodes(_9,_5);}}},_processRawXmlTree:function(_a){this._loadFinished=true;this._xmlData=_a;var _b=_a.getElementsByTagName("head");var _c=_b[0];if(_c){this._removeChildNodesThatAreNotElementNodes(_c);this._metadataNodes=_c.childNodes;}var _d=_a.getElementsByTagName("body");var _e=_d[0];if(_e){this._removeChildNodesThatAreNotElementNodes(_e,true);var _f=_d[0].childNodes;for(var i=0;i<_f.length;++i){var _11=_f[i];if(_11.tagName=="outline"){this._identityMap[this._identCount]=_11;this._identCount++;this._arrayOfTopLevelItems.push(_11);this._arrayOfAllItems.push(_11);this._checkChildNodes(_11);}}}},_checkChildNodes:function(_12){if(_12.firstChild){for(var i=0;i<_12.childNodes.length;i++){var _14=_12.childNodes[i];if(_14.tagName=="outline"){this._identityMap[this._identCount]=_14;this._identCount++;this._arrayOfAllItems.push(_14);this._checkChildNodes(_14);}}}},_getItemsArray:function(_15){if(_15&&_15.deep){return this._arrayOfAllItems;}return this._arrayOfTopLevelItems;},getValue:function(_16,_17,_18){this._assertIsItem(_16);this._assertIsAttribute(_17);if(_17=="children"){return (_16.firstChild||_18);}else{var _19=_16.getAttribute(_17);return (_19!==undefined)?_19:_18;}},getValues:function(_1a,_1b){this._assertIsItem(_1a);this._assertIsAttribute(_1b);var _1c=[];if(_1b=="children"){for(var i=0;i<_1a.childNodes.length;++i){_1c.push(_1a.childNodes[i]);}}else{if(_1a.getAttribute(_1b)!==null){_1c.push(_1a.getAttribute(_1b));}}return _1c;},getAttributes:function(_1e){this._assertIsItem(_1e);var _1f=[];var _20=_1e;var _21=_20.attributes;for(var i=0;i<_21.length;++i){var _23=_21.item(i);_1f.push(_23.nodeName);}if(_20.childNodes.length>0){_1f.push("children");}return _1f;},hasAttribute:function(_24,_25){return (this.getValues(_24,_25).length>0);},containsValue:function(_26,_27,_28){var _29=undefined;if(typeof _28==="string"){_29=dojo.data.util.filter.patternToRegExp(_28,false);}return this._containsValue(_26,_27,_28,_29);},_containsValue:function(_2a,_2b,_2c,_2d){var _2e=this.getValues(_2a,_2b);for(var i=0;i<_2e.length;++i){var _30=_2e[i];if(typeof _30==="string"&&_2d){return (_30.match(_2d)!==null);}else{if(_2c===_30){return true;}}}return false;},isItem:function(_31){return (_31&&_31.nodeType==1&&_31.tagName=="outline"&&_31.ownerDocument===this._xmlData);},isItemLoaded:function(_32){return this.isItem(_32);},loadItem:function(_33){},getLabel:function(_34){if(this.isItem(_34)){return this.getValue(_34,this.label);}return undefined;},getLabelAttributes:function(_35){return [this.label];},_fetchItems:function(_36,_37,_38){var _39=this;var _3a=function(_3b,_3c){var _3d=null;if(_3b.query){_3d=[];var _3e=_3b.queryOptions?_3b.queryOptions.ignoreCase:false;var _3f={};for(var key in _3b.query){var _41=_3b.query[key];if(typeof _41==="string"){_3f[key]=dojo.data.util.filter.patternToRegExp(_41,_3e);}}for(var i=0;i<_3c.length;++i){var _43=true;var _44=_3c[i];for(var key in _3b.query){var _41=_3b.query[key];if(!_39._containsValue(_44,key,_41,_3f[key])){_43=false;}}if(_43){_3d.push(_44);}}}else{if(_3c.length>0){_3d=_3c.slice(0,_3c.length);}}_37(_3d,_3b);};if(this._loadFinished){_3a(_36,this._getItemsArray(_36.queryOptions));}else{if(this._loadInProgress){this._queuedFetches.push({args:_36,filter:_3a});}else{if(this.url!==""){this._loadInProgress=true;var _45={url:_39.url,handleAs:"xml"};var _46=dojo.xhrGet(_45);_46.addCallback(function(_47){_39._processRawXmlTree(_47);_3a(_36,_39._getItemsArray(_36.queryOptions));_39._handleQueuedFetches();});_46.addErrback(function(_48){throw _48;});}else{if(this._opmlData){this._processRawXmlTree(this._opmlData);this._opmlData=null;_3a(_36,this._getItemsArray(_36.queryOptions));}else{throw new Error("dojox.data.OpmlStore: No OPML source data was provided as either URL or XML data input.");}}}}},getFeatures:function(){var _49={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};return _49;},getIdentity:function(_4a){if(this.isItem(_4a)){for(var i in this._identityMap){if(this._identityMap[i]===_4a){return i;}}}return null;},fetchItemByIdentity:function(_4c){if(!this._loadFinished){var _4d=this;if(this.url!==""){if(this._loadInProgress){this._queuedFetches.push({args:_4c});}else{this._loadInProgress=true;var _4e={url:_4d.url,handleAs:"xml"};var _4f=dojo.xhrGet(_4e);_4f.addCallback(function(_50){var _51=_4c.scope?_4c.scope:dojo.global;try{_4d._processRawXmlTree(_50);var _52=_4d._identityMap[_4c.identity];if(!_4d.isItem(_52)){_52=null;}if(_4c.onItem){_4c.onItem.call(_51,_52);}_4d._handleQueuedFetches();}catch(error){if(_4c.onError){_4c.onError.call(_51,error);}}});_4f.addErrback(function(_53){this._loadInProgress=false;if(_4c.onError){var _54=_4c.scope?_4c.scope:dojo.global;_4c.onError.call(_54,_53);}});}}else{if(this._opmlData){this._processRawXmlTree(this._opmlData);this._opmlData=null;var _55=this._identityMap[_4c.identity];if(!_4d.isItem(_55)){_55=null;}if(_4c.onItem){var _56=_4c.scope?_4c.scope:dojo.global;_4c.onItem.call(_56,_55);}}}}else{var _55=this._identityMap[_4c.identity];if(!this.isItem(_55)){_55=null;}if(_4c.onItem){var _56=_4c.scope?_4c.scope:dojo.global;_4c.onItem.call(_56,_55);}}},getIdentityAttributes:function(_57){return null;},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i<this._queuedFetches.length;i++){var _59=this._queuedFetches[i];var _5a=_59.args;var _5b=_59.filter;if(_5b){_5b(_5a,this._getItemsArray(_5a.queryOptions));}else{this.fetchItemByIdentity(_5a);}}this._queuedFetches=[];}},close:function(_5c){}});dojo.extend(dojox.data.OpmlStore,dojo.data.util.simpleFetch);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -