X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=js%2FObjectGroup.js;h=1e76ef3d3f8bbc8113448fb644edd106f905edba;hb=ad80b5603294301557154f1cbc2e09c264e16805;hp=2f84d3d065510c2beb597f0eff4d98fa4d19461b;hpb=5f3ec152ccfb092d6e1e2f17ac3e27a7931b1ce5;p=pmg-gui.git diff --git a/js/ObjectGroup.js b/js/ObjectGroup.js index 2f84d3d..1e76ef3 100644 --- a/js/ObjectGroup.js +++ b/js/ObjectGroup.js @@ -1,3 +1,4 @@ +/*global Proxmox*/ Ext.define('PMG.ObjectGroup', { extend: 'Ext.grid.GridPanel', alias: 'widget.pmgObjectGroup', @@ -19,18 +20,13 @@ Ext.define('PMG.ObjectGroup', { me.baseurl = baseurl; if (me.baseurl === undefined) { - me.store.setProxy(undefined); + me.store.proxy.setUrl(undefined); me.store.setData([]); - me.down('#addMenuButton').setDisabled(true); + me.setButtonState(me.store, [], false); } else { - me.store.setProxy({ - type: 'proxmox', - url: '/api2/json' + me.baseurl + '/objects' - }); - - me.store.load(function() { - me.down('#addMenuButton').setDisabled(false); - }); + var url = '/api2/json' + me.baseurl + '/objects'; + me.store.proxy.setUrl(url); + me.store.load(); } }, @@ -54,14 +50,26 @@ Ext.define('PMG.ObjectGroup', { } }, + setButtonState: function(store, records, success) { + var me = this; + if (!success || !me.baseurl) { + me.down('#addMenuButton').setDisabled(true); + return; + } + me.down('#addMenuButton').setDisabled(false); + }, + initComponent : function() { var me = this; me.store = new Ext.data.Store({ model: 'pmg-object-list', + proxy: { + type: 'proxmox' + }, sorters: [ { - property : 'receivertest', + property : 'receivertest' }, { property : 'otype', @@ -92,7 +100,7 @@ Ext.define('PMG.ObjectGroup', { dataIndex: 'descr', renderer: Ext.String.htmlEncode, flex: 1 - }) + }); var reload = function() { me.store.load(); @@ -131,7 +139,7 @@ Ext.define('PMG.ObjectGroup', { } var editor = PMG.Utils.object_editors[rec.data.otype]; - if (!editor) { + if (!editor || editor.uneditable) { return; } @@ -157,6 +165,7 @@ Ext.define('PMG.ObjectGroup', { menu_items.push({ text: config.subject, + iconCls: config.iconCls || 'fa fa-question-circle', handler: function() { if (me.baseurl == undefined) { return; @@ -179,18 +188,22 @@ Ext.define('PMG.ObjectGroup', { text: gettext('Add'), disabled: true, itemId: 'addMenuButton', - menu: new Ext.menu.Menu({ + menu: { items: menu_items - }) + } }, { xtype: 'proxmoxButton', text: gettext('Edit'), disabled: true, selModel: me.selModel, + enableFn: function(rec) { + var editor = PMG.Utils.object_editors[rec.data.otype]; + return (editor && !editor.uneditable); + }, handler: run_editor }, - remove_btn + remove_btn ] }); @@ -215,13 +228,15 @@ Ext.define('PMG.ObjectGroup', { me.fireEvent('dblclickOGInfo', me, e, t, me.ogdata); }, element: 'el', - scope: this, + scope: this } } } ] }); + Proxmox.Utils.monStoreErrors(me, me.store, true); + Ext.apply(me, { listeners: { itemdblclick: run_editor, @@ -231,6 +246,8 @@ Ext.define('PMG.ObjectGroup', { me.callParent(); + me.mon(me.store, 'load', me.setButtonState, me); + if (me.baseurl) { me.setBaseUrl(me.baseurl); // configure store, load() }