]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/ObjectGroup.js
node certificate: make parent panel scrollable
[pmg-gui.git] / js / ObjectGroup.js
index f47c2918926f6c51c3cbebae2ab40dbfca1b27dd..2223ffa3e26a0e3b6e5bd69a03889449679d0298 100644 (file)
@@ -14,7 +14,7 @@ Ext.define('PMG.ObjectGroup', {
     emptyText: gettext('Please select an object.'),
 
     setBaseUrl: function(baseurl) {
-       var me = this;
+       let me = this;
 
        me.baseurl = baseurl;
 
@@ -23,24 +23,21 @@ Ext.define('PMG.ObjectGroup', {
            me.store.setData([]);
            me.setButtonState(me.store, [], false);
        } else {
-           var url = '/api2/json' + me.baseurl + '/objects';
+           let url = '/api2/json' + me.baseurl + '/objects';
            me.store.proxy.setUrl(url);
            me.store.load();
        }
     },
 
     setObjectInfo: function(ogdata) {
-       var me = this;
+       let me = this;
 
        me.ogdata = ogdata;
 
        if (me.ogdata === undefined) {
-
            me.down('#oginfo').update(me.emptyText);
-
        } else {
-
-           var html = '<b>' + Ext.String.htmlEncode(me.ogdata.name) + '</b>';
+           let html = '<b>' + Ext.String.htmlEncode(me.ogdata.name) + '</b>';
            html += "<br><br>";
            html += Ext.String.htmlEncode(Ext.String.trim(me.ogdata.info));
 
@@ -50,7 +47,7 @@ Ext.define('PMG.ObjectGroup', {
     },
 
     setButtonState: function(store, records, success) {
-       var me = this;
+       let me = this;
        if (!success || !me.baseurl) {
            me.down('#addMenuButton').setDisabled(true);
            return;
@@ -58,30 +55,30 @@ Ext.define('PMG.ObjectGroup', {
        me.down('#addMenuButton').setDisabled(false);
     },
 
-    initComponent : function() {
-       var me = this;
+    initComponent: function() {
+       let me = this;
 
        me.store = new Ext.data.Store({
            model: 'pmg-object-list',
            proxy: {
-               type: 'proxmox'
+               type: 'proxmox',
            },
            sorters: [
                {
-                   property : 'receivertest'
+                   property: 'receivertest',
                },
                {
-                   property : 'otype',
-                   direction: 'ASC'
-               }
-           ]
+                   property: 'otype',
+                   direction: 'ASC',
+               },
+           ],
        });
 
        me.columns = [{
            header: gettext('Type'),
            dataIndex: 'otype',
            renderer: PMG.Utils.format_otype,
-           width: 200
+           width: 200,
        }];
 
        if (me.showDirection) {
@@ -90,7 +87,7 @@ Ext.define('PMG.ObjectGroup', {
                dataIndex: 'receivertest',
                renderer: function(value) {
                    return value ? PMG.Utils.receiverText : PMG.Utils.senderText;
-               }
+               },
            });
        }
 
@@ -98,16 +95,16 @@ Ext.define('PMG.ObjectGroup', {
            header: gettext('Value'),
            dataIndex: 'descr',
            renderer: Ext.String.htmlEncode,
-           flex: 1
+           flex: 1,
        });
 
-       var reload = function() {
+       let reload = function() {
             me.store.load();
         };
 
        me.selModel = Ext.create('Ext.selection.RowModel', {});
 
-       var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
+       let remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
            selModel: me.selModel,
            getUrl: function(rec) {
                return me.baseurl + '/objects/' + rec.data.id;
@@ -117,13 +114,13 @@ Ext.define('PMG.ObjectGroup', {
                return PMG.Utils.format_otype(rec.data.otype) +
                    ': ' + rec.data.descr;
            },
-           waitMsgTarget: me
+           waitMsgTarget: me,
        });
 
-       var full_subject = function(subject, receivertest) {
+       let full_subject = function(subject, receivertest) {
            if (me.showDirection) {
-               var direction = receivertest ?
-                   PMG.Utils.receiverText : PMG.Utils.senderText;
+               let direction = receivertest
+                   PMG.Utils.receiverText : PMG.Utils.senderText;
 
                return subject + ' (' + direction + ')';
            } else {
@@ -131,48 +128,48 @@ Ext.define('PMG.ObjectGroup', {
            }
        };
 
-       var run_editor = function() {
-           var rec = me.selModel.getSelection()[0];
+       let run_editor = function() {
+           let rec = me.selModel.getSelection()[0];
            if (!rec) {
                return;
            }
 
-           var editor = PMG.Utils.object_editors[rec.data.otype];
-           if (!editor) {
+           let editor = PMG.Utils.object_editors[rec.data.otype];
+           if (!editor || editor.uneditable) {
                return;
            }
 
-           var config = Ext.apply({ method: 'PUT' }, editor);
+           let config = Ext.apply({ method: 'PUT' }, editor);
            config.subject = full_subject(editor.subject, rec.data.receivertest);
            config.url = me.baseurl + '/' + editor.subdir + '/' + rec.data.id;
 
-           var win = Ext.createWidget(config);
+           let win = Ext.createWidget(config);
 
            win.load();
            win.on('destroy', reload);
            win.show();
        };
 
-       var menu_items = [];
+       let menu_items = [];
 
        Ext.Array.each(me.otype_list, function(otype) {
+           let editor = PMG.Utils.object_editors[otype];
 
-           var editor = PMG.Utils.object_editors[otype];
-
-           var config = Ext.apply({ method: 'POST' }, editor);
+           let config = Ext.apply({ method: 'POST' }, editor);
            config.subject = full_subject(editor.subject, editor.receivertest);
 
            menu_items.push({
                text: config.subject,
+               iconCls: config.iconCls || 'fa fa-question-circle',
                handler: function() {
-                   if (me.baseurl == undefined) {
+                   if (me.baseurl === undefined) {
                        return;
                    }
                    config.url = me.baseurl + '/' + editor.subdir;
-                   var win = Ext.create(config);
+                   let win = Ext.create(config);
                    win.on('destroy', reload);
                    win.show();
-               }
+               },
            });
        });
 
@@ -187,25 +184,29 @@ Ext.define('PMG.ObjectGroup', {
                    disabled: true,
                    itemId: 'addMenuButton',
                    menu: {
-                       items: menu_items
-                   }
+                       items: menu_items,
+                   },
                },
                {
                    xtype: 'proxmoxButton',
                    text: gettext('Edit'),
                    disabled: true,
                    selModel: me.selModel,
-                   handler: run_editor
+                   enableFn: function(rec) {
+                       let editor = PMG.Utils.object_editors[rec.data.otype];
+                       return editor && !editor.uneditable;
+                   },
+                   handler: run_editor,
                },
-               remove_btn
-           ]
+               remove_btn,
+           ],
        });
 
        me.dockedItems.push({
            dock: 'top',
            border: 1,
            layout: 'anchor',
-           hidden: me.hideGroupInfo ? true : false,
+           hidden: !!me.hideGroupInfo,
            itemId: 'ogdata',
            items: [
                {
@@ -222,20 +223,21 @@ 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, {
+           run_editor: run_editor,
            listeners: {
                itemdblclick: run_editor,
-               activate: reload
-           }
+               activate: reload,
+           },
        });
 
        me.callParent();
@@ -245,5 +247,5 @@ Ext.define('PMG.ObjectGroup', {
        if (me.baseurl) {
            me.setBaseUrl(me.baseurl); // configure store, load()
        }
-    }
+    },
 });