1 | /* |
---|
2 | * Ext JS Library 0.30 |
---|
3 | * Copyright(c) 2006-2009, Ext JS, LLC. |
---|
4 | * licensing@extjs.com |
---|
5 | * |
---|
6 | * http://extjs.com/license |
---|
7 | */ |
---|
8 | |
---|
9 | // Grid column plugin that does the complete/active button in the left-most column |
---|
10 | CompleteColumn = function(){ |
---|
11 | var grid; |
---|
12 | |
---|
13 | function getRecord(t){ |
---|
14 | var index = grid.getView().findRowIndex(t); |
---|
15 | return grid.store.getAt(index); |
---|
16 | } |
---|
17 | |
---|
18 | function onMouseDown(e, t){ |
---|
19 | if(Ext.fly(t).hasClass('task-check')){ |
---|
20 | e.stopEvent(); |
---|
21 | var record = getRecord(t); |
---|
22 | record.set('completed', !record.data.completed); |
---|
23 | grid.store.applyFilter(); |
---|
24 | } |
---|
25 | } |
---|
26 | |
---|
27 | function onMouseOver(e, t){ |
---|
28 | if(Ext.fly(t).hasClass('task-check')){ |
---|
29 | Ext.fly(t.parentNode).addClass('task-check-over'); |
---|
30 | } |
---|
31 | } |
---|
32 | |
---|
33 | function onMouseOut(e, t){ |
---|
34 | if(Ext.fly(t).hasClass('task-check')){ |
---|
35 | Ext.fly(t.parentNode).removeClass('task-check-over'); |
---|
36 | } |
---|
37 | } |
---|
38 | |
---|
39 | Ext.apply(this, { |
---|
40 | width: 22, |
---|
41 | header: '<div class="task-col-hd"></div>', |
---|
42 | fixed: true, |
---|
43 | menuDisabled: true, |
---|
44 | id: 'task-col', |
---|
45 | renderer: function(){ |
---|
46 | return '<div class="task-check"></div>'; |
---|
47 | }, |
---|
48 | init : function(xg){ |
---|
49 | grid = xg; |
---|
50 | grid.on('render', function(){ |
---|
51 | var view = grid.getView(); |
---|
52 | view.mainBody.on('mousedown', onMouseDown); |
---|
53 | view.mainBody.on('mouseover', onMouseOver); |
---|
54 | view.mainBody.on('mouseout', onMouseOut); |
---|
55 | }); |
---|
56 | } |
---|
57 | }); |
---|
58 | }; |
---|
59 | |
---|
60 | |
---|
61 | ReminderColumn = function(){ |
---|
62 | var grid, menu, record; |
---|
63 | |
---|
64 | function getRecord(t){ |
---|
65 | var index = grid.getView().findRowIndex(t); |
---|
66 | return grid.store.getAt(index); |
---|
67 | } |
---|
68 | |
---|
69 | function onMenuCheck(item){ |
---|
70 | if(item.reminder === false){ |
---|
71 | record.set('reminder', ''); |
---|
72 | }else{ |
---|
73 | var s = record.data.dueDate ? record.data.dueDate.clearTime(true) : new Date().clearTime(); |
---|
74 | s = s.add('mi', Ext.state.Manager.get('defaultReminder')); |
---|
75 | s = s.add('mi', item.reminder*-1); |
---|
76 | record.set('reminder', s); |
---|
77 | } |
---|
78 | } |
---|
79 | |
---|
80 | function getMenu(){ |
---|
81 | if(!menu){ |
---|
82 | menu = new Ext.menu.Menu({ |
---|
83 | plain: true, |
---|
84 | items: [{ |
---|
85 | text: 'No Reminder', |
---|
86 | reminder: false, |
---|
87 | handler: onMenuCheck |
---|
88 | },'-',{ |
---|
89 | text: 'On the Due Date', |
---|
90 | reminder: 0, |
---|
91 | handler: onMenuCheck |
---|
92 | },'-',{ |
---|
93 | text: '1 day before', |
---|
94 | reminder: 24*60, |
---|
95 | handler: onMenuCheck |
---|
96 | },{ |
---|
97 | text: '2 days before', |
---|
98 | reminder: 48*60, |
---|
99 | handler: onMenuCheck |
---|
100 | },{ |
---|
101 | text: '3 days before', |
---|
102 | reminder: 72*60, |
---|
103 | handler: onMenuCheck |
---|
104 | },{ |
---|
105 | text: '1 week before', |
---|
106 | reminder: 7*24*60, |
---|
107 | handler: onMenuCheck |
---|
108 | },{ |
---|
109 | text: '2 weeks before', |
---|
110 | reminder: 14*24*60, |
---|
111 | handler: onMenuCheck |
---|
112 | },'-',{ |
---|
113 | text: 'Set Default Time...', |
---|
114 | handler: function(){ |
---|
115 | Ext.air.NativeWindowManager.getPrefWindow(); |
---|
116 | } |
---|
117 | }] |
---|
118 | }); |
---|
119 | } |
---|
120 | return menu; |
---|
121 | } |
---|
122 | |
---|
123 | function onMouseDown(e, t){ |
---|
124 | if(Ext.fly(t).hasClass('reminder')){ |
---|
125 | e.stopEvent(); |
---|
126 | record = getRecord(t); |
---|
127 | if (!record.data.completed) { |
---|
128 | var rmenu = getMenu(); |
---|
129 | rmenu.show(t, 'tr-br?'); |
---|
130 | } |
---|
131 | } |
---|
132 | } |
---|
133 | |
---|
134 | function onMouseOver(e, t){ |
---|
135 | if(Ext.fly(t).hasClass('reminder')){ |
---|
136 | Ext.fly(t.parentNode).addClass('reminder-over'); |
---|
137 | } |
---|
138 | } |
---|
139 | |
---|
140 | function onMouseOut(e, t){ |
---|
141 | if(Ext.fly(t).hasClass('reminder')){ |
---|
142 | Ext.fly(t.parentNode).removeClass('reminder-over'); |
---|
143 | } |
---|
144 | } |
---|
145 | |
---|
146 | Ext.apply(this, { |
---|
147 | width: 26, |
---|
148 | header: '<div class="reminder-col-hd"></div>', |
---|
149 | fixed: true, |
---|
150 | id: 'reminder-col', |
---|
151 | menuDisabled: true, |
---|
152 | dataIndex:'reminder', |
---|
153 | renderer: function(v){ |
---|
154 | return '<div class="reminder '+(v ? 'reminder-active' : '')+'"></div>'; |
---|
155 | }, |
---|
156 | init : function(xg){ |
---|
157 | grid = xg; |
---|
158 | grid.on('render', function(){ |
---|
159 | var view = grid.getView(); |
---|
160 | view.mainBody.on('contextmenu', onMouseDown); |
---|
161 | view.mainBody.on('mousedown', onMouseDown); |
---|
162 | view.mainBody.on('mouseover', onMouseOver); |
---|
163 | view.mainBody.on('mouseout', onMouseOut); |
---|
164 | }); |
---|
165 | } |
---|
166 | }); |
---|
167 | }; |
---|