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