Aliases.js 3.45 KB
Ext.define('MyMA.view.Aliases', {
    extend: 'Ext.window.Window',
    alias: 'widget.aliases',
    layout: 'fit',
    minimizable: true,
    constrainHeader: true,
    closeAction: 'destroy',
    width: 900,
    listeners: {
    	render: function(win) {
    		if(Ext.getBody().getHeight() > 500) {
                win.setHeight(Ext.getBody().getHeight() - 150);
    		}
    	}
    },
    items: [{
        xtype: 'grid',
        border: false,
        viewConfig: {
            plugins: {
                ptype: 'gridviewdragdrop'
            },
            listeners: {
            	/**
            	 * This event is fired through the GridView. 
            	 * Add listeners to the GridView object Fired when a drop operation has been completed and the data has been moved or copied
            	 * @param {} node
            	 * @param {} data
            	 * @param {} overModel
            	 * @param {} dropPosition
            	 * @param {} eOpts
            	 */
            	beforedrop: function(node, data, overModel, dropPosition, eOpts) {
            		Ext.each(data.records, function(record) {
            			if(record.get('alias') != this.groupName) {
            				record.set('alias', this.groupName);
                			record.save({
                                action: 'update',
                			    scope: this,
                				failure: function(record) {
                				    record.store.reload();
                			    }
                		    });
            		    }
            		}, {
            		    data: data,
            		    groupName: this.getFeature('alias-groups').getGroupName(node),
            		    model: overModel
            		});
            	}
            }
        },
        tbar: [{
            xtype: 'button',
            itemId: 'addrecord',
            iconCls: 'x-ibtn-add',
            text: 'New Item'
        }, {
            xtype: 'tbseparator',
            width: 5
        }, {
            xtype: 'searchfield',
            handler: 'search',
            name: 'query'
        }, {
            xtype: 'tbspacer',
            width: 5
        }, {
            xtype: 'button',
            itemId: 'search',
            text: 'Search'
        }],
        bbar: {
            xtype: 'pagingtoolbar',
            displayInfo: true,
            store: 'Aliases'
        },
        features: [{
        	ftype: 'grouping',
        	id: 'alias-groups',
            groupHeaderTpl: 'Group: {name} ({rows.length})',
            startCollapsed: false
        }],
        selModel: {
            selType: 'rowmodel'
        },
        columns: [{
            xtype: 'actioncolumn',
            width: 30,
            items: [{
                getClass: function() {
                    return 'x-ibtn-edit x-ibtn-def';
                }
            }]
        }, {
            header: 'ID',
            dataIndex: 'id',
            width: 40
        }, {
            header: 'Recipient',
            dataIndex: 'recipient',
            flex: 1
        }, {
            header: 'Alias',
            hidden: true,
            dataIndex: 'alias'
        }, {
            header: 'Comment',
            dataIndex: 'comment',
            flex: 1
        }, {
            xtype: 'actioncolumn',
            width: 30,
            items: [{
                getClass: function() {
                    return 'x-ibtn-delete x-ibtn-def';
                }
            }]
        }],
        selType: 'rowmodel',
        multiSelect: true,
        store: 'Aliases'
    }]
});