diff --git a/src/sunstone/public/app/tabs/vms-tab.js b/src/sunstone/public/app/tabs/vms-tab.js index a0f4dca17f..93cd57990f 100644 --- a/src/sunstone/public/app/tabs/vms-tab.js +++ b/src/sunstone/public/app/tabs/vms-tab.js @@ -12,10 +12,10 @@ define(function(require) { // require('./vms-tab/dialogs/instantiate') //]; - //var _panels = [ - // require('./vms-tab/panels/info'), + var _panels = [ + require('./vms-tab/panels/info'), // require('./vms-tab/panels/template') - //]; + ]; //var _formPanels = [ // require('./vms-tab/form-panels/create') @@ -37,7 +37,7 @@ define(function(require) { buttons: Buttons, actions: Actions, dataTable: new Table(DATATABLE_ID, {actions: true, info: true}), - //panels: _panels, + panels: _panels, //formPanels: _formPanels, //dialogs: _dialogs }; diff --git a/src/sunstone/public/app/tabs/vms-tab/panels/info.js b/src/sunstone/public/app/tabs/vms-tab/panels/info.js new file mode 100644 index 0000000000..b1ca10de76 --- /dev/null +++ b/src/sunstone/public/app/tabs/vms-tab/panels/info.js @@ -0,0 +1,105 @@ +define(function(require) { + /* + DEPENDENCIES + */ + + var Locale = require('utils/locale'); + var Humanize = require('utils/humanize'); + var RenameTr = require('utils/panel/rename-tr'); + var PermissionsTable = require('utils/panel/permissions-table'); + var TemplateTable = require('utils/panel/template-table'); + var OpenNebulaVm = require('opennebula/vm'); + + /* + TEMPLATES + */ + + var TemplateInfo = require('hbs!./info/html'); + + /* + CONSTANTS + */ + + var TAB_ID = require('../tabId'); + var PANEL_ID = require('./info/panelId'); + var RESOURCE = "VM" + var XML_ROOT = "VM" + + /* + CONSTRUCTOR + */ + + function Panel(info) { + this.title = Locale.tr("Info"); + this.icon = "fa-info-circle"; + + this.element = info[XML_ROOT]; + + return this; + }; + + Panel.PANEL_ID = PANEL_ID; + Panel.prototype.html = _html; + Panel.prototype.setup = _setup; + + return Panel; + + /* + FUNCTION DEFINITIONS + */ + + function _html() { + var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME); + var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element); + var prettyStartTime = Humanize.prettyTime(this.element.STIME); + + var stateStr = OpenNebulaVm.stateStr(this.element.STATE); + var lcmStateStr = OpenNebulaVm.lcmStateStr(this.element.LCM_STATE); + var hostname = "--"; + if (stateStr == "ACTIVE" || stateStr == "SUSPENDED" || stateStr == "POWEROFF") { + if (this.element.HISTORY_RECORDS.HISTORY.constructor == Array) { + hostname = this.element.HISTORY_RECORDS.HISTORY[this.element.HISTORY_RECORDS.HISTORY.length - 1].HOSTNAME; + } else { + hostname = this.element.HISTORY_RECORDS.HISTORY.HOSTNAME; + }; + }; + + var deployId = (typeof(this.element.DEPLOY_ID) == "object" ? "-" : this.element.DEPLOY_ID); + var resched = (parseInt(this.element.RESCHED) ? Locale.tr("yes") : Locale.tr("no")) + var templateTableHTML = TemplateTable.html(this.element.USER_TEMPLATE, RESOURCE, Locale.tr("Attributes")); + + return TemplateInfo({ + 'element': this.element, + 'renameTrHTML': renameTrHTML, + 'stateStr': stateStr, + 'lcmStateStr': lcmStateStr, + 'hostname': hostname, + 'prettyStartTime': prettyStartTime, + 'deployId': deployId, + 'resched': resched, + 'permissionsTableHTML': permissionsTableHTML, + 'templateTableHTML': templateTableHTML, + 'renameTrHTML': renameTrHTML + }); + } + + function _setup(context) { + RenameTr.setup(RESOURCE, this.element.ID, context); + PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context); + + // Get rid of the unwanted (for show) SCHED_* keys + var that = this; + var strippedTemplate = {}; + var unshownValues = {}; + $.each(that.element.USER_TEMPLATE, function(key, value) { + if (!key.match(/^SCHED_*/)) { + strippedTemplate[key] = value; + } else { + unshownValues[key] = value; + } + }) + + var templateTableHTML = TemplateTable.html( + strippedTemplate, RESOURCE, this.element.ID, context, unshownValues); + } +}); diff --git a/src/sunstone/public/app/tabs/vms-tab/panels/info/html.hbs b/src/sunstone/public/app/tabs/vms-tab/panels/info/html.hbs new file mode 100644 index 0000000000..e235ab870a --- /dev/null +++ b/src/sunstone/public/app/tabs/vms-tab/panels/info/html.hbs @@ -0,0 +1,53 @@ +
{{tr "Information"}} | +||
---|---|---|
{{tr "ID"}} | +{{element.ID}} | +|
{{tr "State"}} | +{{stateStr}} | ++ |
{{tr "LCM State"}} | +{{lcmStateStr}} | ++ |
{{tr "Host"}} | +{{hostname}} | ++ |
{{tr "Start time"}} | +{{prettyStartTime}} | ++ |
{{tr "Deploy ID"}} | +{{deployId}} | ++ |
{{tr "Reschedule"}} | +{{resched}} | ++ |