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