]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/ObjectGroup.js
ClusterAdministration.js - sort nodes by cid
[pmg-gui.git] / js / ObjectGroup.js
index e85d1285a28ed144c385da4d49549259d7d1e6ae..1e76ef3d3f8bbc8113448fb644edd106f905edba 100644 (file)
@@ -1,3 +1,4 @@
+/*global Proxmox*/
 Ext.define('PMG.ObjectGroup', {
     extend: 'Ext.grid.GridPanel',
     alias: 'widget.pmgObjectGroup',
@@ -21,13 +22,11 @@ Ext.define('PMG.ObjectGroup', {
        if (me.baseurl === undefined) {
            me.store.proxy.setUrl(undefined);
            me.store.setData([]);
-           me.down('#addMenuButton').setDisabled(true);
+           me.setButtonState(me.store, [], false);
        } else {
            var url = '/api2/json' + me.baseurl + '/objects';
            me.store.proxy.setUrl(url);
-           me.store.load(function() {
-               me.down('#addMenuButton').setDisabled(false);
-           });
+           me.store.load();
        }
     },
 
@@ -51,6 +50,15 @@ 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;
 
@@ -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;
@@ -188,9 +197,13 @@ Ext.define('PMG.ObjectGroup', {
                    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
            ]
        });
 
@@ -233,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()
        }