From 2f01fe57a8d37767827d6db42850aef86a767c53 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 15 Nov 2010 10:39:52 +0300 Subject: add dijit/dojo stuff; initial ui mockup --- lib/dijit/tree/TreeStoreModel.js | 145 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 lib/dijit/tree/TreeStoreModel.js (limited to 'lib/dijit/tree/TreeStoreModel.js') diff --git a/lib/dijit/tree/TreeStoreModel.js b/lib/dijit/tree/TreeStoreModel.js new file mode 100644 index 000000000..c03bef526 --- /dev/null +++ b/lib/dijit/tree/TreeStoreModel.js @@ -0,0 +1,145 @@ +/* + Copyright (c) 2004-2010, 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["dijit.tree.TreeStoreModel"]){ +dojo._hasResource["dijit.tree.TreeStoreModel"]=true; +dojo.provide("dijit.tree.TreeStoreModel"); +dojo.declare("dijit.tree.TreeStoreModel",null,{store:null,childrenAttrs:["children"],newItemIdAttr:"id",labelAttr:"",root:null,query:null,deferItemLoadingUntilExpand:false,constructor:function(_1){ +dojo.mixin(this,_1); +this.connects=[]; +var _2=this.store; +if(!_2.getFeatures()["dojo.data.api.Identity"]){ +throw new Error("dijit.Tree: store must support dojo.data.Identity"); +} +if(_2.getFeatures()["dojo.data.api.Notification"]){ +this.connects=this.connects.concat([dojo.connect(_2,"onNew",this,"onNewItem"),dojo.connect(_2,"onDelete",this,"onDeleteItem"),dojo.connect(_2,"onSet",this,"onSetItem")]); +} +},destroy:function(){ +dojo.forEach(this.connects,dojo.disconnect); +},getRoot:function(_3,_4){ +if(this.root){ +_3(this.root); +}else{ +this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_5){ +if(_5.length!=1){ +throw new Error(this.declaredClass+": query "+dojo.toJson(this.query)+" returned "+_5.length+" items, but must return exactly one item"); +} +this.root=_5[0]; +_3(this.root); +}),onError:_4}); +} +},mayHaveChildren:function(_6){ +return dojo.some(this.childrenAttrs,function(_7){ +return this.store.hasAttribute(_6,_7); +},this); +},getChildren:function(_8,_9,_a){ +var _b=this.store; +if(!_b.isItemLoaded(_8)){ +var _c=dojo.hitch(this,arguments.callee); +_b.loadItem({item:_8,onItem:function(_d){ +_c(_d,_9,_a); +},onError:_a}); +return; +} +var _e=[]; +for(var i=0;i