[pve-devel] [PATCH manager 6/8] change layout of dc summary and nodeview

Dominik Csapak d.csapak at proxmox.com
Fri Oct 28 13:11:46 CEST 2016


this patch changes a few things:
 * instead of having the nodeview in full size, it is just a panel in
   the summary, similar to node/qemu/lxc summary
 * creates the store in the summary component, and not in the nodeview,
   because we need it later
 * makes most of the config options of the nodeview declarative, gets
   rid of the initcomponent
 * changes the 'online' yes/no to a check/x
 * makes the panel resizable with tools

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 www/manager6/dc/NodeView.js | 150 ++++++++++++++++++--------------------------
 www/manager6/dc/Summary.js  |  57 +++++++++++++----
 2 files changed, 104 insertions(+), 103 deletions(-)

diff --git a/www/manager6/dc/NodeView.js b/www/manager6/dc/NodeView.js
index eb9fb27..dea5f1d 100644
--- a/www/manager6/dc/NodeView.js
+++ b/www/manager6/dc/NodeView.js
@@ -1,103 +1,73 @@
 Ext.define('PVE.dc.NodeView', {
     extend: 'Ext.grid.GridPanel',
+    alias: 'widget.pveDcNodeView',
 
-    alias: ['widget.pveDcNodeView'],
+    title: gettext('Nodes'),
+    disableSelection: true,
+    scrollable: true,
 
-    initComponent : function() {
-	var me = this;
-
-	var rstore = Ext.create('PVE.data.UpdateStore', {
-	    interval: 3000,
-	    storeid: 'pve-dc-nodes',
-	    model: 'pve-dc-nodes',
-	    proxy: {
-                type: 'pve',
-                url: "/api2/json/cluster/status"
-	    },
-	    filters: {
-		property: 'type',
-		value   : 'node'
-	    }
-	});
-
-	var store = Ext.create('PVE.data.DiffStore', { rstore: rstore });
-
-	var noClusterText = gettext("Standalone node - no cluster defined");
-	var status = Ext.create('Ext.Component', {
-	    padding: 2,
-	    html: ' ',
-	    dock: 'bottom'
-	});
-
-	Ext.apply(me, {
-	    store: store,
-	    stateful: false,
-	    bbar: [ status ],
-	    columns: [
-		{
-		    header: gettext('Name'),
-		    width: 200,
-		    sortable: true,
-		    dataIndex: 'name'
-		},
-		{
-		    header: 'ID',
-		    width: 50,
-		    sortable: true,
-		    dataIndex: 'nodeid'
-		},
-		{
-		    header: gettext('Online'),
-		    width: 100,
-		    sortable: true,
-		    dataIndex: 'online',
-		    renderer: PVE.Utils.format_boolean
-		},
-		{
-		    header: gettext('Support'),
-		    width: 100,
-		    sortable: true,
-		    dataIndex: 'level',
-		    renderer: PVE.Utils.render_support_level
-		},
-		{
-		    header: gettext('Server Address'),
-		    flex: 1,
-		    sortable: true,
-		    dataIndex: 'ip'
+    columns: [
+	{
+	    header: gettext('Name'),
+	    flex: 1,
+	    sortable: true,
+	    dataIndex: 'name'
+	},
+	{
+	    header: 'ID',
+	    width: 40,
+	    sortable: true,
+	    dataIndex: 'nodeid'
+	},
+	{
+	    header: gettext('Online'),
+	    width: 60,
+	    sortable: true,
+	    dataIndex: 'online',
+	    renderer: function(value) {
+		var icon = '<i class="fa good fa-check"></i>';
+		if (!value) {
+		    icon = '<i class="fa critical fa-times"></i>';
 		}
-	    ],
-	    listeners: {
-		show: rstore.startUpdate,
-		destroy: rstore.stopUpdate
-	    }
-	});
-
-	me.callParent();
 
-	me.mon(rstore, 'load', function(s, records, success) {
-	    if (!success) {
-		return;
+		return icon;
 	    }
+	},
+	{
+	    header: gettext('Support'),
+	    width: 100,
+	    sortable: true,
+	    dataIndex: 'level',
+	    renderer: PVE.Utils.render_support_level
+	},
+	{
+	    header: gettext('Server Address'),
+	    width: 115,
+	    sortable: true,
+	    dataIndex: 'ip'
+	},
+    ],
 
-	    var cluster_rec = rstore.getById('cluster');
-
-	    if (!cluster_rec) {
-		status.update(noClusterText);
-		return;
+    stateful: true,
+    stateId: 'grid-cluster-nodes',
+    tools: [
+	{
+	    type: 'up',
+	    handler: function(){
+		var me = this.up('grid');
+		var height = Math.max(me.getHeight()-50, 250);
+		me.setHeight(height);
 	    }
-
-	    var cluster_data = cluster_rec.getData();
-	    if (!cluster_data) {
-		status.update(noClusterText);
-		return;
+	},
+	{
+	    type: 'down',
+	    handler: function(){
+		var me = this.up('grid');
+		var height = me.getHeight()+50;
+		me.setHeight(height);
 	    }
-	    var text = gettext("Cluster") + ": " + cluster_data.name + ",  " +
-		gettext("Quorate") + ": " + PVE.Utils.format_boolean(cluster_data.quorate);
-	    status.update(text);
-	});
-
-    }
+	}
+    ]
 }, function() {
 
     Ext.define('pve-dc-nodes', {
diff --git a/www/manager6/dc/Summary.js b/www/manager6/dc/Summary.js
index 961f092..9426ac5 100644
--- a/www/manager6/dc/Summary.js
+++ b/www/manager6/dc/Summary.js
@@ -1,28 +1,59 @@
 Ext.define('PVE.dc.Summary', {
     extend: 'Ext.panel.Panel',
+    alias: 'widget.pveDcSummary',
 
-    alias: ['widget.pveDcSummary'],
+    scrollable: true,
+
+    bodyPadding: '10 0 0 0',
+
+    layout: 'column',
+
+    defaults: {
+	width: 762,
+	padding: '0 0 10 10'
+    },
+
+    items: [
+	{
+	    itemId: 'nodeview',
+	    xtype: 'pveDcNodeView',
+	    height: 250
+	}
+    ],
 
     initComponent: function() {
         var me = this;
 
-	var nodegrid = Ext.create('PVE.dc.NodeView', {
-	    title: gettext('Nodes'),
-	    border: false,
-	    region: 'center',
-	    flex: 3
+	var rstore = Ext.create('PVE.data.UpdateStore', {
+	    interval: 3000,
+	    storeid: 'pve-cluster-status',
+	    model: 'pve-dc-nodes',
+	    proxy: {
+                type: 'pve',
+                url: "/api2/json/cluster/status"
+	    }
 	});
 
-	Ext.apply(me, {
-	    layout: 'border',
-	    items: [ nodegrid ],
-	    listeners: {
-		activate: function() {
-		    nodegrid.fireEvent('show', nodegrid);
-		}
+	var gridstore = Ext.create('PVE.data.DiffStore', {
+	    rstore: rstore,
+	    filters: {
+		property: 'type',
+		value: 'node'
+	    },
+	    sorters: {
+		property: 'id',
+		direction: 'ASC'
 	    }
 	});
 
 	me.callParent();
+
+	me.getComponent('nodeview').setStore(gridstore);
+
+	me.on('destroy', function(){
+	    rstore.stopUpdate();
+	});
+
+	rstore.startUpdate();
     }
 });
-- 
2.1.4





More information about the pve-devel mailing list