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);}
}
});