provide installation instructions
[extjs.git] / air / samples / tasks / js / ListStore.js
1 /*\r
2  * Ext JS Library 0.30\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 \r
10 tx.data.ListStore = Ext.extend(Ext.data.Store, {\r
11         constructor: function(){\r
12                 tx.data.ListStore.superclass.constructor.call(this, {\r
13                 sortInfo:{field: 'listName', direction: "ASC"},\r
14                 reader: new Ext.data.JsonReader({\r
15                     id: 'listId',\r
16                                 fields: tx.data.List\r
17                 })\r
18             });\r
19                 this.boundTrees = {};\r
20             this.conn = tx.data.conn;\r
21             this.proxy = new Ext.sql.Proxy(tx.data.conn, 'list', 'listId', this);\r
22         },\r
23         \r
24     getName : function(id){\r
25                 var l = this.data.map[id];\r
26                 return l ? l.data.listName : '';\r
27         },\r
28         \r
29         addList : function(name, id, isFolder, parentId){\r
30                 var l = this.findList(name);\r
31                 if(!l){\r
32                         var id = id || Ext.uniqueId();\r
33                         l = new tx.data.List({listId: id, listName: name, isFolder: isFolder === true, parentId: parentId || 'root'}, id);\r
34                         this.add(l);\r
35                 }\r
36                 return l;\r
37         },\r
38         \r
39         newList : function(isFolder, parentId){\r
40                 var i = 1;\r
41                 var text = isFolder ? 'New Folder ' : 'New List '; \r
42                 while(this.findList(text + i)){\r
43                         i++;\r
44                 }\r
45                 return this.addList(text + i, undefined, isFolder, parentId);\r
46         },\r
47         \r
48         findList : function(name){\r
49                 var d = this.data;\r
50                 for(var i = 0, len = d.length; i < len; i++){\r
51                         if(d.items[i].data.listName === name){\r
52                                 return d.items[i];\r
53                         }\r
54                 }\r
55                 return null;\r
56         },\r
57         \r
58         loadDemoLists: function(){\r
59                 this.addList('Personal', 'personal', true, 'root');\r
60                 this.addList('Family', 'family', false, 'personal');\r
61                 this.addList('Bills', 'bills', false, 'personal');\r
62                 this.addList('Fun', 'fun', false, 'personal');\r
63                 this.addList('Other Stuff', 'personal-misc', false, 'personal');\r
64                 this.addList('Work', 'work', true, 'root');\r
65                 this.addList('Ext 2.x', 'ext2', false, 'work');\r
66                 this.addList('Ext 1.x', 'ext1', false, 'work');\r
67                 this.addList('Meetings', 'meetings', false, 'work');\r
68                 this.addList('Miscellaneous', 'work-misc', false, 'work');\r
69         },\r
70         \r
71         bindTree : function(tree){\r
72                 this.boundTrees[tree.id] = {\r
73                         add: function(ls, records){\r
74                                 var pnode = tree.getNodeById(records[0].data.parentId);\r
75                                 if(pnode){\r
76                                         pnode.reload();\r
77                                 }\r
78                         },\r
79                         \r
80                         remove: function(ls, record){\r
81                                 var node = tree.getNodeById(record.id);\r
82                                 if(node && node.parentNode){\r
83                                         node.parentNode.removeChild(node);\r
84                                 }\r
85                         },\r
86                         \r
87                         update: function(ls, record){\r
88                                 var node = tree.getNodeById(record.id);\r
89                                 if(node){\r
90                                         node.setText(record.data.listName);\r
91                                 }\r
92                         }\r
93                 };\r
94                 \r
95                 this.on(this.boundTrees[tree.id]);\r
96         },\r
97         \r
98         unbindTree : function(tree){\r
99                 var h = this.boundTrees[tree.id];\r
100                 if (h) {\r
101                         this.un('add', h.add);\r
102                         this.un('remove', h.remove);\r
103                         this.un('update', h.update);\r
104                 }\r
105         },\r
106         \r
107         prepareTable : function(){\r
108         try{\r
109         this.createTable({\r
110             name: 'list',\r
111             key: 'listId',\r
112             fields: tx.data.List.prototype.fields\r
113         });\r
114         }catch(e){console.log(e);}\r
115     }\r
116 });\r