]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/ha/Resources.js
update shipped appliance info index
[pve-manager.git] / www / manager6 / ha / Resources.js
index bd6c337c46ae2196b514b808bb6497f2effeeb72..edfadde2267048b2e6ae858b5a95eb7bc8402b10 100644 (file)
@@ -7,202 +7,162 @@ Ext.define('PVE.ha.ResourcesView', {
     stateful: true,
     stateId: 'grid-ha-resources',
 
-    initComponent : function() {
-       var me = this;
-
-       var caps = Ext.state.Manager.get('GuiCap');
+    initComponent: function() {
+       let me = this;
 
        if (!me.rstore) {
            throw "no store given";
        }
 
        Proxmox.Utils.monStoreErrors(me, me.rstore);
-
-       var store = Ext.create('Proxmox.data.DiffStore', {
+       let store = Ext.create('Proxmox.data.DiffStore', {
            rstore: me.rstore,
            filters: {
                property: 'type',
-               value: 'service'
-           }
+               value: 'service',
+           },
        });
 
-       var reload = function() {
-           me.rstore.load();
-       };
-
-       var render_error = function(dataIndex, value, metaData, record) {
-           var errors = record.data.errors;
-           if (errors) {
-               var msg = errors[dataIndex];
-               if (msg) {
-                   metaData.tdCls = 'proxmox-invalid-row';
-                   var html = '<p>' +  Ext.htmlEncode(msg) + '</p>';
-                   metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' + 
-                       html.replace(/\"/g,'&quot;') + '"';
-               }
-           }
-           return value;
-       };
+       let sm = Ext.create('Ext.selection.RowModel', {});
 
-       var sm = Ext.create('Ext.selection.RowModel', {});
+       let run_editor = function() {
+           let rec = sm.getSelection()[0];
+           let sid = rec.data.sid;
 
-       var run_editor = function() {
-           var rec = sm.getSelection()[0];
-           var sid = rec.data.sid;
-           
-           var regex =  /^(\S+):(\S+)$/;
-           var res = regex.exec(sid);
-
-           if (res[1] !== 'vm' && res[1] !== 'ct') {
+           let res = sid.match(/^(\S+):(\S+)$/);
+           if (!res || (res[1] !== 'vm' && res[1] !== 'ct')) {
+               console.warn(`unknown HA service ID type ${sid}`);
                return;
            }
-           var guestType = res[1];
-           var vmid = res[2];
-           
-            var win = Ext.create('PVE.ha.VMResourceEdit',{
-                guestType: guestType,
-                vmid: vmid
+           let [, guestType, vmid] = res;
+           Ext.create('PVE.ha.VMResourceEdit', {
+               guestType: guestType,
+               vmid: vmid,
+               listeners: {
+                   destroy: () => me.rstore.load(),
+               },
+               autoShow: true,
             });
-            win.on('destroy', reload);
-            win.show();
        };
 
-       var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
-           selModel: sm,
-           baseurl: '/cluster/ha/resources/',
-           getUrl: function(rec) {
-               var me = this;
-               return me.baseurl + '/' + rec.get('sid');
-           },
-           callback: function() {
-               reload();
-           }
-       });
-       
-       var edit_btn = new Proxmox.button.Button({
-           text: gettext('Edit'),
-           disabled: true,
-           selModel: sm,
-           handler: run_editor
-       });
+       let caps = Ext.state.Manager.get('GuiCap');
 
        Ext.apply(me, {
            store: store,
            selModel: sm,
            viewConfig: {
-               trackOver: false
+               trackOver: false,
            },
            tbar: [
                {
                    text: gettext('Add'),
                    disabled: !caps.nodes['Sys.Console'],
                    handler: function() {
-                       var win = Ext.create('PVE.ha.VMResourceEdit',{});
-                       win.on('destroy', reload);
-                       win.show();
-                   }
+                       Ext.create('PVE.ha.VMResourceEdit', {
+                           listeners: {
+                               destroy: () => me.rstore.load(),
+                           },
+                           autoShow: true,
+                       });
+                   },
+               },
+               {
+                   xtype: 'proxmoxButton',
+                   text: gettext('Edit'),
+                   disabled: true,
+                   selModel: sm,
+                   handler: run_editor,
+               },
+               {
+                   xtype: 'proxmoxStdRemoveButton',
+                   selModel: sm,
+                   getUrl: function(rec) {
+                       return `/cluster/ha/resources/${rec.get('sid')}`;
+                   },
+                   callback: () => me.rstore.load(),
                },
-               edit_btn, remove_btn
            ],
-
            columns: [
                {
                    header: 'ID',
                    width: 100,
                    sortable: true,
-                   dataIndex: 'sid'
+                   dataIndex: 'sid',
                },
                {
                    header: gettext('State'),
                    width: 100,
                    sortable: true,
-                   dataIndex: 'state'
+                   dataIndex: 'state',
                },
                {
                    header: gettext('Node'),
                    width: 100,
                    sortable: true,
-                   dataIndex: 'node'
+                   dataIndex: 'node',
                },
                {
                    header: gettext('Request State'),
                    width: 100,
                    hidden: true,
                    sortable: true,
-                   renderer: function(v) {
-                       return v || 'started';
-                   },
-                   dataIndex: 'request_state'
+                   renderer: v => v || 'started',
+                   dataIndex: 'request_state',
                },
                {
                    header: gettext('CRM State'),
                    width: 100,
                    hidden: true,
                    sortable: true,
-                   dataIndex: 'crm_state'
+                   dataIndex: 'crm_state',
+               },
+               {
+                   header: gettext('Name'),
+                   width: 100,
+                   sortable: true,
+                   dataIndex: 'vname',
                },
                {
                    header: gettext('Max. Restart'),
                    width: 100,
                    sortable: true,
-                   renderer: function(v) {
-                       if (v === undefined) {
-                           return '1';
-                       }
-                       return v;
-                   },
-                   dataIndex: 'max_restart'
+                   renderer: (v) => v === undefined ? '1' : v,
+                   dataIndex: 'max_restart',
                },
                {
                    header: gettext('Max. Relocate'),
                    width: 100,
                    sortable: true,
-                   renderer: function(v) {
-                       if (v === undefined) {
-                           return '1';
-                       }
-                       return v;
-                   },
-                   dataIndex: 'max_relocate'
+                   renderer: (v) => v === undefined ? '1' : v,
+                   dataIndex: 'max_relocate',
                },
                {
                    header: gettext('Group'),
                    width: 200,
                    sortable: true,
-                   renderer: function(value, metaData, record) {
-                       return render_error('group', value, metaData, record);
+                   renderer: function(value, metaData, { data }) {
+                       if (data.errors && data.errors.group) {
+                           metaData.tdCls = 'proxmox-invalid-row';
+                           let html = `<p>${Ext.htmlEncode(data.errors.group)}</p>`;
+                           metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' + html + '"';
+                       }
+                       return value;
                    },
-                   dataIndex: 'group'
+                   dataIndex: 'group',
                },
                {
                    header: gettext('Description'),
                    flex: 1,
                    renderer: Ext.String.htmlEncode,
-                   dataIndex: 'comment'
-               }
+                   dataIndex: 'comment',
+               },
            ],
            listeners: {
-               beforeselect: function(grid, record, index, eOpts) {
-                   if (!caps.nodes['Sys.Console']) {
-                       return false;
-                   }
-               },
-               itemdblclick: run_editor
-           }
+               beforeselect: (grid, record, index, eOpts) => caps.nodes['Sys.Console'],
+               itemdblclick: run_editor,
+           },
        });
 
        me.callParent();
-    }
-}, function() {
-
-    Ext.define('pve-ha-resources', {
-       extend: 'Ext.data.Model',
-       fields: [ 
-         'sid', 'state', 'digest', 'errors', 'group', 'comment',
-         'max_restart', 'max_relocate', 'type', 'status', 'node',
-         'crm_state', 'request_state'
-       ],
-       idProperty: 'sid'
-    });
-
+    },
 });