Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

/*
 * Ext JS Library 0.20
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */

// 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: '<div class="task-col-hd"></div>',
        fixed: true,
                menuDisabled: true,
        id: 'task-col',
        renderer: function(){
            return '<div class="task-check"></div>';
        },
        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: '<div class="reminder-col-hd"></div>',
        fixed: true,
        id: 'reminder-col',
                menuDisabled: true,
        dataIndex:'reminder',
        renderer: function(v){
                        return '<div class="reminder '+(v ? 'reminder-active' : '')+'"></div>';
        },
        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);
            });
        }
    });
};