X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/ListStore.html diff --git a/docs/source/ListStore.html b/docs/source/ListStore.html new file mode 100644 index 00000000..6e0cfd91 --- /dev/null +++ b/docs/source/ListStore.html @@ -0,0 +1,118 @@ + + + The source code + + + + +
+tx.data.ListStore = Ext.extend(Ext.data.Store, {
+	constructor: function(){
+		tx.data.ListStore.superclass.constructor.call(this, {
+	        sortInfo:{field: 'listName', direction: "ASC"},
+	        reader: new Ext.data.JsonReader({
+	            id: 'listId',
+				fields: tx.data.List
+	        })
+	    });
+		this.boundTrees = {};
+	    this.conn = tx.data.conn;
+	    this.proxy = new Ext.sql.Proxy(tx.data.conn, 'list', 'listId', this);
+	},
+	
+    getName : function(id){
+		var l = this.data.map[id];
+		return l ? l.data.listName : '';
+	},
+	
+	addList : function(name, id, isFolder, parentId){
+		var l = this.findList(name);
+		if(!l){
+			var id = id || Ext.uniqueId();
+			l = new tx.data.List({listId: id, listName: name, isFolder: isFolder === true, parentId: parentId || 'root'}, id);
+			this.add(l);
+		}
+		return l;
+	},
+	
+	newList : function(isFolder, parentId){
+		var i = 1;
+		var text = isFolder ? 'New Folder ' : 'New List '; 
+		while(this.findList(text + i)){
+			i++;
+		}
+		return this.addList(text + i, undefined, isFolder, parentId);
+	},
+	
+	findList : function(name){
+		var d = this.data;
+		for(var i = 0, len = d.length; i < len; i++){
+			if(d.items[i].data.listName === name){
+				return d.items[i];
+			}
+		}
+		return null;
+	},
+	
+	loadDemoLists: function(){
+		this.addList('Personal', 'personal', true, 'root');
+		this.addList('Family', 'family', false, 'personal');
+		this.addList('Bills', 'bills', false, 'personal');
+		this.addList('Fun', 'fun', false, 'personal');
+		this.addList('Other Stuff', 'personal-misc', false, 'personal');
+		this.addList('Work', 'work', true, 'root');
+		this.addList('Ext 2.x', 'ext2', false, 'work');
+		this.addList('Ext 1.x', 'ext1', false, 'work');
+		this.addList('Meetings', 'meetings', false, 'work');
+		this.addList('Miscellaneous', 'work-misc', false, 'work');
+	},
+	
+	bindTree : function(tree){
+		this.boundTrees[tree.id] = {
+			add: function(ls, records){
+				var pnode = tree.getNodeById(records[0].data.parentId);
+				if(pnode){
+					pnode.reload();
+				}
+			},
+			
+			remove: function(ls, record){
+				var node = tree.getNodeById(record.id);
+				if(node && node.parentNode){
+					node.parentNode.removeChild(node);
+				}
+			},
+			
+			update: function(ls, record){
+				var node = tree.getNodeById(record.id);
+				if(node){
+					node.setText(record.data.listName);
+				}
+			}
+		};
+		
+		this.on(this.boundTrees[tree.id]);
+	},
+	
+	unbindTree : function(tree){
+		var h = this.boundTrees[tree.id];
+		if (h) {
+			this.un('add', h.add);
+			this.un('remove', h.remove);
+			this.un('update', h.update);
+		}
+	},
+	
+	prepareTable : function(){
+        try{
+        this.createTable({
+            name: 'list',
+            key: 'listId',
+            fields: tx.data.List.prototype.fields
+        });
+        }catch(e){console.log(e);}
+    }
+});
+
+ + \ No newline at end of file