]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/ActionList.js
hourly mail distribution chart: add dynamic color switching
[pmg-gui.git] / js / ActionList.js
index af5e2e3cb23ef39b9a73f3cd7d29065b8c7ed192..a94e3e14e88113d0a74db920d6f636ba66ffc076 100644 (file)
@@ -1,11 +1,10 @@
-/*global Proxmox*/
 Ext.define('pmg-action-list', {
     extend: 'Ext.data.Model',
     fields: [
-       'id', 'name', 'info', 'descr',
-       { name: 'otype', type: 'integer' }
+       'id', 'name', 'info', 'descr', 'editable',
+       { name: 'otype', type: 'integer' },
     ],
-    idProperty: 'id'
+    idProperty: 'id',
 });
 
 Ext.define('PMG.ActionList', {
@@ -21,19 +20,19 @@ Ext.define('PMG.ActionList', {
 
     enableButtons: true,
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
 
        me.store = new Ext.data.Store({
            model: 'pmg-action-list',
            proxy: {
                type: 'proxmox',
-               url: "/api2/json" + me.baseurl + '/objects'
+               url: "/api2/json" + me.baseurl + '/objects',
            },
            sorters: {
                property: 'name',
-               order: 'DESC'
-           }
+               direction: 'ASC',
+           },
        });
 
        me.selModel = Ext.create('Ext.selection.RowModel', {});
@@ -69,15 +68,15 @@ Ext.define('PMG.ActionList', {
            getUrl: function(rec) {
                return me.baseurl + '/objects/' + rec.data.id;
            },
+           enableFn: rec => !!rec.data.editable,
            callback: reload,
            getRecordName: function(rec) { return rec.data.descr; },
-           waitMsgTarget: me
+           waitMsgTarget: me,
        });
 
        var menu_items = [];
 
        Ext.Array.each(me.otype_list, function(otype) {
-
            var editor = PMG.Utils.object_editors[otype];
 
            var config = Ext.apply({ method: 'POST' }, editor);
@@ -86,14 +85,14 @@ Ext.define('PMG.ActionList', {
            menu_items.push({
                text: config.subject,
                handler: function() {
-                   if (me.baseurl == undefined) {
+                   if (me.baseurl === undefined) {
                        return;
                    }
                    config.url = me.baseurl + '/' + editor.subdir;
                    var win = Ext.createWidget('proxmoxWindowEdit', config);
                    win.on('destroy', reload);
                    win.show();
-               }
+               },
            });
        });
 
@@ -101,17 +100,18 @@ Ext.define('PMG.ActionList', {
            {
                text: gettext('Add'),
                menu: new Ext.menu.Menu({
-                   items: menu_items
-               })
+                   items: menu_items,
+               }),
            },
             {
                xtype: 'proxmoxButton',
                text: gettext('Edit'),
                disabled: true,
                selModel: me.selModel,
-               handler: run_editor
+               enableFn: rec => !!rec.data.editable,
+               handler: run_editor,
             },
-           remove_btn
+           remove_btn,
         ];
 
        Proxmox.Utils.monStoreErrors(me, me.store, true);
@@ -128,22 +128,27 @@ Ext.define('PMG.ActionList', {
                    sortable: true,
                    width: 200,
                    dataIndex: 'name',
-                   renderer: Ext.String.htmlEncode
+                   renderer: Ext.String.htmlEncode,
                },
                {
                    header: gettext('Description'),
                    sortable: true,
                    width: 300,
                    dataIndex: 'descr',
-                   renderer: Ext.String.htmlEncode
+                   renderer: Ext.String.htmlEncode,
                },
                {
                    header: gettext('Comment'),
                    sortable: false,
                    flex: 1,
                    dataIndex: 'info',
-                   renderer: Ext.String.htmlEncode
-               }
+                   renderer: Ext.String.htmlEncode,
+               },
+               {
+                   header: gettext('Editable'),
+                   dataIndex: 'editable',
+                   renderer: Proxmox.Utils.format_boolean,
+               },
            ],
            listeners: {
                itemdblclick: function() {
@@ -151,12 +156,12 @@ Ext.define('PMG.ActionList', {
                        run_editor();
                    }
                },
-               activate: reload
-           }
+               activate: reload,
+           },
        });
 
        me.callParent();
 
        reload(); // initial load
-    }
+    },
 });