diff --git a/src/sunstone/public/app/tabs/vms-tab/datatable.js b/src/sunstone/public/app/tabs/vms-tab/datatable.js index c24bdc92b0..8e9e97810b 100644 --- a/src/sunstone/public/app/tabs/vms-tab/datatable.js +++ b/src/sunstone/public/app/tabs/vms-tab/datatable.js @@ -4,11 +4,9 @@ define(function(require) { */ var TabDataTable = require('utils/tab-datatable'); + var VMsTableUtils = require('./utils/datatable-common'); var SunstoneConfig = require('sunstone-config'); var Locale = require('utils/locale'); - var Humanize = require('utils/humanize'); - var TemplateUtils = require('utils/template-utils'); - var OpenNebulaVM = require('opennebula/vm'); var StateActions = require('./utils/state-actions'); var Sunstone = require('sunstone'); var Vnc = require('utils/vnc'); @@ -47,20 +45,7 @@ define(function(require) { ] } - this.columns = [ - Locale.tr("ID") , - Locale.tr("Owner") , - Locale.tr("Group"), - Locale.tr("Name"), - Locale.tr("Status"), - Locale.tr("Used CPU"), - Locale.tr("Used Memory"), - Locale.tr("Host"), - Locale.tr("IPs"), - Locale.tr("Start Time"), - Locale.tr(""), - Locale.tr("Hidden Template") - ]; + this.columns = VMsTableUtils.columns; this.selectOptions = { "id_index": 1, @@ -94,10 +79,6 @@ define(function(require) { */ function _elementArray(element_json) { - var element = element_json[XML_ROOT]; - - var state = OpenNebulaVM.stateStr(element.STATE); - this.totalVms++; switch (state) { case "INIT": @@ -120,37 +101,7 @@ define(function(require) { break; } - if (state == "ACTIVE") { - state = OpenNebulaVM.shortLcmStateStr(element.LCM_STATE); - }; - - // VNC icon - var vncIcon; - if (OpenNebulaVM.isVNCSupported(element)) { - vncIcon = ''; - } else if (OpenNebulaVM.isSPICESupported(element)) { - vncIcon = ''; - } else { - vncIcon = ''; - } - - return [ - '', - element.ID, - element.UNAME, - element.GNAME, - element.NAME, - state, - element.CPU, - Humanize.size(element.MEMORY), - OpenNebulaVM.hostnameStr(element), - OpenNebulaVM.ipsStr(element), - Humanize.prettyTime(element.STIME), - vncIcon, - TemplateUtils.templateToString(element) - ]; + return VMsTableUtils.elementArray(element_json); } function _preUpdateView() { diff --git a/src/sunstone/public/app/tabs/vms-tab/utils/datatable-common.js b/src/sunstone/public/app/tabs/vms-tab/utils/datatable-common.js new file mode 100644 index 0000000000..56baa67ec2 --- /dev/null +++ b/src/sunstone/public/app/tabs/vms-tab/utils/datatable-common.js @@ -0,0 +1,90 @@ +define(function(require) { + + var OpenNebulaVM = require('opennebula/vm'); + var Locale = require('utils/locale'); + var Humanize = require('utils/humanize'); + var TemplateUtils = require('utils/template-utils'); + + var RESOURCE = "VM"; + var XML_ROOT = "VM"; + + var _columns = [ + Locale.tr("ID") , + Locale.tr("Owner") , + Locale.tr("Group"), + Locale.tr("Name"), + Locale.tr("Status"), + Locale.tr("Used CPU"), + Locale.tr("Used Memory"), + Locale.tr("Host"), + Locale.tr("IPs"), + Locale.tr("Start Time"), + Locale.tr(""), + Locale.tr("Hidden Template") + ]; + + return { + 'elementArray': _elementArray, + 'emptyElementArray': _emptyElementArray, + 'columns': _columns + }; + + function _elementArray(element_json) { + var element = element_json[XML_ROOT]; + + var state = OpenNebulaVM.stateStr(element.STATE); + + // TODO bug: will not work if state is translated + if (state == "ACTIVE") { + state = OpenNebulaVM.shortLcmStateStr(element.LCM_STATE); + } + + // VNC icon + var vncIcon; + if (OpenNebulaVM.isVNCSupported(element)) { + vncIcon = ''; + } else if (OpenNebulaVM.isSPICESupported(element)) { + vncIcon = ''; + } else { + vncIcon = ''; + } + + return [ + '', + element.ID, + element.UNAME, + element.GNAME, + element.NAME, + state, + element.CPU, + Humanize.size(element.MEMORY), + OpenNebulaVM.hostnameStr(element), + OpenNebulaVM.ipsStr(element), + Humanize.prettyTime(element.STIME), + vncIcon, + TemplateUtils.templateToString(element) + ]; + } + + function _emptyElementArray(vmId) { + return [ + '', + vmId, + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ]; + } +});