1
0
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:
Carlos Martín 2016-09-13 12:19:28 +02:00
parent bea3f99797
commit a901a5c75a
16 changed files with 132 additions and 29 deletions

View File

@ -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 = "--";

View File

@ -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>

View File

@ -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>

View File

@ -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}}

View File

@ -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>

View File

@ -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 = {};

View File

@ -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>

View File

@ -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,

View File

@ -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>\

View File

@ -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,

View File

@ -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"){

View File

@ -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>

View 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;
});

View 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
};
});

View File

@ -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">

View File

@ -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">