2 * Ext JS Library 0.30
\r
3 * Copyright(c) 2006-2009, Ext JS, LLC.
\r
4 * licensing@extjs.com
\r
6 * http://extjs.com/license
\r
10 tx.data.TaskStore = Ext.extend(Ext.data.GroupingStore, {
\r
11 constructor: function(){
\r
12 tx.data.TaskStore.superclass.constructor.call(this, {
\r
13 sortInfo:{field: 'dueDate', direction: "ASC"},
\r
14 groupField:'dueDate',
\r
16 reader: new Ext.data.JsonReader({
\r
18 fields: tx.data.Task
\r
21 this.conn = tx.data.conn;
\r
22 this.proxy = new Ext.sql.Proxy(tx.data.conn, 'task', 'taskId', this);
\r
25 applyFilter : function(filter){
\r
26 if(filter !== undefined){
\r
27 this.taskFilter = filter;
\r
29 var value = this.taskFilter;
\r
31 return this.clearFilter();
\r
33 return this.filterBy(function(item){
\r
34 return item.data.completed === value;
\r
38 addTask : function(data){
\r
39 this.suspendEvents();
\r
41 this.resumeEvents();
\r
42 this.loadData([data], true);
\r
43 this.suspendEvents();
\r
45 this.applyGrouping(true);
\r
46 this.resumeEvents();
\r
47 this.fireEvent('datachanged', this);
\r
50 loadList: function(listId){
\r
51 var multi = Ext.isArray(listId);
\r
52 this.activeList = multi ? listId[0] : listId;
\r
53 this.suspendEvents();
\r
56 for(var i = 0, len = listId.length; i < len; i++){
\r
61 where: 'where listId in (' + ps.join(',') + ')',
\r
66 this.load({params: {
\r
67 where: 'where listId = ?',
\r
72 this.applyGrouping(true);
\r
73 this.resumeEvents();
\r
74 this.fireEvent('datachanged', this);
\r
77 removeList: function(listId){
\r
78 this.conn.execBy('delete from task where listId = ?', [listId]);
\r
82 prepareTable : function(){
\r
87 fields: tx.data.Task.prototype.fields
\r
89 }catch(e){console.log(e);}
\r
92 createTask : function(title, listText, dueDate, description, completed){
\r
93 if(!Ext.isEmpty(title)){
\r
95 if(!Ext.isEmpty(listText)){
\r
96 listId = tx.data.lists.addList(Ext.util.Format.htmlEncode(listText)).id;
\r
98 listId = tx.data.lists.newList(false).id;
\r
101 taskId: Ext.uniqueId(),
\r
102 title: Ext.util.Format.htmlEncode(title),
\r
103 dueDate: dueDate||'',
\r
104 description: description||'',
\r
106 completed: completed || false
\r
111 afterEdit : function(r){
\r
112 if(r.isModified(this.getGroupState())){
\r
113 this.applyGrouping();
\r
115 //workaround WebKit cross-frame date issue
\r
116 fixDateMember(r.data, 'completedDate');
\r
117 fixDateMember(r.data, 'reminder');
\r
118 fixDateMember(r.data, 'dueDate');
\r
119 if(r.isModified('completed')){
\r
121 r.set('completedDate', r.data.completed ? new Date() : '');
\r
124 tx.data.TaskStore.superclass.afterEdit.apply(this, arguments);
\r
128 tx.data.lists.load();
\r
130 callback: function(){
\r
132 if(this.getCount() < 1){
\r
133 Ext.Msg.confirm('Create Tasks?', 'Your database is currently empty. Would you like to insert some demo data?',
\r
136 tx.data.lists.loadDemoLists();
\r
137 this.loadDemoTasks();
\r
146 lookup : function(id){
\r
148 if(task = this.getById(id)){
\r
151 var data = this.proxy.table.lookup(id);
\r
153 var result = this.reader.readRecords([data]);
\r
154 return result.records[0];
\r
159 /* This is used to laod some demo tasks if the task database is empty */
\r
160 loadDemoTasks: function(){
\r
161 var s = new Date();
\r
162 // hardcoded demo tasks
\r
163 this.addTask({taskId: Ext.uniqueId(), title:'Update Ext 2.0 documentation', listId:'ext2', description:'', dueDate: s.add('d', 21), completed: false, reminder: ''});
\r
164 this.addTask({taskId: Ext.uniqueId(), title:'Release Ext 2.l Beta 1', listId:'ext2', description:'', dueDate:s.add('d', 2), completed: false, reminder: s.add('d', 2).clearTime(true).add('h', 9)});
\r
165 this.addTask({taskId: Ext.uniqueId(), title:'Take wife to see movie', listId:'family', description:'', dueDate:s.add('d', 2), completed: false, reminder: ''});
\r
166 this.addTask({taskId: Ext.uniqueId(), title:'Finish Simple Tasks v2 sample app', listId:'ext2', description:'', dueDate:s.add('d', 2), completed: false, reminder: ''});
\r
167 this.addTask({taskId: Ext.uniqueId(), title:'Do something other than work', listId:'fun', description:'', dueDate:s.add('d', -1), completed: false, reminder: ''});
\r
168 this.addTask({taskId: Ext.uniqueId(), title:'Go to the grocery store', listId:'family', description:'', dueDate:s.add('d', -1), completed: true, reminder: '', completedDate: new Date()});
\r
169 this.addTask({taskId: Ext.uniqueId(), title:'Reboot my computer', listId:'personal-misc', description:'', dueDate:s, completed: false, reminder: ''});
\r
170 this.addTask({taskId: Ext.uniqueId(), title:'Respond to emails', listId:'work-misc', description:'', dueDate:s, completed: true, reminder: '', completedDate: new Date()});
\r