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,
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ];
+ }
+});