Ext.define('pbs-data-store-config', { extend: 'Ext.data.Model', fields: [ 'name', 'path', 'comment' ], proxy: { type: 'proxmox', url: "/api2/json/config/datastore" }, idProperty: 'name' }); Ext.define('PBS.DataStoreConfig', { extend: 'Ext.grid.GridPanel', alias: 'widget.pbsDataStoreConfig', title: gettext('Data Store Configuration'), initComponent : function() { var me = this; var store = new Ext.data.Store({ model: 'pbs-data-store-config', sorters: 'name', }); var reload = function() { store.load(); }; var sm = Ext.create('Ext.selection.RowModel', {}); var gc_btn = new Proxmox.button.Button({ text: gettext('Start GC'), disabled: true, selModel: sm, handler: function() { var rec = sm.getSelection()[0]; Proxmox.Utils.API2Request({ url: '/admin/datastore/' + rec.data.name + '/gc', method: 'POST', failure: function(response) { Ext.Msg.alert(gettext('Error'), response.htmlStatus); }, success: function(response, options) { var upid = response.result.data; var win = Ext.create('Proxmox.window.TaskViewer', { upid: upid }); win.show(); me.close(); } }); } }); var tbar = [ { text: gettext('Create'), handler: function() { alert("not implemented"); //var win = Ext.create('PVE.dc.PoolEdit', {}); //win.on('destroy', reload); //win.show(); } }, gc_btn //edit_btn, remove_btn ]; Proxmox.Utils.monStoreErrors(me, store); Ext.apply(me, { store: store, selModel: sm, tbar: tbar, viewConfig: { trackOver: false }, columns: [ { header: gettext('Name'), sortable: true, dataIndex: 'name', flex: 1 }, { header: gettext('Path'), sortable: true, dataIndex: 'path', flex: 1 }, { header: gettext('Comment'), sortable: false, dataIndex: 'comment', renderer: Ext.String.htmlEncode, flex: 2 } ], listeners: { activate: reload } }); me.callParent(); store.load(); } });