// Grid column plugin that does the complete/active button in the left-most column CompleteColumn = function(){ var grid; function getRecord(t){ var index = grid.getView().findRowIndex(t); return grid.store.getAt(index); } function onMouseDown(e, t){ if(Ext.fly(t).hasClass('task-check')){ e.stopEvent(); var record = getRecord(t); record.set('completed', !record.data.completed); grid.store.applyFilter(); } } function onMouseOver(e, t){ if(Ext.fly(t).hasClass('task-check')){ Ext.fly(t.parentNode).addClass('task-check-over'); } } function onMouseOut(e, t){ if(Ext.fly(t).hasClass('task-check')){ Ext.fly(t.parentNode).removeClass('task-check-over'); } } Ext.apply(this, { width: 22, header: '', fixed: true, menuDisabled: true, id: 'task-col', renderer: function(){ return ''; }, init : function(xg){ grid = xg; grid.on('render', function(){ var view = grid.getView(); view.mainBody.on('mousedown', onMouseDown); view.mainBody.on('mouseover', onMouseOver); view.mainBody.on('mouseout', onMouseOut); }); } }); }; ReminderColumn = function(){ var grid, menu, record; function getRecord(t){ var index = grid.getView().findRowIndex(t); return grid.store.getAt(index); } function onMenuCheck(item){ if(item.reminder === false){ record.set('reminder', ''); }else{ var s = record.data.dueDate ? record.data.dueDate.clearTime(true) : new Date().clearTime(); s = s.add('mi', Ext.state.Manager.get('defaultReminder')); s = s.add('mi', item.reminder*-1); record.set('reminder', s); } } function getMenu(){ if(!menu){ menu = new Ext.menu.Menu({ plain: true, items: [{ text: 'No Reminder', reminder: false, handler: onMenuCheck },'-',{ text: 'On the Due Date', reminder: 0, handler: onMenuCheck },'-',{ text: '1 day before', reminder: 24*60, handler: onMenuCheck },{ text: '2 days before', reminder: 48*60, handler: onMenuCheck },{ text: '3 days before', reminder: 72*60, handler: onMenuCheck },{ text: '1 week before', reminder: 7*24*60, handler: onMenuCheck },{ text: '2 weeks before', reminder: 14*24*60, handler: onMenuCheck },'-',{ text: 'Set Default Time...', handler: function(){ Ext.air.NativeWindowManager.getPrefWindow(); } }] }); } return menu; } function onMouseDown(e, t){ if(Ext.fly(t).hasClass('reminder')){ e.stopEvent(); record = getRecord(t); if (!record.data.completed) { var rmenu = getMenu(); rmenu.show(t, 'tr-br?'); } } } function onMouseOver(e, t){ if(Ext.fly(t).hasClass('reminder')){ Ext.fly(t.parentNode).addClass('reminder-over'); } } function onMouseOut(e, t){ if(Ext.fly(t).hasClass('reminder')){ Ext.fly(t.parentNode).removeClass('reminder-over'); } } Ext.apply(this, { width: 26, header: '', fixed: true, id: 'reminder-col', menuDisabled: true, dataIndex:'reminder', renderer: function(v){ return ''; }, init : function(xg){ grid = xg; grid.on('render', function(){ var view = grid.getView(); view.mainBody.on('contextmenu', onMouseDown); view.mainBody.on('mousedown', onMouseDown); view.mainBody.on('mouseover', onMouseOver); view.mainBody.on('mouseout', onMouseOut); }); } }); };