mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
F #1582: Add links to related resources
This commit is contained in:
parent
bea3f99797
commit
a901a5c75a
@ -18,7 +18,8 @@ define(function(require) {
|
||||
var OpenNebulaAction = require('./action'),
|
||||
OpenNebulaHelper = require('./helper'),
|
||||
OpenNebulaError = require('./error');
|
||||
Locale = require('utils/locale');
|
||||
Locale = require('utils/locale'),
|
||||
Navigation = require('utils/navigation');
|
||||
|
||||
var OpenNebulaCluster = require('./cluster');
|
||||
|
||||
@ -577,6 +578,18 @@ define(function(require) {
|
||||
|
||||
return hostname;
|
||||
},
|
||||
"hostnameStrLink": function(element) {
|
||||
var state = element.STATE;
|
||||
var hostname = "--";
|
||||
if (state == STATES.ACTIVE || state == STATES.SUSPENDED || state == STATES.POWEROFF) {
|
||||
var history = retrieveLastHistoryRecord(element)
|
||||
if (history) {
|
||||
hostname = Navigation.link(history.HOSTNAME, "hosts-tab", history.HID);
|
||||
};
|
||||
};
|
||||
|
||||
return hostname;
|
||||
},
|
||||
"clusterStr": function(element) {
|
||||
var state = element.STATE;
|
||||
var cluster = "--";
|
||||
|
@ -30,7 +30,7 @@
|
||||
{{{renameTrHTML}}}
|
||||
<tr>
|
||||
<td class="key_td">{{tr "Datastore"}}</td>
|
||||
<td class="value_td">{{element.DATASTORE}}</td>
|
||||
<td class="value_td">{{navigate element.DATASTORE "datastores-tab" element.DATASTORE_ID}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -30,7 +30,7 @@
|
||||
{{{renameTrHTML}}}
|
||||
<tr>
|
||||
<td class="key_td">{{tr "MarketPlace"}}</td>
|
||||
<td class="value_td">{{element.MARKETPLACE}}</td>
|
||||
<td class="value_td">{{navigate element.MARKETPLACE "marketplaces-tab" element.MARKETPLACE_ID}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -65,7 +65,7 @@
|
||||
<td>{{state}}</td>
|
||||
{{/if}}
|
||||
<td>{{cardinality}}</td>
|
||||
<td>{{vm_template}}</td>
|
||||
<td>{{navigate vm_template "templates-tab" vm_template}}</td>
|
||||
<td>{{parents}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<tr>
|
||||
<td class="key_td">{{tr "Group"}}</td>
|
||||
<td id="value_td_group">{{element.GNAME}}</td>
|
||||
<td id="value_td_group">{{navigate element.GNAME "groups-tab" element.GID}}</td>
|
||||
<td>
|
||||
<div id="div_edit_chg_group">
|
||||
<a id="div_edit_chg_group_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>
|
||||
|
@ -24,9 +24,10 @@ define(function(require) {
|
||||
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');
|
||||
var OpenNebula = require('opennebula');
|
||||
var Sunstone = require('sunstone');
|
||||
var Config = require('sunstone-config');
|
||||
var Navigation = require('utils/navigation');
|
||||
|
||||
/*
|
||||
TEMPLATES
|
||||
@ -71,9 +72,16 @@ define(function(require) {
|
||||
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 = OpenNebulaVM.hostnameStr(this.element);
|
||||
var stateStr = OpenNebula.VM.stateStr(this.element.STATE);
|
||||
var lcmStateStr = OpenNebula.VM.lcmStateStr(this.element.LCM_STATE);
|
||||
var hostnameHTML = OpenNebula.VM.hostnameStrLink(this.element);
|
||||
var vrouterHTML = '--';
|
||||
|
||||
if (this.element.TEMPLATE.VROUTER_ID != undefined){
|
||||
vrouterHTML = Navigation.link(
|
||||
OpenNebula.VirtualRouter.getName(this.element.TEMPLATE.VROUTER_ID),
|
||||
"vrouters-tab", this.element.TEMPLATE.VROUTER_ID);
|
||||
}
|
||||
|
||||
var deployId = (typeof(this.element.DEPLOY_ID) == "object" ? "--" : this.element.DEPLOY_ID);
|
||||
var resched = (parseInt(this.element.RESCHED) ? Locale.tr("yes") : Locale.tr("no"))
|
||||
@ -111,14 +119,14 @@ define(function(require) {
|
||||
'renameTrHTML': renameTrHTML,
|
||||
'stateStr': stateStr,
|
||||
'lcmStateStr': lcmStateStr,
|
||||
'hostname': hostname,
|
||||
'hostnameHTML': hostnameHTML,
|
||||
'prettyStartTime': prettyStartTime,
|
||||
'deployId': deployId,
|
||||
'resched': resched,
|
||||
'permissionsTableHTML': permissionsTableHTML,
|
||||
'templateTableHTML': templateTableHTML,
|
||||
'monitoringTableContentHTML': monitoringTableContentHTML,
|
||||
'renameTrHTML': renameTrHTML
|
||||
'vrouterHTML': vrouterHTML
|
||||
});
|
||||
}
|
||||
|
||||
@ -126,10 +134,6 @@ define(function(require) {
|
||||
RenameTr.setup(TAB_ID, RESOURCE, this.element.ID, context);
|
||||
PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);
|
||||
|
||||
$("a.vrid", context).on("click", function(){
|
||||
Sunstone.showElement("vrouters-tab", $(this).text());
|
||||
});
|
||||
|
||||
// Get rid of the unwanted (for show) SCHED_* keys
|
||||
var that = this;
|
||||
var strippedTemplate = {};
|
||||
|
@ -40,7 +40,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key_td">{{tr "Host"}}</td>
|
||||
<td class="value_td">{{hostname}}</td>
|
||||
<td class="value_td">{{{hostnameHTML}}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -59,13 +59,9 @@
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="key_td">{{tr "Virtual Router ID"}}</td>
|
||||
<td class="key_td">{{tr "Virtual Router"}}</td>
|
||||
<td class="value_td">
|
||||
{{#if element.TEMPLATE.VROUTER_ID}}
|
||||
<a class="vrid">{{element.TEMPLATE.VROUTER_ID}}</a>
|
||||
{{else}}
|
||||
--
|
||||
{{/if}}
|
||||
{{{vrouterHTML}}}
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
@ -28,6 +28,7 @@ define(function(require) {
|
||||
var StateActions = require('../utils/state-actions');
|
||||
var OpenNebulaVM = require('opennebula/vm');
|
||||
var SecGroupsCommon = require('tabs/secgroups-tab/utils/common');
|
||||
var Navigation = require('utils/navigation');
|
||||
|
||||
/*
|
||||
CONSTANTS
|
||||
@ -298,7 +299,7 @@ define(function(require) {
|
||||
|
||||
nic_dt_data.push({
|
||||
NIC_ID : nic.NIC_ID,
|
||||
NETWORK : nic.NETWORK,
|
||||
NETWORK : Navigation.link(nic.NETWORK, "vnets-tab", nic.NETWORK_ID),
|
||||
IP : _ipTr(nic, "IP"),
|
||||
MAC : nic.MAC,
|
||||
PCI_ADDRESS: pci_address,
|
||||
|
@ -23,6 +23,7 @@ define(function(require) {
|
||||
var Humanize = require('utils/humanize');
|
||||
var OpenNebulaVM = require('opennebula/vm');
|
||||
var TemplateUtils = require('utils/template-utils');
|
||||
var Navigation = require('utils/navigation');
|
||||
|
||||
/*
|
||||
CONSTANTS
|
||||
@ -113,8 +114,8 @@ define(function(require) {
|
||||
|
||||
html += ' <tr>\
|
||||
<td style="width:5%">' + history[i].SEQ + '</td>\
|
||||
<td style="width:15%">' + history[i].HOSTNAME + '</td>\
|
||||
<td style="width:5%">' + history[i].DS_ID + '</td>\
|
||||
<td style="width:15%">' + Navigation.link(history[i].HOSTNAME, "hosts-tab", history[i].HID) + '</td>\
|
||||
<td style="width:5%">' + Navigation.link(history[i].DS_ID, "datastores-tab", history[i].DS_ID) + '</td>\
|
||||
<td style="width:16%">' + OpenNebulaVM.migrateActionStr(parseInt(history[i].ACTION, 10)) + '</td>\
|
||||
<td style="width:10%">' + OpenNebulaVM.migrateReasonStr(parseInt(history[i].REASON, 10)) + '</td>\
|
||||
<td style="width:16%">' + Humanize.prettyTime(history[i].STIME) + '</td>\
|
||||
|
@ -28,6 +28,7 @@ define(function(require) {
|
||||
var Tree = require('utils/tree');
|
||||
var TemplateHtml = require('hbs!./storage/html');
|
||||
var DiskDetailsHtml = require('hbs!./storage/disk-details');
|
||||
var Navigation = require('utils/navigation');
|
||||
|
||||
/*
|
||||
CONSTANTS
|
||||
@ -247,10 +248,22 @@ define(function(require) {
|
||||
sizeStr += '-';
|
||||
}
|
||||
|
||||
var imagetr;
|
||||
|
||||
if (disk.IMAGE != undefined){
|
||||
if (disk.IMAGE_ID != undefined){
|
||||
imagetr = Navigation.link(disk.IMAGE, "images-tab", disk.IMAGE_ID);
|
||||
}else{
|
||||
imagetr = disk.IMAGE;
|
||||
}
|
||||
}else{
|
||||
imagetr = (Humanize.sizeFromMB(disk.SIZE) + (disk.FORMAT ? (' - ' + disk.FORMAT) : ''));
|
||||
}
|
||||
|
||||
disk_dt_data.push({
|
||||
DISK_ID : disk.DISK_ID,
|
||||
TARGET : disk.TARGET,
|
||||
IMAGE : (disk.IMAGE ? disk.IMAGE : (Humanize.sizeFromMB(disk.SIZE) + (disk.FORMAT ? (' - ' + disk.FORMAT) : ''))),
|
||||
IMAGE : imagetr,
|
||||
SIZE: sizeStr,
|
||||
SAVE : ((disk.SAVE && disk.SAVE == 'YES') ? Locale.tr('YES') : Locale.tr('NO')),
|
||||
ACTIONS : actions,
|
||||
|
@ -26,6 +26,7 @@ define(function(require) {
|
||||
var PermissionsTable = require('utils/panel/permissions-table');
|
||||
var RenameTr = require('utils/panel/rename-tr');
|
||||
var OpenNebulaVirtualRouter = require('opennebula/virtualrouter');
|
||||
var Navigation = require('utils/navigation');
|
||||
|
||||
/*
|
||||
TEMPLATES
|
||||
@ -84,6 +85,8 @@ define(function(require) {
|
||||
$.map(nics, function(nic){
|
||||
if (nic.NETWORK == undefined){
|
||||
nic.NETWORK = "--";
|
||||
} else if(nic.NETWORK_ID != undefined) {
|
||||
nic.NETWORK = Navigation.link(nic.NETWORK, "vnets-tab", nic.NETWORK_ID)
|
||||
}
|
||||
|
||||
if (nic.FLOATING_IP != undefined && nic.FLOATING_IP.toUpperCase() == "YES"){
|
||||
|
@ -60,7 +60,7 @@
|
||||
{{#each nics}}
|
||||
<tr>
|
||||
<td class="nic_id" nic_id="{{NIC_ID}}">{{NIC_ID}}</td>
|
||||
<td>{{NETWORK}}</td>
|
||||
<td>{{{NETWORK}}}</td>
|
||||
<td>{{IP}}</td>
|
||||
<td>{{IP6_ULA}}</td>
|
||||
<td>{{IP6_GLOBAL}}</td>
|
||||
|
28
src/sunstone/public/app/templates/helpers/navigate.js
Normal file
28
src/sunstone/public/app/templates/helpers/navigate.js
Normal file
@ -0,0 +1,28 @@
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Copyright 2002-2016, OpenNebula Project, OpenNebula Systems */
|
||||
/* */
|
||||
/* Licensed under the Apache License, Version 2.0 (the "License"); you may */
|
||||
/* not use this file except in compliance with the License. You may obtain */
|
||||
/* a copy of the License at */
|
||||
/* */
|
||||
/* http://www.apache.org/licenses/LICENSE-2.0 */
|
||||
/* */
|
||||
/* Unless required by applicable law or agreed to in writing, software */
|
||||
/* distributed under the License is distributed on an "AS IS" BASIS, */
|
||||
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
|
||||
/* See the License for the specific language governing permissions and */
|
||||
/* limitations under the License. */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
define(function(require) {
|
||||
var Handlebars = require('hbs/handlebars');
|
||||
var Navigation = require('utils/navigation');
|
||||
|
||||
var navigate = function(text, tabId, elementId, options) {
|
||||
return new Handlebars.SafeString(Navigation.link(text, tabId, elementId));
|
||||
};
|
||||
|
||||
Handlebars.registerHelper('navigate', navigate);
|
||||
|
||||
return navigate;
|
||||
});
|
44
src/sunstone/public/app/utils/navigation.js
Normal file
44
src/sunstone/public/app/utils/navigation.js
Normal file
@ -0,0 +1,44 @@
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* Copyright 2002-2016, OpenNebula Project, OpenNebula Systems */
|
||||
/* */
|
||||
/* Licensed under the Apache License, Version 2.0 (the "License"); you may */
|
||||
/* not use this file except in compliance with the License. You may obtain */
|
||||
/* a copy of the License at */
|
||||
/* */
|
||||
/* http://www.apache.org/licenses/LICENSE-2.0 */
|
||||
/* */
|
||||
/* Unless required by applicable law or agreed to in writing, software */
|
||||
/* distributed under the License is distributed on an "AS IS" BASIS, */
|
||||
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
|
||||
/* See the License for the specific language governing permissions and */
|
||||
/* limitations under the License. */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
define(function(require) {
|
||||
var TemplateUtils = require('utils/template-utils');
|
||||
var Config = require('sunstone-config');
|
||||
|
||||
/**
|
||||
* Returns an html string with a link to the given tab (and element)
|
||||
*
|
||||
* @param {string} text The <a> text
|
||||
* @param {string} tabId e.g. vms-tab
|
||||
* @param {string} elementId optional. Numeric ID
|
||||
* @return {string} html '<a>' element
|
||||
*/
|
||||
function _link(text, tabId, elementId){
|
||||
if (!Config.isTabEnabled(tabId)) {
|
||||
return TemplateUtils.htmlEncode(text);
|
||||
}
|
||||
|
||||
if (elementId != undefined){
|
||||
return '<a href="/#'+tabId+'/'+elementId+'">'+TemplateUtils.htmlEncode(text)+'</a>';
|
||||
}else{
|
||||
return '<a href="/#'+tabId+'">'+TemplateUtils.htmlEncode(text)+'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
"link": _link
|
||||
};
|
||||
});
|
@ -16,7 +16,7 @@
|
||||
|
||||
<tr>
|
||||
<td class="key_td">{{tr "Group"}}</td>
|
||||
<td colspan="2" id="value_td_group">{{element.GNAME}}</td>
|
||||
<td colspan="2" id="value_td_group">{{navigate element.GNAME "groups-tab" element.GID}}</td>
|
||||
<td>
|
||||
{{#isTabActionEnabled tabName action}}
|
||||
<div id="div_edit_chg_group">
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<tr>
|
||||
<td class="key_td">{{tr "Owner"}}</td>
|
||||
<td colspan="2" id="value_td_owner">{{element.UNAME}}</td>
|
||||
<td colspan="2" id="value_td_owner">{{navigate element.UNAME "users-tab" element.UID}}</td>
|
||||
<td>
|
||||
{{#isTabActionEnabled tabName action}}
|
||||
<div id="div_edit_chg_owner">
|
||||
|
Loading…
x
Reference in New Issue
Block a user