win7: 'Microsoft Windows 7/2008r2',
win8: 'Microsoft Windows 8/2012',
l24: 'Linux 2.4 Kernel',
- l26: 'Linux 3.X/2.6 Kernel',
+ l26: 'Linux 4.X/3.X/2.6 Kernel',
solaris: 'Solaris Kernel'
},
},
render_hotplug_features: function (value) {
- var fa = [];
+ var fa = [];
if (!value || (value === '0')) {
return gettext('disabled');
PVE.Utils.unknownText;
},
+ render_qemu_bios: function(value) {
+ if (!value) {
+ return PVE.Utils.defaultText + ' (SeaBIOS)';
+ } else if (value === 'seabios') {
+ return "SeaBIOS";
+ } else if (value === 'ovmf') {
+ return "OVMF (UEFI)";
+ } else {
+ return value;
+ }
+ },
+
render_scsihw: function(value) {
if (!value) {
return PVE.Utils.defaultText + ' (LSI 53C895A)';
},
language_array: function() {
- var data = [['', PVE.Utils.render_language('')]];
+ var data = [['__default__', PVE.Utils.render_language('')]];
Ext.Object.each(PVE.Utils.language_map, function(key, value) {
data.push([key, PVE.Utils.render_language(value)]);
});
qmsuspend: [ 'VM', gettext('Suspend') ],
qmresume: [ 'VM', gettext('Resume') ],
qmconfig: [ 'VM', gettext('Configure') ],
+ vzsnapshot: [ 'CT', gettext('Snapshot') ],
+ vzrollback: [ 'CT', gettext('Rollback') ],
+ vzdelsnapshot: [ 'CT', gettext('Delete Snapshot') ],
vzcreate: ['CT', gettext('Create') ],
vzrestore: ['CT', gettext('Restore') ],
vzdestroy: ['CT', gettext('Destroy') ],
vzmigrate: [ 'CT', gettext('Migrate') ],
+ vzclone: [ 'CT', gettext('Clone') ],
+ vztemplate: [ 'CT', gettext('Convert to template') ],
vzstart: ['CT', gettext('Start') ],
vzstop: ['CT', gettext('Stop') ],
vzmount: ['CT', gettext('Mount') ],
format_size: function(size) {
/*jslint confusion: true */
- if (size < 1024) {
- return size;
- }
-
- var kb = size / 1024;
-
- if (kb < 1024) {
- return kb.toFixed(0) + "KB";
- }
-
- var mb = size / (1024*1024);
+ var units = ['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi'];
+ var num = 0;
- if (mb < 1024) {
- return mb.toFixed(0) + "MB";
+ while (size >= 1024 && ((num++)+1) < units.length) {
+ size = size / 1024;
}
- var gb = mb / 1024;
-
- if (gb < 1024) {
- return gb.toFixed(2) + "GB";
- }
-
- var tb = gb / 1024;
-
- return tb.toFixed(2) + "TB";
-
+ return size.toFixed((num > 0)?2:0) + " " + units[num] + "B";
},
format_html_bar: function(per, text) {
return Ext.Date.format(servertime, 'Y-m-d H:i:s');
},
+ calculate_mem_usage: function(data) {
+ if (!Ext.isNumeric(data.mem) ||
+ data.maxmem === 0 ||
+ data.uptime < 1) {
+ return -1;
+ }
+
+ return (data.mem / data.maxmem);
+ },
+
+ render_mem_usage_percent: function(value, metaData, record, rowIndex, colIndex, store) {
+ if (!Ext.isNumeric(value) || value === -1) {
+ return '';
+ }
+ if (value > 1 ) {
+ // we got no percentage but bytes
+ var mem = value;
+ var maxmem = record.data.maxmem;
+ if (!record.data.uptime ||
+ maxmem === 0 ||
+ !Ext.isNumeric(mem)) {
+ return '';
+ }
+
+ return ((mem*100)/maxmem).toFixed(1) + " %";
+ }
+ return (value*100).toFixed(1) + " %";
+ },
+
render_mem_usage: function(value, metaData, record, rowIndex, colIndex, store) {
var mem = value;
return per.toFixed(1) + '%';
},
+ calculate_disk_usage: function(data) {
+
+ if (!Ext.isNumeric(data.disk) ||
+ data.type === 'qemu' ||
+ (data.type === 'lxc' && data.uptime === 0) ||
+ data.maxdisk === 0) {
+ return -1;
+ }
+
+ return (data.disk / data.maxdisk);
+ },
+
+ render_disk_usage_percent: function(value, metaData, record, rowIndex, colIndex, store) {
+ if (!Ext.isNumeric(value) || value === -1) {
+ return '';
+ }
+
+ return (value * 100).toFixed(1) + " %";
+ },
+
render_disk_usage: function(value, metaData, record, rowIndex, colIndex, store) {
var disk = value;
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) {
}
var msg;
+ /*jslint nomen: true */
var operation = request._operation;
var error = operation.getError();
if (error.statusText) {