[pve-devel] [PATCH manager 3/9] add new icons to grid and tree
Dominik Csapak
d.csapak at proxmox.com
Mon Apr 11 10:19:02 CEST 2016
we set new icons for the tree and grid
changes:
* new icons
* wider type column (bigger icons)
* use arrows true (uses arrows instead of +/- and gets rid of the
ugly lines in the tree)
* datacenter has icon instead of folder open/close
* "folder view" gets type icons for folders
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
www/manager6/Utils.js | 41 +++++++++++++++++++++++------
www/manager6/data/ResourceStore.js | 2 +-
www/manager6/tree/ResourceTree.js | 53 +++++++++++++++++++++++++++++++-------
3 files changed, 77 insertions(+), 19 deletions(-)
diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index 07fd0f4..d1cbe4e 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -898,17 +898,42 @@ Ext.define('PVE.Utils', { statics: {
render_resource_type: function(value, metaData, record, rowIndex, colIndex, store) {
- var cls = 'pve-itype-icon-' + value;
+ var icon = '';
+ var gridcls = '';
+
+ switch (value) {
+ case 'lxc': icon = 'cube';
+ gridcls = '-stopped';
+ break;
+ case 'qemu': icon = 'desktop';
+ gridcls = '-stopped';
+ break;
+ case 'node': icon = 'building';
+ gridcls = '-offline';
+ break;
+ case 'storage': icon = 'database'; break;
+ case 'pool': icon = 'tags'; break;
+ default: icon = 'file';
+ }
- if (record.data.running) {
- metaData.tdCls = cls + "-running";
- } else if (record.data.template) {
- metaData.tdCls = cls + "-template";
- } else {
- metaData.tdCls = cls;
+ if (value === 'lxc' || value === 'qemu') {
+ if (record.data.running && record.data.status !== 'paused') {
+ gridcls = '-running';
+ } else if (record.data.running) {
+ gridcls = '-paused';
+ }
+ if (record.data.template) {
+ icon = 'file-o';
+ gridcls = '-template-' + value;
+ }
+ } else if (value === 'node') {
+ if (record.data.running) {
+ gridcls = '-online'
+ }
}
- return value;
+ var fa = '<i class="fa fa-fw x-fa-grid' + gridcls + ' fa-' + icon + '"></i> '
+ return fa + value;
},
render_uptime: function(value, metaData, record, rowIndex, colIndex, store) {
diff --git a/www/manager6/data/ResourceStore.js b/www/manager6/data/ResourceStore.js
index c757a46..4c409de 100644
--- a/www/manager6/data/ResourceStore.js
+++ b/www/manager6/data/ResourceStore.js
@@ -23,7 +23,7 @@ Ext.define('PVE.data.ResourceStore', {
renderer: PVE.Utils.render_resource_type,
sortable: true,
hideable: false,
- width: 80
+ width: 100
},
id: {
header: 'ID',
diff --git a/www/manager6/tree/ResourceTree.js b/www/manager6/tree/ResourceTree.js
index 556975e..9b703a0 100644
--- a/www/manager6/tree/ResourceTree.js
+++ b/www/manager6/tree/ResourceTree.js
@@ -8,28 +8,37 @@ Ext.define('PVE.tree.ResourceTree', {
statics: {
typeDefaults: {
node: {
- iconCls: 'x-tree-node-server',
+ iconCls: 'fa fa-building x-fa-tree',
text: gettext('Nodes')
},
pool: {
- iconCls: 'x-tree-node-pool',
+ iconCls: 'fa fa-tags fa-dark x-fa-tree',
text: gettext('Resource Pool')
},
storage: {
- iconCls: 'x-tree-node-harddisk',
+ iconCls: 'fa fa-database fa-dark x-fa-tree',
text: gettext('Storage')
},
qemu: {
- iconCls: 'x-tree-node-computer',
+ iconCls: 'fa fa-desktop x-fa-tree',
text: gettext('Virtual Machine')
},
lxc: {
- iconCls: 'x-tree-node-lxc',
+ //iconCls: 'x-tree-node-lxc',
+ iconCls: 'fa fa-cube x-fa-tree',
text: gettext('LXC Container')
- }
+ },
+ template: {
+ iconCls: 'fa fa-file-o fa-dark x-fa-tree-template'
+ },
+ datacenter: {
+ iconCls: 'fa fa-server x-fa-tree-datacenter',
+ }
}
},
+ useArrows: true,
+
// private
nodeSortFn: function(node1, node2) {
var n1 = node1.data;
@@ -94,10 +103,34 @@ Ext.define('PVE.tree.ResourceTree', {
var me = this;
var defaults = PVE.tree.ResourceTree.typeDefaults[info.type];
+ if (info.id === 'root') {
+ defaults = PVE.tree.ResourceTree.typeDefaults['datacenter'];
+ } else if (info.type === 'type') {
+ defaults = PVE.tree.ResourceTree.typeDefaults[info.groupbyid];
+ }
if (defaults && defaults.iconCls) {
- var running = info.running ? '-running' : '';
- var template = info.template ? '-template' : '';
- info.iconCls = defaults.iconCls + running + template;
+ var iconClsAdd = '';
+
+ if (info.running && info.type === 'node') {
+ iconClsAdd = '-online';
+ } else if (info.running) {
+ iconClsAdd = '-running';
+ if (info.status === 'paused') {
+ iconClsAdd = '-paused';
+ }
+ } else if (info.type === 'lxc' || info.type === 'qemu') {
+ iconClsAdd = '-stopped';
+ } else if (info.type === 'node') {
+ iconClsAdd = '-offline';
+ }
+
+ info.iconCls = defaults.iconCls + iconClsAdd;
+
+ if (info.template) {
+ iconClsAdd = '-template';
+ info.iconCls = PVE.tree.ResourceTree.typeDefaults['template'].iconCls + '-' + info.type;
+ }
+
}
},
@@ -201,7 +234,7 @@ Ext.define('PVE.tree.ResourceTree', {
// fixme: suspend events ?
var rootnode = me.store.getRootNode();
-
+ me.setIconCls(rootnode.data);
// remember selected node (and all parents)
var sm = me.getSelectionModel();
--
2.1.4
More information about the pve-devel
mailing list