]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/ha/Resources.js
use Proxmox.button.StdRemoveButton where possible
[pve-manager.git] / www / manager6 / ha / Resources.js
index 4419f3870e3a3ef108db4de35d17edebe42ddf84..189f90e1f8a76a470ab717063249d1e9fa7c3a1f 100644 (file)
@@ -2,25 +2,32 @@ Ext.define('PVE.ha.ResourcesView', {
     extend: 'Ext.grid.GridPanel',
     alias: ['widget.pveHAResourcesView'],
 
+    onlineHelp: 'ha_manager_resources',
+
+    stateful: true,
+    stateId: 'grid-ha-resources',
+
     initComponent : function() {
        var me = this;
 
        var caps = Ext.state.Manager.get('GuiCap');
 
-       var store = new Ext.data.Store({
-           model: 'pve-ha-resources',
-           proxy: {
-                type: 'pve',
-               url: "/api2/json/cluster/ha/resources"
-           },
-           sorters: { 
-               property: 'sid', 
-               order: 'DESC' 
+       if (!me.rstore) {
+           throw "no store given";
+       }
+
+       PVE.Utils.monStoreErrors(me, me.rstore);
+
+       var store = Ext.create('PVE.data.DiffStore', {
+           rstore: me.rstore,
+           filters: {
+               property: 'type',
+               value: 'service'
            }
        });
-       
+
        var reload = function() {
-           store.load();
+           me.rstore.load();
        };
 
        var render_error = function(dataIndex, value, metaData, record) {
@@ -28,7 +35,7 @@ Ext.define('PVE.ha.ResourcesView', {
            if (errors) {
                var msg = errors[dataIndex];
                if (msg) {
-                   metaData.tdCls = 'x-form-invalid-field';
+                   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;') + '"';
@@ -46,35 +53,29 @@ Ext.define('PVE.ha.ResourcesView', {
            var regex =  /^(\S+):(\S+)$/;
            var res = regex.exec(sid);
 
-         if (res[1] !== 'vm' && res[1] !== 'ct') { return; };
-           
+           if (res[1] !== 'vm' && res[1] !== 'ct') {
+               return;
+           }
+           var guestType = res[1];
            var vmid = res[2];
            
             var win = Ext.create('PVE.ha.VMResourceEdit',{
+                guestType: guestType,
                 vmid: vmid
             });
             win.on('destroy', reload);
             win.show();
        };
 
-       var remove_btn = new PVE.button.Button({
-           text: gettext('Remove'),
-           disabled: true,
+       var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
            selModel: sm,
-           handler: function(btn, event, rec) {
-               var sid = rec.data.sid;
-
-               PVE.Utils.API2Request({
-                   url: '/cluster/ha/resources/' + sid,
-                   method: 'DELETE',
-                   waitMsgTarget: me,
-                   callback: function() {
-                       reload();
-                   },
-                   failure: function (response, opts) {
-                       Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-                   }
-               });
+           baseurl: '/cluster/ha/resources/',
+           getUrl: function(rec) {
+               var me = this;
+               return me.baseurl + '/' + rec.get('sid');
+           },
+           callback: function() {
+               reload();
            }
        });
        
@@ -88,7 +89,6 @@ Ext.define('PVE.ha.ResourcesView', {
        Ext.apply(me, {
            store: store,
            selModel: sm,
-           stateful: false,
            viewConfig: {
                trackOver: false
            },
@@ -116,10 +116,48 @@ Ext.define('PVE.ha.ResourcesView', {
                    header: gettext('State'),
                    width: 100,
                    sortable: true,
+                   dataIndex: 'state'
+               },
+               {
+                   header: gettext('Node'),
+                   width: 100,
+                   sortable: true,
+                   dataIndex: 'node'
+               },
+               {
+                   header: gettext('Request State'),
+                   width: 100,
+                   hidden: true,
+                   sortable: true,
                    renderer: function(v) {
-                       return v ? v : 'enabled';
+                       return v || 'started';
                    },
-                   dataIndex: 'state'
+                   dataIndex: 'request_state'
+               },
+               {
+                   header: gettext('CRM State'),
+                   width: 100,
+                   hidden: true,
+                   sortable: true,
+                   dataIndex: 'crm_state'
+               },
+               {
+                   header: gettext('Max. Restart'),
+                   width: 100,
+                   sortable: true,
+                   renderer: function(v) {
+                       return v || '1';
+                   },
+                   dataIndex: 'max_restart'
+               },
+               {
+                   header: gettext('Max. Relocate'),
+                   width: 100,
+                   sortable: true,
+                   renderer: function(v) {
+                       return v || '1';
+                   },
+                   dataIndex: 'max_relocate'
                },
                {
                    header: gettext('Group'),
@@ -138,7 +176,6 @@ Ext.define('PVE.ha.ResourcesView', {
                }
            ],
            listeners: {
-               show: reload,
                beforeselect: function(grid, record, index, eOpts) {
                    if (!caps.nodes['Sys.Console']) {
                        return false;
@@ -155,7 +192,9 @@ Ext.define('PVE.ha.ResourcesView', {
     Ext.define('pve-ha-resources', {
        extend: 'Ext.data.Model',
        fields: [ 
-         'sid', 'state', 'digest', 'errors', 'group', 'comment'
+         'sid', 'state', 'digest', 'errors', 'group', 'comment',
+         'max_restart', 'max_relocate', 'type', 'status', 'node',
+         'crm_state', 'request_state'
        ],
        idProperty: 'sid'
     });