GroupView.js 2.09 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Ext.define('PVE.dc.GroupView', {
    extend: 'Ext.grid.GridPanel',

    alias: ['widget.pveGroupView'],

    initComponent : function() {
	var me = this;

	var store = new Ext.data.Store({
	    model: 'pve-groups',
	    proxy: {
                type: 'pve',
		url: "/api2/json/access/groups"
	    },
	    sorters: { 
		property: 'groupid', 
		order: 'DESC' 
	    }
	});

        var reload = function() {
            store.load();
        };

25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
  	var remove_btn = new Ext.Button({
	    text: 'Delete',
	    disabled: true,
	    handler: function() {
		var sm = me.getSelectionModel();
		var rec = sm.getSelection()[0];
		if (!rec) {
		    return;
		}
		var groupid = rec.data.groupid;

		var msg = 'Are you sure you want to permanently delete the group: ' + groupid;
		Ext.Msg.confirm('Deletion Confirmation', msg, function(btn) {
		    if (btn !== 'yes') {
			return;
		    }
		    PVE.Utils.API2Request({
			url: '/access/groups/' + groupid,
			method: 'DELETE',
			waitMsgTarget: me,
			callback: function() {
			    reload();
			},
			failure: function (response, opts) {
			    Ext.Msg.alert('Error',response.htmlStatus);
			}
		    });
		});
	    }
	});

	var tbar = [
57 58 59 60 61 62 63 64 65
            {
		text: 'Create',
		handler: function() {
		    var win = Ext.create('PVE.dc.GroupEdit', {
		    });
		    win.on('destroy', reload);
		    win.show();
		}
            },
66
	    remove_btn
67 68
        ];

69 70 71 72 73
	var set_button_status = function() {
	    var sm = me.getSelectionModel();
	    var rec = sm.getSelection()[0];
	    remove_btn.setDisabled(!rec);
	};
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96

	Ext.apply(me, {
	    store: store,
	    stateful: false,
	    tbar: tbar,
	    viewConfig: {
		trackOver: false
	    },
	    columns: [
		{
		    header: 'Group name',
		    width: 200,
		    sortable: true,
		    dataIndex: 'groupid'
		},
		{
		    header: 'Comment',
		    sortable: false,
		    dataIndex: 'comment',
		    flex: 1
		}
	    ],
	    listeners: {
97 98
		show: reload,
		selectionchange: set_button_status
99 100 101 102 103 104 105 106 107 108 109 110 111 112
	    }
	});

	me.callParent();
    }
}, function() {

    Ext.define('pve-groups', {
	extend: 'Ext.data.Model',
	fields: [ 'groupid', 'comment' ],
	idProperty: 'groupid'
    });

});