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