]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/ClusterAdministration.js
correctly use 'getStore' instead of 'get' and reload instead of load
[pmg-gui.git] / js / ClusterAdministration.js
index 48b7740406d8ff550c464713ed7a9eea259e5327..f59c1013743142307c2d1f5372bacc3b2a72bea6 100644 (file)
@@ -1,14 +1,27 @@
+/*global Proxmox*/
 Ext.define('pmg-cluster', {
     extend: 'Ext.data.Model',
     fields: [
        'type', 'name', 'ip', 'hostrsapubkey', 'rootrsapubkey',
        'fingerprint', { type: 'integer', name: 'cid' },
        { type: 'boolean', name: 'insync' },
-       'memory', 'loadavg', 'uptime', 'rootfs', 'conn_error'
+       'memory', 'loadavg', 'uptime', 'rootfs', 'conn_error', 'level',
+       { type: 'number', name: 'memory_per',
+         calculate: function(data) {
+             var mem = data.memory;
+             return Ext.isObject(mem) ? mem.used/mem.total : 0;
+         }
+       },
+       { type: 'number', name: 'rootfs_per',
+         calculate: function(data) {
+             var du = data.rootfs;
+             return Ext.isObject(du) ? du.used/du.total : 0;
+         }
+       }
     ],
     proxy: {
         type: 'proxmox',
-       url: "/api2/json/config/cluster/nodes"
+       url: "/api2/json/config/cluster/status"
     },
     idProperty: 'cid'
 });
@@ -64,7 +77,7 @@ Ext.define('PMG.ClusterAddNodeWindow', {
        {
            xtype: 'component',
            border: false,
-           padding: 10,
+           padding: '10 10 10 10',
            html: gettext("Please use the 'Join' button on the node you want to add, using the following IP address and fingerprint.")
        },
        {
@@ -90,6 +103,8 @@ Ext.define('PMG.ClusterAddNodeWindow', {
     ]
 });
 
+/*jslint confusion: true*/
+/* bind is a function and object */
 Ext.define('PMG.ClusterAdministration', {
     extend: 'Ext.tab.Panel',
     xtype: 'pmgClusterAdministration',
@@ -116,10 +131,14 @@ Ext.define('PMG.ClusterAdministration', {
 
                init: function(view) {
                    view.store.on('load', this.onLoad, this);
+                   Proxmox.Utils.monStoreErrors(view, view.getStore());
                },
 
-               onLoad: function(store, records) {
+               onLoad: function(store, records, success) {
                    var vm = this.getViewModel();
+                   if (!success || !records) {
+                       return;
+                   }
                    vm.set('nodecount', records.length);
 
                    var master = null;
@@ -228,7 +247,9 @@ Ext.define('PMG.ClusterAdministration', {
                    renderer: function(value, metaData, record) {
                        var d = record.data;
                        var state = 'active';
-                       if (!d.insync) state = 'syncing';
+                       if (!d.insync) {
+                           state = 'syncing';
+                       }
                        if (d.conn_error) {
                            metaData.tdCls = 'x-form-invalid-field';
                            var html = '<p>' +  Ext.htmlEncode(d.conn_error) + '</p>';
@@ -241,6 +262,12 @@ Ext.define('PMG.ClusterAdministration', {
                    },
                    dataIndex: 'insync'
                },
+               {
+                   header: gettext('Subscription'),
+                   width: 120,
+                   renderer: Proxmox.Utils.format_subscription_level,
+                   dataIndex: 'level'
+               },
                {
                    header: gettext('Uptime'),
                    width: 150,
@@ -253,29 +280,27 @@ Ext.define('PMG.ClusterAdministration', {
                        if (Ext.isArray(value)) {
                            return value[0];
                        }
-                       return value;
+                       return value.toString();
                    },
                    dataIndex: 'loadavg'
                },
                {
-                   header: gettext('RAM usage'),
-                   renderer: function(value) {
-                       if (Ext.isObject(value)) {
-                           return (value.used*100/value.total).toFixed(2) + '%';
-                       }
-                       return value;
+                   xtype: 'widgetcolumn',
+                   widget: {
+                       xtype: 'progressbarwidget',
+                       textTpl: '{value:percent}'
                    },
-                   dataIndex: 'memory'
+                   header: gettext('RAM usage'),
+                   dataIndex: 'memory_per'
                },
                {
-                   header: gettext('HD space'),
-                   renderer: function(value) {
-                       if (Ext.isObject(value)) {
-                           return (value.used*100/value.total).toFixed(2) + '%';
-                       }
-                       return value;
+                   xtype: 'widgetcolumn',
+                   widget: {
+                       xtype: 'progressbarwidget',
+                       textTpl: '{value:percent}'
                    },
-                   dataIndex: 'rootfs'
+                   header: gettext('HD space'),
+                   dataIndex: 'rootfs_per'
                }
            ]
        }