908 lines
17 KiB
JavaScript
908 lines
17 KiB
JavaScript
//>>built
|
|
define("dojox/data/XmlStore",["dojo/_base/lang","dojo/_base/declare","dojo/_base/xhr","dojo/data/util/simpleFetch","dojo/_base/query","dojo/_base/array","dojo/_base/window","dojo/data/util/filter","dojox/xml/parser","dojox/data/XmlItem"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a){
|
|
var _b=_2("dojox.data.XmlStore",null,{constructor:function(_c){
|
|
if(_c){
|
|
this.url=_c.url;
|
|
this.rootItem=(_c.rootItem||_c.rootitem||this.rootItem);
|
|
this.keyAttribute=(_c.keyAttribute||_c.keyattribute||this.keyAttribute);
|
|
this._attributeMap=(_c.attributeMap||_c.attributemap);
|
|
this.label=_c.label||this.label;
|
|
this.sendQuery=(_c.sendQuery||_c.sendquery||this.sendQuery);
|
|
if("urlPreventCache" in _c){
|
|
this.urlPreventCache=_c.urlPreventCache?true:false;
|
|
}
|
|
}
|
|
this._newItems=[];
|
|
this._deletedItems=[];
|
|
this._modifiedItems=[];
|
|
},url:"",rootItem:"",keyAttribute:"",label:"",sendQuery:false,attributeMap:null,urlPreventCache:true,getValue:function(_d,_e,_f){
|
|
var _10=_d.element;
|
|
var i;
|
|
var _11;
|
|
if(_e==="tagName"){
|
|
return _10.nodeName;
|
|
}else{
|
|
if(_e==="childNodes"){
|
|
for(i=0;i<_10.childNodes.length;i++){
|
|
_11=_10.childNodes[i];
|
|
if(_11.nodeType===1){
|
|
return this._getItem(_11);
|
|
}
|
|
}
|
|
return _f;
|
|
}else{
|
|
if(_e==="text()"){
|
|
for(i=0;i<_10.childNodes.length;i++){
|
|
_11=_10.childNodes[i];
|
|
if(_11.nodeType===3||_11.nodeType===4){
|
|
return _11.nodeValue;
|
|
}
|
|
}
|
|
return _f;
|
|
}else{
|
|
_e=this._getAttribute(_10.nodeName,_e);
|
|
if(_e.charAt(0)==="@"){
|
|
var _12=_e.substring(1);
|
|
var _13=_10.getAttribute(_12);
|
|
return (_13)?_13:_f;
|
|
}else{
|
|
for(i=0;i<_10.childNodes.length;i++){
|
|
_11=_10.childNodes[i];
|
|
if(_11.nodeType===1&&_11.nodeName===_e){
|
|
return this._getItem(_11);
|
|
}
|
|
}
|
|
return _f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},getValues:function(_14,_15){
|
|
var _16=_14.element;
|
|
var _17=[];
|
|
var i;
|
|
var _18;
|
|
if(_15==="tagName"){
|
|
return [_16.nodeName];
|
|
}else{
|
|
if(_15==="childNodes"){
|
|
for(i=0;i<_16.childNodes.length;i++){
|
|
_18=_16.childNodes[i];
|
|
if(_18.nodeType===1){
|
|
_17.push(this._getItem(_18));
|
|
}
|
|
}
|
|
return _17;
|
|
}else{
|
|
if(_15==="text()"){
|
|
var ec=_16.childNodes;
|
|
for(i=0;i<ec.length;i++){
|
|
_18=ec[i];
|
|
if(_18.nodeType===3||_18.nodeType===4){
|
|
_17.push(_18.nodeValue);
|
|
}
|
|
}
|
|
return _17;
|
|
}else{
|
|
_15=this._getAttribute(_16.nodeName,_15);
|
|
if(_15.charAt(0)==="@"){
|
|
var _19=_15.substring(1);
|
|
var _1a=_16.getAttribute(_19);
|
|
return (_1a!==undefined)?[_1a]:[];
|
|
}else{
|
|
for(i=0;i<_16.childNodes.length;i++){
|
|
_18=_16.childNodes[i];
|
|
if(_18.nodeType===1&&_18.nodeName===_15){
|
|
_17.push(this._getItem(_18));
|
|
}
|
|
}
|
|
return _17;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},getAttributes:function(_1b){
|
|
var _1c=_1b.element;
|
|
var _1d=[];
|
|
var i;
|
|
_1d.push("tagName");
|
|
if(_1c.childNodes.length>0){
|
|
var _1e={};
|
|
var _1f=true;
|
|
var _20=false;
|
|
for(i=0;i<_1c.childNodes.length;i++){
|
|
var _21=_1c.childNodes[i];
|
|
if(_21.nodeType===1){
|
|
var _22=_21.nodeName;
|
|
if(!_1e[_22]){
|
|
_1d.push(_22);
|
|
_1e[_22]=_22;
|
|
}
|
|
_1f=true;
|
|
}else{
|
|
if(_21.nodeType===3){
|
|
_20=true;
|
|
}
|
|
}
|
|
}
|
|
if(_1f){
|
|
_1d.push("childNodes");
|
|
}
|
|
if(_20){
|
|
_1d.push("text()");
|
|
}
|
|
}
|
|
for(i=0;i<_1c.attributes.length;i++){
|
|
_1d.push("@"+_1c.attributes[i].nodeName);
|
|
}
|
|
if(this._attributeMap){
|
|
for(var key in this._attributeMap){
|
|
i=key.indexOf(".");
|
|
if(i>0){
|
|
var _23=key.substring(0,i);
|
|
if(_23===_1c.nodeName){
|
|
_1d.push(key.substring(i+1));
|
|
}
|
|
}else{
|
|
_1d.push(key);
|
|
}
|
|
}
|
|
}
|
|
return _1d;
|
|
},hasAttribute:function(_24,_25){
|
|
return (this.getValue(_24,_25)!==undefined);
|
|
},containsValue:function(_26,_27,_28){
|
|
var _29=this.getValues(_26,_27);
|
|
for(var i=0;i<_29.length;i++){
|
|
if((typeof _28==="string")){
|
|
if(_29[i].toString&&_29[i].toString()===_28){
|
|
return true;
|
|
}
|
|
}else{
|
|
if(_29[i]===_28){
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},isItem:function(_2a){
|
|
if(_2a&&_2a.element&&_2a.store&&_2a.store===this){
|
|
return true;
|
|
}
|
|
return false;
|
|
},isItemLoaded:function(_2b){
|
|
return this.isItem(_2b);
|
|
},loadItem:function(_2c){
|
|
},getFeatures:function(){
|
|
var _2d={"dojo.data.api.Read":true,"dojo.data.api.Write":true};
|
|
if(!this.sendQuery||this.keyAttribute!==""){
|
|
_2d["dojo.data.api.Identity"]=true;
|
|
}
|
|
return _2d;
|
|
},getLabel:function(_2e){
|
|
if((this.label!=="")&&this.isItem(_2e)){
|
|
var _2f=this.getValue(_2e,this.label);
|
|
if(_2f){
|
|
return _2f.toString();
|
|
}
|
|
}
|
|
return undefined;
|
|
},getLabelAttributes:function(_30){
|
|
if(this.label!==""){
|
|
return [this.label];
|
|
}
|
|
return null;
|
|
},_fetchItems:function(_31,_32,_33){
|
|
var url=this._getFetchUrl(_31);
|
|
if(!url){
|
|
_33(new Error("No URL specified."),_31);
|
|
return;
|
|
}
|
|
var _34=(!this.sendQuery?_31:{});
|
|
var _35=this;
|
|
var _36={url:url,handleAs:"xml",preventCache:_35.urlPreventCache};
|
|
var _37=_3.get(_36);
|
|
_37.addCallback(function(_38){
|
|
var _39=_35._getItems(_38,_34);
|
|
if(_39&&_39.length>0){
|
|
_32(_39,_31);
|
|
}else{
|
|
_32([],_31);
|
|
}
|
|
});
|
|
_37.addErrback(function(_3a){
|
|
_33(_3a,_31);
|
|
});
|
|
},_getFetchUrl:function(_3b){
|
|
if(!this.sendQuery){
|
|
return this.url;
|
|
}
|
|
var _3c=_3b.query;
|
|
if(!_3c){
|
|
return this.url;
|
|
}
|
|
if(_1.isString(_3c)){
|
|
return this.url+_3c;
|
|
}
|
|
var _3d="";
|
|
for(var _3e in _3c){
|
|
var _3f=_3c[_3e];
|
|
if(_3f){
|
|
if(_3d){
|
|
_3d+="&";
|
|
}
|
|
_3d+=(_3e+"="+_3f);
|
|
}
|
|
}
|
|
if(!_3d){
|
|
return this.url;
|
|
}
|
|
var _40=this.url;
|
|
if(_40.indexOf("?")<0){
|
|
_40+="?";
|
|
}else{
|
|
_40+="&";
|
|
}
|
|
return _40+_3d;
|
|
},_getItems:function(_41,_42){
|
|
var _43=null;
|
|
if(_42){
|
|
_43=_42.query;
|
|
}
|
|
var _44=[];
|
|
var _45=null;
|
|
if(this.rootItem!==""){
|
|
_45=_5(this.rootItem,_41);
|
|
}else{
|
|
_45=_41.documentElement.childNodes;
|
|
}
|
|
var _46=_42.queryOptions?_42.queryOptions.deep:false;
|
|
if(_46){
|
|
_45=this._flattenNodes(_45);
|
|
}
|
|
for(var i=0;i<_45.length;i++){
|
|
var _47=_45[i];
|
|
if(_47.nodeType!=1){
|
|
continue;
|
|
}
|
|
var _48=this._getItem(_47);
|
|
if(_43){
|
|
var _49=_42.queryOptions?_42.queryOptions.ignoreCase:false;
|
|
var _4a;
|
|
var _4b=false;
|
|
var j;
|
|
var _4c=true;
|
|
var _4d={};
|
|
for(var key in _43){
|
|
_4a=_43[key];
|
|
if(typeof _4a==="string"){
|
|
_4d[key]=_8.patternToRegExp(_4a,_49);
|
|
}else{
|
|
if(_4a){
|
|
_4d[key]=_4a;
|
|
}
|
|
}
|
|
}
|
|
for(var _4e in _43){
|
|
_4c=false;
|
|
var _4f=this.getValues(_48,_4e);
|
|
for(j=0;j<_4f.length;j++){
|
|
_4a=_4f[j];
|
|
if(_4a){
|
|
var _50=_43[_4e];
|
|
if((typeof _4a)==="string"&&(_4d[_4e])){
|
|
if((_4a.match(_4d[_4e]))!==null){
|
|
_4b=true;
|
|
}else{
|
|
_4b=false;
|
|
}
|
|
}else{
|
|
if((typeof _4a)==="object"){
|
|
if(_4a.toString&&(_4d[_4e])){
|
|
var _51=_4a.toString();
|
|
if((_51.match(_4d[_4e]))!==null){
|
|
_4b=true;
|
|
}else{
|
|
_4b=false;
|
|
}
|
|
}else{
|
|
if(_50==="*"||_50===_4a){
|
|
_4b=true;
|
|
}else{
|
|
_4b=false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(_4b){
|
|
break;
|
|
}
|
|
}
|
|
if(!_4b){
|
|
break;
|
|
}
|
|
}
|
|
if(_4c||_4b){
|
|
_44.push(_48);
|
|
}
|
|
}else{
|
|
_44.push(_48);
|
|
}
|
|
}
|
|
_6.forEach(_44,function(_52){
|
|
if(_52.element.parentNode){
|
|
_52.element.parentNode.removeChild(_52.element);
|
|
}
|
|
},this);
|
|
return _44;
|
|
},_flattenNodes:function(_53){
|
|
var _54=[];
|
|
if(_53){
|
|
var i;
|
|
for(i=0;i<_53.length;i++){
|
|
var _55=_53[i];
|
|
_54.push(_55);
|
|
if(_55.childNodes&&_55.childNodes.length>0){
|
|
_54=_54.concat(this._flattenNodes(_55.childNodes));
|
|
}
|
|
}
|
|
}
|
|
return _54;
|
|
},close:function(_56){
|
|
},newItem:function(_57,_58){
|
|
_57=(_57||{});
|
|
var _59=_57.tagName;
|
|
if(!_59){
|
|
_59=this.rootItem;
|
|
if(_59===""){
|
|
return null;
|
|
}
|
|
}
|
|
var _5a=this._getDocument();
|
|
var _5b=_5a.createElement(_59);
|
|
for(var _5c in _57){
|
|
var _5d;
|
|
if(_5c==="tagName"){
|
|
continue;
|
|
}else{
|
|
if(_5c==="text()"){
|
|
_5d=_5a.createTextNode(_57[_5c]);
|
|
_5b.appendChild(_5d);
|
|
}else{
|
|
_5c=this._getAttribute(_59,_5c);
|
|
if(_5c.charAt(0)==="@"){
|
|
var _5e=_5c.substring(1);
|
|
_5b.setAttribute(_5e,_57[_5c]);
|
|
}else{
|
|
var _5f=_5a.createElement(_5c);
|
|
_5d=_5a.createTextNode(_57[_5c]);
|
|
_5f.appendChild(_5d);
|
|
_5b.appendChild(_5f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var _60=this._getItem(_5b);
|
|
this._newItems.push(_60);
|
|
var _61=null;
|
|
if(_58&&_58.parent&&_58.attribute){
|
|
_61={item:_58.parent,attribute:_58.attribute,oldValue:undefined};
|
|
var _62=this.getValues(_58.parent,_58.attribute);
|
|
if(_62&&_62.length>0){
|
|
var _63=_62.slice(0,_62.length);
|
|
if(_62.length===1){
|
|
_61.oldValue=_62[0];
|
|
}else{
|
|
_61.oldValue=_62.slice(0,_62.length);
|
|
}
|
|
_63.push(_60);
|
|
this.setValues(_58.parent,_58.attribute,_63);
|
|
_61.newValue=this.getValues(_58.parent,_58.attribute);
|
|
}else{
|
|
this.setValue(_58.parent,_58.attribute,_60);
|
|
_61.newValue=_60;
|
|
}
|
|
}
|
|
return _60;
|
|
},deleteItem:function(_64){
|
|
var _65=_64.element;
|
|
if(_65.parentNode){
|
|
this._backupItem(_64);
|
|
_65.parentNode.removeChild(_65);
|
|
return true;
|
|
}
|
|
this._forgetItem(_64);
|
|
this._deletedItems.push(_64);
|
|
return true;
|
|
},setValue:function(_66,_67,_68){
|
|
if(_67==="tagName"){
|
|
return false;
|
|
}
|
|
this._backupItem(_66);
|
|
var _69=_66.element;
|
|
var _6a;
|
|
var _6b;
|
|
if(_67==="childNodes"){
|
|
_6a=_68.element;
|
|
_69.appendChild(_6a);
|
|
}else{
|
|
if(_67==="text()"){
|
|
while(_69.firstChild){
|
|
_69.removeChild(_69.firstChild);
|
|
}
|
|
_6b=this._getDocument(_69).createTextNode(_68);
|
|
_69.appendChild(_6b);
|
|
}else{
|
|
_67=this._getAttribute(_69.nodeName,_67);
|
|
if(_67.charAt(0)==="@"){
|
|
var _6c=_67.substring(1);
|
|
_69.setAttribute(_6c,_68);
|
|
}else{
|
|
for(var i=0;i<_69.childNodes.length;i++){
|
|
var _6d=_69.childNodes[i];
|
|
if(_6d.nodeType===1&&_6d.nodeName===_67){
|
|
_6a=_6d;
|
|
break;
|
|
}
|
|
}
|
|
var _6e=this._getDocument(_69);
|
|
if(_6a){
|
|
while(_6a.firstChild){
|
|
_6a.removeChild(_6a.firstChild);
|
|
}
|
|
}else{
|
|
_6a=_6e.createElement(_67);
|
|
_69.appendChild(_6a);
|
|
}
|
|
_6b=_6e.createTextNode(_68);
|
|
_6a.appendChild(_6b);
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
},setValues:function(_6f,_70,_71){
|
|
if(_70==="tagName"){
|
|
return false;
|
|
}
|
|
this._backupItem(_6f);
|
|
var _72=_6f.element;
|
|
var i;
|
|
var _73;
|
|
var _74;
|
|
if(_70==="childNodes"){
|
|
while(_72.firstChild){
|
|
_72.removeChild(_72.firstChild);
|
|
}
|
|
for(i=0;i<_71.length;i++){
|
|
_73=_71[i].element;
|
|
_72.appendChild(_73);
|
|
}
|
|
}else{
|
|
if(_70==="text()"){
|
|
while(_72.firstChild){
|
|
_72.removeChild(_72.firstChild);
|
|
}
|
|
var _75="";
|
|
for(i=0;i<_71.length;i++){
|
|
_75+=_71[i];
|
|
}
|
|
_74=this._getDocument(_72).createTextNode(_75);
|
|
_72.appendChild(_74);
|
|
}else{
|
|
_70=this._getAttribute(_72.nodeName,_70);
|
|
if(_70.charAt(0)==="@"){
|
|
var _76=_70.substring(1);
|
|
_72.setAttribute(_76,_71[0]);
|
|
}else{
|
|
for(i=_72.childNodes.length-1;i>=0;i--){
|
|
var _77=_72.childNodes[i];
|
|
if(_77.nodeType===1&&_77.nodeName===_70){
|
|
_72.removeChild(_77);
|
|
}
|
|
}
|
|
var _78=this._getDocument(_72);
|
|
for(i=0;i<_71.length;i++){
|
|
_73=_78.createElement(_70);
|
|
_74=_78.createTextNode(_71[i]);
|
|
_73.appendChild(_74);
|
|
_72.appendChild(_73);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
},unsetAttribute:function(_79,_7a){
|
|
if(_7a==="tagName"){
|
|
return false;
|
|
}
|
|
this._backupItem(_79);
|
|
var _7b=_79.element;
|
|
if(_7a==="childNodes"||_7a==="text()"){
|
|
while(_7b.firstChild){
|
|
_7b.removeChild(_7b.firstChild);
|
|
}
|
|
}else{
|
|
_7a=this._getAttribute(_7b.nodeName,_7a);
|
|
if(_7a.charAt(0)==="@"){
|
|
var _7c=_7a.substring(1);
|
|
_7b.removeAttribute(_7c);
|
|
}else{
|
|
for(var i=_7b.childNodes.length-1;i>=0;i--){
|
|
var _7d=_7b.childNodes[i];
|
|
if(_7d.nodeType===1&&_7d.nodeName===_7a){
|
|
_7b.removeChild(_7d);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
},save:function(_7e){
|
|
if(!_7e){
|
|
_7e={};
|
|
}
|
|
var i;
|
|
for(i=0;i<this._modifiedItems.length;i++){
|
|
this._saveItem(this._modifiedItems[i],_7e,"PUT");
|
|
}
|
|
for(i=0;i<this._newItems.length;i++){
|
|
var _7f=this._newItems[i];
|
|
if(_7f.element.parentNode){
|
|
this._newItems.splice(i,1);
|
|
i--;
|
|
continue;
|
|
}
|
|
this._saveItem(this._newItems[i],_7e,"POST");
|
|
}
|
|
for(i=0;i<this._deletedItems.length;i++){
|
|
this._saveItem(this._deletedItems[i],_7e,"DELETE");
|
|
}
|
|
},revert:function(){
|
|
this._newItems=[];
|
|
this._restoreItems(this._deletedItems);
|
|
this._deletedItems=[];
|
|
this._restoreItems(this._modifiedItems);
|
|
this._modifiedItems=[];
|
|
return true;
|
|
},isDirty:function(_80){
|
|
if(_80){
|
|
var _81=this._getRootElement(_80.element);
|
|
return (this._getItemIndex(this._newItems,_81)>=0||this._getItemIndex(this._deletedItems,_81)>=0||this._getItemIndex(this._modifiedItems,_81)>=0);
|
|
}else{
|
|
return (this._newItems.length>0||this._deletedItems.length>0||this._modifiedItems.length>0);
|
|
}
|
|
},_saveItem:function(_82,_83,_84){
|
|
var url;
|
|
var _85;
|
|
if(_84==="PUT"){
|
|
url=this._getPutUrl(_82);
|
|
}else{
|
|
if(_84==="DELETE"){
|
|
url=this._getDeleteUrl(_82);
|
|
}else{
|
|
url=this._getPostUrl(_82);
|
|
}
|
|
}
|
|
if(!url){
|
|
if(_83.onError){
|
|
_85=_83.scope||_7.global;
|
|
_83.onError.call(_85,new Error("No URL for saving content: "+this._getPostContent(_82)));
|
|
}
|
|
return;
|
|
}
|
|
var _86={url:url,method:(_84||"POST"),contentType:"text/xml",handleAs:"xml"};
|
|
var _87;
|
|
if(_84==="PUT"){
|
|
_86.putData=this._getPutContent(_82);
|
|
_87=_3.put(_86);
|
|
}else{
|
|
if(_84==="DELETE"){
|
|
_87=_3.del(_86);
|
|
}else{
|
|
_86.postData=this._getPostContent(_82);
|
|
_87=_3.post(_86);
|
|
}
|
|
}
|
|
_85=(_83.scope||_7.global);
|
|
var _88=this;
|
|
_87.addCallback(function(_89){
|
|
_88._forgetItem(_82);
|
|
if(_83.onComplete){
|
|
_83.onComplete.call(_85);
|
|
}
|
|
});
|
|
_87.addErrback(function(_8a){
|
|
if(_83.onError){
|
|
_83.onError.call(_85,_8a);
|
|
}
|
|
});
|
|
},_getPostUrl:function(_8b){
|
|
return this.url;
|
|
},_getPutUrl:function(_8c){
|
|
return this.url;
|
|
},_getDeleteUrl:function(_8d){
|
|
var url=this.url;
|
|
if(_8d&&this.keyAttribute!==""){
|
|
var _8e=this.getValue(_8d,this.keyAttribute);
|
|
if(_8e){
|
|
var key=this.keyAttribute.charAt(0)==="@"?this.keyAttribute.substring(1):this.keyAttribute;
|
|
url+=url.indexOf("?")<0?"?":"&";
|
|
url+=key+"="+_8e;
|
|
}
|
|
}
|
|
return url;
|
|
},_getPostContent:function(_8f){
|
|
return "<?xml version='1.0'?>"+_9.innerXML(_8f.element);
|
|
},_getPutContent:function(_90){
|
|
return "<?xml version='1.0'?>"+_9.innerXML(_90.element);
|
|
},_getAttribute:function(_91,_92){
|
|
if(this._attributeMap){
|
|
var key=_91+"."+_92;
|
|
var _93=this._attributeMap[key];
|
|
if(_93){
|
|
_92=_93;
|
|
}else{
|
|
_93=this._attributeMap[_92];
|
|
if(_93){
|
|
_92=_93;
|
|
}
|
|
}
|
|
}
|
|
return _92;
|
|
},_getItem:function(_94){
|
|
try{
|
|
var q=null;
|
|
if(this.keyAttribute===""){
|
|
q=this._getXPath(_94);
|
|
}
|
|
return new _a(_94,this,q);
|
|
}
|
|
catch(e){
|
|
}
|
|
return null;
|
|
},_getItemIndex:function(_95,_96){
|
|
for(var i=0;i<_95.length;i++){
|
|
if(_95[i].element===_96){
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
},_backupItem:function(_97){
|
|
var _98=this._getRootElement(_97.element);
|
|
if(this._getItemIndex(this._newItems,_98)>=0||this._getItemIndex(this._modifiedItems,_98)>=0){
|
|
return;
|
|
}
|
|
if(_98!=_97.element){
|
|
_97=this._getItem(_98);
|
|
}
|
|
_97._backup=_98.cloneNode(true);
|
|
this._modifiedItems.push(_97);
|
|
},_restoreItems:function(_99){
|
|
_6.forEach(_99,function(_9a){
|
|
if(_9a._backup){
|
|
_9a.element=_9a._backup;
|
|
_9a._backup=null;
|
|
}
|
|
},this);
|
|
},_forgetItem:function(_9b){
|
|
var _9c=_9b.element;
|
|
var _9d=this._getItemIndex(this._newItems,_9c);
|
|
if(_9d>=0){
|
|
this._newItems.splice(_9d,1);
|
|
}
|
|
_9d=this._getItemIndex(this._deletedItems,_9c);
|
|
if(_9d>=0){
|
|
this._deletedItems.splice(_9d,1);
|
|
}
|
|
_9d=this._getItemIndex(this._modifiedItems,_9c);
|
|
if(_9d>=0){
|
|
this._modifiedItems.splice(_9d,1);
|
|
}
|
|
},_getDocument:function(_9e){
|
|
if(_9e){
|
|
return _9e.ownerDocument;
|
|
}else{
|
|
if(!this._document){
|
|
return _9.parse();
|
|
}
|
|
}
|
|
return null;
|
|
},_getRootElement:function(_9f){
|
|
while(_9f.parentNode){
|
|
_9f=_9f.parentNode;
|
|
}
|
|
return _9f;
|
|
},_getXPath:function(_a0){
|
|
var _a1=null;
|
|
if(!this.sendQuery){
|
|
var _a2=_a0;
|
|
_a1="";
|
|
while(_a2&&_a2!=_a0.ownerDocument){
|
|
var pos=0;
|
|
var _a3=_a2;
|
|
var _a4=_a2.nodeName;
|
|
while(_a3){
|
|
_a3=_a3.previousSibling;
|
|
if(_a3&&_a3.nodeName===_a4){
|
|
pos++;
|
|
}
|
|
}
|
|
var _a5="/"+_a4+"["+pos+"]";
|
|
if(_a1){
|
|
_a1=_a5+_a1;
|
|
}else{
|
|
_a1=_a5;
|
|
}
|
|
_a2=_a2.parentNode;
|
|
}
|
|
}
|
|
return _a1;
|
|
},getIdentity:function(_a6){
|
|
if(!this.isItem(_a6)){
|
|
throw new Error("dojox.data.XmlStore: Object supplied to getIdentity is not an item");
|
|
}else{
|
|
var id=null;
|
|
if(this.sendQuery&&this.keyAttribute!==""){
|
|
id=this.getValue(_a6,this.keyAttribute).toString();
|
|
}else{
|
|
if(!this.serverQuery){
|
|
if(this.keyAttribute!==""){
|
|
id=this.getValue(_a6,this.keyAttribute).toString();
|
|
}else{
|
|
id=_a6.q;
|
|
}
|
|
}
|
|
}
|
|
return id;
|
|
}
|
|
},getIdentityAttributes:function(_a7){
|
|
if(!this.isItem(_a7)){
|
|
throw new Error("dojox.data.XmlStore: Object supplied to getIdentity is not an item");
|
|
}else{
|
|
if(this.keyAttribute!==""){
|
|
return [this.keyAttribute];
|
|
}else{
|
|
return null;
|
|
}
|
|
}
|
|
},fetchItemByIdentity:function(_a8){
|
|
var _a9=null;
|
|
var _aa=null;
|
|
var _ab=this;
|
|
var url=null;
|
|
var _ac=null;
|
|
var _ad=null;
|
|
if(!_ab.sendQuery){
|
|
_a9=function(_ae){
|
|
if(_ae){
|
|
if(_ab.keyAttribute!==""){
|
|
var _af={};
|
|
_af.query={};
|
|
_af.query[_ab.keyAttribute]=_a8.identity;
|
|
_af.queryOptions={deep:true};
|
|
var _b0=_ab._getItems(_ae,_af);
|
|
_aa=_a8.scope||_7.global;
|
|
if(_b0.length===1){
|
|
if(_a8.onItem){
|
|
_a8.onItem.call(_aa,_b0[0]);
|
|
}
|
|
}else{
|
|
if(_b0.length===0){
|
|
if(_a8.onItem){
|
|
_a8.onItem.call(_aa,null);
|
|
}
|
|
}else{
|
|
if(_a8.onError){
|
|
_a8.onError.call(_aa,new Error("Items array size for identity lookup greater than 1, invalid keyAttribute."));
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
var _b1=_a8.identity.split("/");
|
|
var i;
|
|
var _b2=_ae;
|
|
for(i=0;i<_b1.length;i++){
|
|
if(_b1[i]&&_b1[i]!==""){
|
|
var _b3=_b1[i];
|
|
_b3=_b3.substring(0,_b3.length-1);
|
|
var _b4=_b3.split("[");
|
|
var tag=_b4[0];
|
|
var _b5=parseInt(_b4[1],10);
|
|
var pos=0;
|
|
if(_b2){
|
|
var _b6=_b2.childNodes;
|
|
if(_b6){
|
|
var j;
|
|
var _b7=null;
|
|
for(j=0;j<_b6.length;j++){
|
|
var _b8=_b6[j];
|
|
if(_b8.nodeName===tag){
|
|
if(pos<_b5){
|
|
pos++;
|
|
}else{
|
|
_b7=_b8;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if(_b7){
|
|
_b2=_b7;
|
|
}else{
|
|
_b2=null;
|
|
}
|
|
}else{
|
|
_b2=null;
|
|
}
|
|
}else{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var _b9=null;
|
|
if(_b2){
|
|
_b9=_ab._getItem(_b2);
|
|
if(_b9.element.parentNode){
|
|
_b9.element.parentNode.removeChild(_b9.element);
|
|
}
|
|
}
|
|
if(_a8.onItem){
|
|
_aa=_a8.scope||_7.global;
|
|
_a8.onItem.call(_aa,_b9);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
url=this._getFetchUrl(null);
|
|
_ac={url:url,handleAs:"xml",preventCache:_ab.urlPreventCache};
|
|
_ad=_3.get(_ac);
|
|
_ad.addCallback(_a9);
|
|
if(_a8.onError){
|
|
_ad.addErrback(function(_ba){
|
|
var s=_a8.scope||_7.global;
|
|
_a8.onError.call(s,_ba);
|
|
});
|
|
}
|
|
}else{
|
|
if(_ab.keyAttribute!==""){
|
|
var _bb={query:{}};
|
|
_bb.query[_ab.keyAttribute]=_a8.identity;
|
|
url=this._getFetchUrl(_bb);
|
|
_a9=function(_bc){
|
|
var _bd=null;
|
|
if(_bc){
|
|
var _be=_ab._getItems(_bc,{});
|
|
if(_be.length===1){
|
|
_bd=_be[0];
|
|
}else{
|
|
if(_a8.onError){
|
|
var _bf=_a8.scope||_7.global;
|
|
_a8.onError.call(_bf,new Error("More than one item was returned from the server for the denoted identity"));
|
|
}
|
|
}
|
|
}
|
|
if(_a8.onItem){
|
|
_bf=_a8.scope||_7.global;
|
|
_a8.onItem.call(_bf,_bd);
|
|
}
|
|
};
|
|
_ac={url:url,handleAs:"xml",preventCache:_ab.urlPreventCache};
|
|
_ad=_3.get(_ac);
|
|
_ad.addCallback(_a9);
|
|
if(_a8.onError){
|
|
_ad.addErrback(function(_c0){
|
|
var s=_a8.scope||_7.global;
|
|
_a8.onError.call(s,_c0);
|
|
});
|
|
}
|
|
}else{
|
|
if(_a8.onError){
|
|
var s=_a8.scope||_7.global;
|
|
_a8.onError.call(s,new Error("XmlStore is not told that the server to provides identity support. No keyAttribute specified."));
|
|
}
|
|
}
|
|
}
|
|
}});
|
|
_1.extend(_b,_4);
|
|
return _b;
|
|
});
|