From 4fc4c34be0108058d00ad753f4c0f71dd4b4fd4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Tue, 9 Jun 2015 15:24:16 +0200 Subject: [PATCH] Feature #3748: Oneflow template info panel --- .../public/app/tabs/oneflow-templates-tab.js | 2 +- .../tabs/oneflow-templates-tab/panels/info.js | 95 +++++++++++++++++++ .../panels/info/html.hbs | 65 +++++++++++++ .../panels/info/panelId.js | 3 + 4 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info.js create mode 100644 src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info/html.hbs create mode 100644 src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info/panelId.js diff --git a/src/sunstone/public/app/tabs/oneflow-templates-tab.js b/src/sunstone/public/app/tabs/oneflow-templates-tab.js index 67466e337a..d0068d024f 100644 --- a/src/sunstone/public/app/tabs/oneflow-templates-tab.js +++ b/src/sunstone/public/app/tabs/oneflow-templates-tab.js @@ -13,7 +13,7 @@ define(function(require) { ]; var _panels = [ - //require('./oneflow-templates-tab/panels/info'), + require('./oneflow-templates-tab/panels/info'), //require('./oneflow-templates-tab/panels/roles') ]; diff --git a/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info.js b/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info.js new file mode 100644 index 0000000000..2a8fd7114c --- /dev/null +++ b/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info.js @@ -0,0 +1,95 @@ +define(function(require) { + /* + DEPENDENCIES + */ + + var Locale = require('utils/locale'); + var PermissionsTable = require('utils/panel/permissions-table'); + var TemplateUtils = require('utils/template-utils'); + + /* + TEMPLATES + */ + + var TemplateHTML = require('hbs!./info/html'); + + /* + CONSTANTS + */ + + var TAB_ID = require('../tabId'); + var PANEL_ID = require('./info/panelId'); + var XML_ROOT = "DOCUMENT"; + var RESOURCE = "ServiceTemplate"; + + /* + 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 that = this; + + var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element); + + var customAttrs = []; + + $.each(this.element.TEMPLATE.BODY['custom_attrs'], function(key, attr){ + var parts = attr.split("|"); + // 0 mandatory; 1 type; 2 desc; + + var roles_using_net = []; + + switch (parts[1]) { + case "vnet_id": + $.each(that.element.TEMPLATE.BODY.roles, function(index, value){ + if (value.vm_template_contents){ + var reg = new RegExp("\\$"+TemplateUtils.htmlDecode(key)+"\\b"); + + if(reg.exec(value.vm_template_contents) != null){ + roles_using_net.push(value.name); + } + } + }); + + break; + } + + customAttrs.push({ + "name": key, + "mandatory": parts[0], + "type": parts[1], + "description": parts[2], + "roles": roles_using_net.join(", ") + }); + }); + + return TemplateHTML({ + 'element': this.element, + 'permissionsTableHTML': permissionsTableHTML, + 'customAttrs': customAttrs + }); + } + + function _setup(context) { + PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context); + } +}); diff --git a/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info/html.hbs b/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info/html.hbs new file mode 100644 index 0000000000..dda1df09d9 --- /dev/null +++ b/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info/html.hbs @@ -0,0 +1,65 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{tr "Information"}}
{{tr "ID"}}{{element.ID}}
{{tr "Name"}}{{element.NAME}}
{{tr "Description"}}{{element.TEMPLATE.BODY.description}}
{{tr "Strategy"}}{{element.TEMPLATE.BODY.deployment}}
{{tr "Shutdown action"}} + {{valOrDefault element.TEMPLATE.BODY.shutdown_action "-"}} +
{{tr "Ready Status Gate"}} + {{#if element.TEMPLATE.BODY.ready_status_gate}} + {{tr "yes"}} + {{else}} + {{tr "no"}} + {{/if}} +
+ {{#if customAttrs}} + + + + + + + {{#each customAttrs}} + + + + + + + + + {{/each}} +
{{tr "Network Configuration"}}
{{name}}{{description}}
{{tr "Roles"}}: {{roles}}
+ {{/if}} +
+
{{{permissionsTableHTML}}}
+
\ No newline at end of file diff --git a/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info/panelId.js b/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info/panelId.js new file mode 100644 index 0000000000..64a79ce8b5 --- /dev/null +++ b/src/sunstone/public/app/tabs/oneflow-templates-tab/panels/info/panelId.js @@ -0,0 +1,3 @@ +define(function(require){ + return 'service_template_info_tab'; +}); \ No newline at end of file