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 Ext.onReady(function(){
\r
11 Ext.QuickTips.init();
\r
13 var win = window.nativeWindow;
\r
15 var opener = Ext.air.NativeWindow.getRootHtmlWindow();
\r
16 var taskId = String(window.location).split('=')[1];
\r
17 var isNew = !taskId;
\r
18 var completed = false;
\r
20 win.title = 'Task - ' + Ext.util.Format.ellipsis(getTask().data.title, 40);
\r
22 var tb = new Ext.Toolbar({
\r
28 iconCls: 'icon-mark-complete',
\r
29 text: 'Mark Complete',
\r
30 handler: function(){
\r
31 setCompleted(!completed);
\r
33 setMsg('This task was completed on ' + new Date().format('l, F d, Y'));
\r
45 {iconCls: 'icon-delete-task', text: 'Delete', handler: function(){
\r
46 Ext.Msg.confirm('Confirm Delete', 'Are you sure you want to delete this task?', function(btn){
\r
48 opener.tx.data.tasks.remove(getTask());
\r
56 var title = new Ext.form.TextField({
\r
57 fieldLabel: 'Task Subject',
\r
62 var dueDate = new Ext.form.DateField({
\r
63 fieldLabel: 'Due Date',
\r
69 var list = new ListSelector({
\r
70 fieldLabel: 'Task List',
\r
72 store: opener.tx.data.lists,
\r
76 list.on('render', function(){
\r
77 this.menu.on('beforeshow', function(m){
\r
78 list.tree.setWidth(Math.max(180, list.getSize().width));
\r
81 win.addEventListener('closing', function(){
\r
82 opener.tx.data.lists.unbindTree(list.tree);
\r
86 var hasReminder = new Ext.form.Checkbox({
\r
87 boxLabel: 'Reminder:',
\r
91 var reminder = new Ext.ux.form.DateTime({
\r
94 timeFormat: 'g:i A',
\r
95 dateFormat: 'm/d/Y',
\r
97 tpl: opener.Templates.timeField,
\r
98 listClass:'x-combo-list-small',
\r
103 var description = new Ext.form.HtmlEditor({
\r
105 name: 'description',
\r
106 anchor: '100% -95', // anchor width by percentage and height by raw adjustment
\r
107 onEditorEvent : function(e){
\r
109 if(e.browserEvent.type == 'mousedown' && (t = e.getTarget('a', 3))){
\r
110 t.target = '_blank';
\r
112 this.updateToolbar();
\r
116 var form = new Ext.form.FormPanel({
\r
118 baseCls: 'x-plain',
\r
120 margins:'10 10 5 10',
\r
122 buttonAlign: 'right',
\r
123 minButtonWidth: 80,
\r
126 handler: function(){
\r
129 window.nativeWindow.close();
\r
134 handler: function(){ window.nativeWindow.close(); }
\r
145 baseCls: 'x-plain',
\r
149 baseCls: 'x-plain',
\r
154 baseCls: 'x-plain',
\r
160 autoEl: {cls:'divider'}
\r
164 baseCls: 'x-plain',
\r
168 baseCls: 'x-plain',
\r
174 baseCls: 'x-plain',
\r
182 var viewport = new Ext.Viewport({
\r
187 var msg = Ext.get('msg');
\r
188 var task = getTask();
\r
190 if(task && task.data.completedDate){
\r
191 setMsg('This task was completed on ' + task.data.completedDate.format('l, F d, Y'));
\r
194 hasReminder.on('check', function(cb, checked){
\r
195 reminder.setDisabled(!checked);
\r
196 if(checked && !reminder.getValue()){
\r
197 reminder.setValue(opener.tx.data.getDefaultReminder(getTask()));
\r
201 refreshData.defer(10);
\r
203 win.visible = true;
\r
208 function refreshData(){
\r
210 var task = getTask();
\r
211 hasReminder.setValue(!!task.data.reminder);
\r
212 form.getForm().loadRecord(task);
\r
213 setCompleted(task.data.completed);
\r
217 function saveData(){
\r
220 task = opener.tx.data.tasks.createTask(
\r
222 list.getRawValue(),
\r
223 dueDate.getValue(),
\r
224 description.getValue(),
\r
229 task.set('completed', completed);
\r
231 if(!hasReminder.getValue()){
\r
232 reminder.setValue('');
\r
234 form.getForm().updateRecord(task);
\r
237 function setCompleted(value){
\r
239 var cplBtn = Ext.getCmp('cpl-btn');
\r
241 cplBtn.setText('Mark Active');
\r
242 cplBtn.setIconClass('icon-mark-active');
\r
243 hasReminder.disable();
\r
244 reminder.disable();
\r
247 cplBtn.setText('Mark Complete');
\r
248 cplBtn.setIconClass('icon-mark-complete');
\r
250 hasReminder.enable();
\r
251 reminder.setDisabled(!hasReminder.checked);
\r
255 function setMsg(msgText){
\r
258 msg.setDisplayed(false);
\r
260 msg.setDisplayed('');
\r
261 msg.update(msgText);
\r
263 description.anchorSpec.bottom = function(v){
\r
266 var h = msg.getHeight();
\r
267 return v - 95 - (h ? h + 8 : 0);
\r
273 function validate(){
\r
274 if(Ext.isEmpty(title.getValue(), false)){
\r
275 Ext.Msg.alert('Warning', 'Unable to save changes. A subject is required.', function(){
\r
283 function getTask(){
\r
284 var t = opener.tx.data.tasks.lookup(taskId);
\r
286 //workaround WebKit cross-frame date issue
\r
287 fixDateMember(t.data, 'completedDate');
\r
288 fixDateMember(t.data, 'reminder');
\r
289 fixDateMember(t.data, 'dueDate');
\r