1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-02-02 09:47:00 +03:00

feature #1820: Improve configurable views

This commit is contained in:
Daniel Molina 2013-04-11 18:42:45 +02:00
parent e6ee8e8741
commit 6c032e1500
22 changed files with 865 additions and 398 deletions

View File

@ -502,7 +502,7 @@ INSTALL_SUNSTONE_FILES=(
SUNSTONE_PUBLIC_NEW_VENDOR_JDPICKER:$SUNSTONE_LOCATION/public/vendor/4.0/jdpicker_1.1
SUNSTONE_PUBLIC_NEW_VENDOR_JDPICKER_IMAGES:$SUNSTONE_LOCATION/public/vendor/4.0/jdpicker_1.1/images
SUNSTONE_PUBLIC_NEW_VENDOR_TIMEPICKER:$SUNSTONE_LOCATION/public/vendor/4.0/
SUNSTONE_PUBLIC_NEW_VENDOR_DATETIMEPICKER:$SUNSTONE_LOCATION/public/vendor/4.0/datetimepicker
SUNSTONE_PUBLIC_NEW_VENDOR_DATETIMEPICKER:$SUNSTONE_LOCATION/public/vendor/4.0/datetimepicker
SUNSTONE_PUBLIC_IMAGES_FILES:$SUNSTONE_LOCATION/public/images
SUNSTONE_PUBLIC_LOCALE_CA:$SUNSTONE_LOCATION/public/locale/ca
SUNSTONE_PUBLIC_LOCALE_CS_CZ:$SUNSTONE_LOCATION/public/locale/cs_CZ
@ -1365,7 +1365,8 @@ SUNSTONE_ETC_FILES="src/sunstone/etc/sunstone-server.conf \
src/sunstone/etc/sunstone-plugins.yaml\
src/sunstone/etc/sunstone-views.yaml"
SUNSTONE_ETC_VIEW_FILES="src/sunstone/etc/sunstone-views/admin.yaml"
SUNSTONE_ETC_VIEW_FILES="src/sunstone/etc/sunstone-views/admin.yaml \
src/sunstone/etc/sunstone-views/user.yaml"
SUNSTONE_MODELS_FILES="src/sunstone/models/OpenNebulaJSON.rb \
src/sunstone/models/SunstoneServer.rb \
@ -1521,7 +1522,7 @@ SUNSTONE_PUBLIC_NEW_VENDOR_DATETIMEPICKER="\
src/sunstone/public/vendor/4.0/datetimepicker/jquery.simple-dtpicker.css \
src/sunstone/public/vendor/4.0/datetimepicker/jquery.simple-dtpicker.html \
src/sunstone/public/vendor/4.0/datetimepicker/jquery.simple-dtpicker.js \
src/sunstone/public/vendor/4.0/datetimepicker/simple-dtpicker.jquery.json"
src/sunstone/public/vendor/4.0/datetimepicker/simple-dtpicker.jquery.json"
SUNSTONE_PUBLIC_IMAGES_FILES="src/sunstone/public/images/ajax-loader.gif \
src/sunstone/public/images/favicon.ico \

View File

@ -1,7 +1,10 @@
---
users:
pepe:
- user
groups:
oneadmin:
- admin
- user
default:
- admin

View File

@ -1,19 +1,27 @@
tabs:
dashboard-tab:
enabled: true
tabs_panel:
panel_tabs:
actions:
widgets_three_per_row:
- storage
- users
- network
widgets_two_per_row:
- hosts
- vms
widgets_one_per_row:
dashboard-users-tab:
tabs_panel:
panel_tabs:
enabled: false
actions:
system-tab:
enabled: true
tabs_panel:
panel_tabs:
actions:
users-tab:
enabled: true
tabs_panel:
panel_tabs:
user_info_panel: true
user_quotas_tab: true
table_columns:
@ -36,7 +44,7 @@ tabs:
User.delete: true
groups-tab:
enabled: true
tabs_panel:
panel_tabs:
group_quotas_tab: true
table_columns:
- 0 # ID
@ -52,7 +60,7 @@ tabs:
Group.delete: true
acls-tab:
enabled: true
tabs_panel:
panel_tabs:
table_columns:
- 0 # ID
- 1 # Applies to
@ -66,11 +74,11 @@ tabs:
Acl.delete: true
vresources-tab:
enabled: true
tabs_panel:
panel_tabs:
actions:
vms-tab:
enabled: true
tabs_panel:
panel_tabs:
vm_info_tab: true
vm_capacity_tab: true
vm_hotplugging_tab: true
@ -79,7 +87,7 @@ tabs:
vm_placement_tab: true
vm_actions_tab: true
vm_template_tab: true
vm_log_tab:
vm_log_tab: true
table_columns:
- 0 # Checkbox
- 1 # ID
@ -98,6 +106,7 @@ tabs:
VM.create_dialog: true
VM.chown: true
VM.chgrp: true
VM.chmod: true
VM.deploy: true
VM.migrate: true
VM.livemigrate: true
@ -117,9 +126,18 @@ tabs:
VM.shutdown_hard: true
VM.destroy: true
VM.destroy_recreate: true
VM.resize: true
VM.attachdisk: true
VM.detachdisk: true
VM.saveas: true
VM.attachnic: true
VM.detachnic: true
VM.snapshot_create: true
VM.snapshot_revert: true
VM.snapshot_delete: true
templates-tab:
enabled: true
tabs_panel:
panel_tabs:
template_info_tab: true
template_template_tab: true
table_columns:
@ -136,11 +154,20 @@ tabs:
Template.instantiate_vms: true
Template.chown: true
Template.chgrp: true
Template.chmod: true
Template.clone_dialog: true
Template.delete: true
template_creation_tabs:
general: true
storage: true
network: true
os_booting: true
input_output: true
context: true
scheduling: true
images-tab:
enabled: true
tabs_panel:
panel_tabs:
image_info_panel: true
table_columns:
- 0 # Checkbox
@ -161,6 +188,7 @@ tabs:
Image.create_dialog: true
Image.chown: true
Image.chgrp: true
Image.chmod: true
Image.enable: true
Image.disable: true
Image.persistent: true
@ -169,7 +197,7 @@ tabs:
Image.delete: true
files-tab:
enabled: true
tabs_panel:
panel_tabs:
file_info_panel: true
table_columns:
- 0 # Checkbox
@ -190,16 +218,17 @@ tabs:
File.create_dialog: true
File.chown: true
File.chgrp: true
File.chmod: true
File.enable: true
File.disable: true
File.delete: true
infra-tab:
enabled: true
tabs_panel:
panel_tabs:
actions:
clusters-tab:
enabled: true
tabs_panel:
panel_tabs:
cluster_info_tab: true
cluster_host_tab: true
cluster_vnet_tab: true
@ -218,7 +247,7 @@ tabs:
Cluster.delete: true
hosts-tab:
enabled: true
tabs_panel:
panel_tabs:
host_info_tab: true
host_monitoring_tab: true
table_columns:
@ -244,7 +273,7 @@ tabs:
Host.delete: true
datastores-tab:
enabled: true
tabs_panel:
panel_tabs:
datastore_info_tab: true
datastore_image_tab: true
table_columns:
@ -264,10 +293,11 @@ tabs:
Datastore.addtocluster: true
Datastore.chown: true
Datastore.chgrp: true
Datastore.chmod: true
Datastore.delete: true
vnets-tab:
enabled: true
tabs_panel:
panel_tabs:
vnet_info_tab: true
vnet_leases_tab: true
table_columns:
@ -286,10 +316,15 @@ tabs:
Network.addtocluster: true
Network.chown: true
Network.chgrp: true
Network.chmod: true
Network.delete: true
Network.addleases: true
Network.hold_lease: true
Network.remove_lease: true
Network.release_lease: true
marketplace-tab:
enabled: true
tabs_panel:
panel_tabs:
marketplace_info_tab: true
table_columns:
- 0 # Checkbox

View File

@ -1,35 +1,341 @@
:tabs:
:plugins/dashboard-tab.js:
:enabled: false
:plugins/dashboard-users-tab.js:
:enabled: true
:plugins/system-tab.js:
:enabled: false
:plugins/users-tab.js:
:enabled: false
:plugins/groups-tab.js:
:enabled: false
:plugins/acls-tab.js:
:enabled: false
:plugins/vresources-tab.js:
:enabled: true
:plugins/vms-tab.js:
:enabled: true
:plugins/templates-tab.js:
:enabled: true
:plugins/images-tab.js:
:enabled: true
:plugins/files-tab.js:
:enabled: true
:plugins/infra-tab.js:
:enabled: false
:plugins/clusters-tab.js:
:enabled: false
:plugins/hosts-tab.js:
:enabled: false
:plugins/datastores-tab.js:
:enabled: false
:plugins/vnets-tab.js:
:enabled: false
:plugins/marketplace-tab.js:
:enabled: true
tabs:
dashboard-tab:
enabled: true
panel_tabs:
actions:
widgets_three_per_row:
#- users
widgets_two_per_row:
- network
- storage
#- hosts
#- vms
widgets_one_per_row:
- vms
dashboard-users-tab:
panel_tabs:
enabled: false
actions:
system-tab:
enabled: false
panel_tabs:
actions:
users-tab:
enabled: false
panel_tabs:
user_info_panel: true
user_quotas_tab: true
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Name
- 3 # Group
- 4 # Auth driver
- 5 # VMs
- 6 # Memory
- 7 # CPU
#- 8 # Group ID
actions:
User.refresh: true
User.create_dialog: true
User.update_password: true
User.quotas_dialog: true
User.chgrp: true
User.chauth: true
User.delete: true
groups-tab:
enabled: false
panel_tabs:
group_quotas_tab: true
table_columns:
- 0 # ID
- 1 # Name
- 2 # Users
- 3 # VMs
- 4 # Memory
- 5 # CPU
actions:
Group.refresh: true
Group.create_dialog: true
Group.quotas_dialog: true
Group.delete: true
acls-tab:
enabled: false
panel_tabs:
table_columns:
- 0 # ID
- 1 # Applies to
- 2 # Affected resources
- 3 # Resource ID / Owned by
- 4 # Allowed operations
#- 5 # ACL String
actions:
Acl.refresh: true
Acl.create_dialog: true
Acl.delete: true
vresources-tab:
enabled: true
panel_tabs:
actions:
vms-tab:
enabled: true
panel_tabs:
vm_info_tab: true
vm_capacity_tab: true
vm_hotplugging_tab: true
vm_network_tab: true
vm_snapshot_tab: true
vm_placement_tab: false
vm_actions_tab: true
vm_template_tab: false
vm_log_tab: false
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Owner
- 3 # Group
- 4 # Name
- 5 # Status
#- 6 # Used CPU
#- 7 # Used Memory
- 8 # Host
- 9 # IPs
#- 10 # Start Time
- 11 # VNC
actions:
VM.refresh: true
VM.create_dialog: true
VM.chown: false
VM.chgrp: false
VM.chmod: true
VM.deploy: false
VM.migrate: false
VM.migrate_live: false
VM.hold: true
VM.release: true
VM.suspend: true
VM.resume: true
VM.stop: true
VM.boot: true
VM.reboot: true
VM.reboot_hard: true
VM.poweroff: true
VM.poweroff_hard: true
VM.undeploy: true
VM.undeploy_hard: true
VM.shutdown: true
VM.shutdown_hard: true
VM.destroy: true
VM.destroy_recreate: true
VM.resize: true
VM.attachdisk: true
VM.detachdisk: true
VM.saveas: true
VM.attachnic: true
VM.detachnic: true
VM.snapshot_create: true
VM.snapshot_revert: true
VM.snapshot_delete: true
templates-tab:
enabled: true
panel_tabs:
template_info_tab: true
template_template_tab: true
table_columns:
- 0 # Checkbox
- 0 # ID
- 1 # Owner
- 2 # Group
- 3 # Name
- 4 # Registration time
actions:
Template.refresh: true
Template.create_dialog: true
Template.update_dialog: true
Template.instantiate_vms: true
Template.chown: false
Template.chgrp: false
Template.chmod: true
Template.clone_dialog: true
Template.delete: true
template_creation_tabs:
general: true
storage: true
network: true
os_booting: true
input_output: true
context: true
scheduling: false
images-tab:
enabled: true
panel_tabs:
image_info_panel: true
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Owner
- 3 # Group
- 4 # Name
- 5 # Datastore
#- 6 # Size
- 7 # Type
#- 8 # Registration time
#- 9 # Persistent
- 10 # Status
- 11 # #VMs
#- 12 # Target
actions:
Image.refresh: true
Image.create_dialog: true
Image.chown: false
Image.chgrp: false
Image.chmod: true
Image.enable: true
Image.disable: true
Image.persistent: true
Image.nonpersistent: true
Image.clone_dialog: true
Image.delete: true
files-tab:
enabled: true
panel_tabs:
file_info_panel: true
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Owner
- 3 # Group
- 4 # Name
- 5 # Datastore
#- 6 # Size
- 7 # Type
#- 8 # Registration time
#- 9 # Persistent
- 10 # Status
#- 11 # #VMs
#- 12 # Target
actions:
File.refresh: true
File.create_dialog: true
File.chown: false
File.chgrp: false
File.chmod: true
File.enable: true
File.disable: true
File.delete: true
infra-tab:
enabled: true
panel_tabs:
actions:
clusters-tab:
enabled: false
panel_tabs:
cluster_info_tab: true
cluster_host_tab: true
cluster_vnet_tab: true
cluster_datastore_tab: true
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Name
- 3 # Hosts
- 4 # VNets
- 5 # Datastores
actions:
Cluster.refresh: true
Cluster.create_dialog: true
Cluster.update_dialog: true
Cluster.delete: true
hosts-tab:
enabled: false
panel_tabs:
host_info_tab: true
host_monitoring_tab: true
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Name
- 3 # Cluster
- 4 # RVMs
#- 5 # Real CPU
- 6 # Allocated CPU
#- 7 # Real MEM
- 8 # Allocated MEM
- 9 # Status
#- 10 # IM MAD
#- 11 # VM MAD
#- 12 # Last monitored on
actions:
Host.refresh: true
Host.create_dialog: true
Host.addtocluster: true
Host.enable: true
Host.disable: true
Host.delete: true
datastores-tab:
enabled: true
panel_tabs:
datastore_info_tab: true
datastore_image_tab: true
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Owner
- 3 # Group
- 4 # Name
- 5 # Cluster
#- 6 # Basepath
#- 7 # TM
#- 8 # DS
#- 9 # System
actions:
Datastore.refresh: true
Datastore.create_dialog: false
Datastore.addtocluster: false
Datastore.chown: false
Datastore.chgrp: false
Datastore.chmod: true
Datastore.delete: false
vnets-tab:
enabled: true
panel_tabs:
vnet_info_tab: true
vnet_leases_tab: true
table_columns:
- 0 # Checkbox
- 1 # ID
- 2 # Owner
- 3 # Group
- 4 # Name
- 5 # Cluster
- 6 # Type
#- 7 # Bridge
- 8 # Leases
actions:
Network.refresh: true
Network.create_dialog: false
Network.addtocluster: false
Network.chown: false
Network.chgrp: false
Network.chmod: true
Network.delete: false
Network.addleases: false
Network.hold_lease: false
Network.remove_lease: false
Network.release_lease: false
marketplace-tab:
enabled: true
panel_tabs:
marketplace_info_tab: true
table_columns:
- 0 # Checkbox
#- 1 # ID
- 2 # Name
- 3 # Publisher
- 4 # Hypervisor
- 5 # Arch
- 6 # Format
#- 7 # Tags
actions:
Marketplace.refresh: true
Marketplace.import: true

View File

@ -489,31 +489,6 @@ var OpenNebula = {
}
},
"Config": {
"resource": "CONFIG",
"list": function(params)
{
var callback = params.success;
var callback_error = params.error;
var resource = OpenNebula.Config.resource;
var request = OpenNebula.Helper.request(resource,"list");
$.ajax({
url: "config",
type: "GET",
dataType: "json",
success: function(response){
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, OpenNebula.Error(response)) : null;
}
});
}
},
"Host": {
"resource": "HOST",

View File

@ -611,12 +611,14 @@ function setAclAutorefresh(){
}
$(document).ready(function(){
var tab_name = 'acls-tab';
//if we are not oneadmin, our tab will not even be in the DOM.
dataTable_acls = $("#datatable_acls",main_tabs_context).dataTable({
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "35px", "aTargets": [0,1] },
{ "bVisible": true, "aTargets": config['view']['tabs']['acls-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -1807,14 +1807,14 @@ function clusters_sel() {
//Here we can basicly init the host datatable, preload it
//and add specific listeners
$(document).ready(function(){
var tab_name = "clusters-tab"
//prepare host datatable
dataTable_clusters = $("#datatable_clusters",main_tabs_context).dataTable({
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "35px", "aTargets": [0,1] },
{ "bVisible": true, "aTargets": config['view']['tabs']['clusters-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -14,6 +14,50 @@
/* limitations under the License. */
/* -------------------------------------------------------------------------- */
Config = {
"isTabEnabled": function(tab_name){
var enabled = config['view']['tabs'][tab_name]['enabled'];
return enabled;
},
"isTabActionEnabled": function(tab_name, action_name){
var enabled = config['view']['tabs'][tab_name]['actions'][action_name];
return enabled;
},
"isTabPanelEnabled": function(tab_name, panel_tab_name){
var enabled = config['view']['tabs'][tab_name]['panel_tabs'][panel_tab_name];
return enabled;
},
"tabTableColumns": function(tab_name){
var columns = config['view']['tabs'][tab_name]['table_columns'];
if (columns) {
return columns;
}
else {
return [];
}
},
"isTemplateCreationTabEnabled": function(template_tab_name){
var enabled = config['view']['tabs']['templates-tab']['template_creation_tabs'][template_tab_name];
return enabled;
},
"dashboardWidgets": function(per_row){
var widgets = config['view']['tabs']['dashboard-tab'][per_row];
if (widgets) {
return widgets;
}
else {
return [];
}
}
}
var config_response = {};
var config_tab_content =
'<div class="panel">\

View File

@ -33,9 +33,17 @@ var dashboard_tab_content = '\
</div>\
</div>\
<br>\
<div class="row">\
<div class="four columns">\
<div class="panel">\
<div id="three_per_row" class="row">\
</div>\
<div id="two_per_row" class="row">\
</div>\
<div id="one_per_row" class="row">\
</div>\
</div>\
';
var widgets = {
"storage" : '<div class="panel">\
<div class="row">\
<h5 class="subheader header-dashboard"><span class="span-dashboard"><i class="icon-upload"></i> '+tr("Storage")+'</span></h5>\
</div>\
@ -49,10 +57,8 @@ var dashboard_tab_content = '\
</h3>\
</div>\
</div>\
</div>\
</div>\
<div class="four columns">\
<div class="panel">\
</div>',
"users" : '<div class="panel">\
<div class="row">\
<h5 class="subheader header-dashboard"><span class="span-dashboard"><i class="icon-user"></i> '+tr("Users")+'</span></h5>\
</div>\
@ -66,10 +72,8 @@ var dashboard_tab_content = '\
</h3>\
</div>\
</div>\
</div>\
</div>\
<div class="four columns">\
<div class="panel">\
</div>',
"network" : '<div class="panel">\
<div class="row">\
<h5 class="subheader header-dashboard"><span class="span-dashboard"><i class="icon-sitemap"></i> '+tr("Network")+'</span></h5>\
</div>\
@ -83,13 +87,8 @@ var dashboard_tab_content = '\
</h3>\
</div>\
</div>\
</div>\
</div>\
</div>\
<br>\
<div class="row">\
<div class="six columns">\
<div class="panel dashboard-panel">\
</div>',
"hosts" : '<div class="panel dashboard-panel">\
<div class="row">\
<h5 class="subheader header-dashboard"><span class="span-dashboard"><i class="icon-hdd"></i> '+tr("Hosts")+'</span></h5>\
</div>\
@ -126,10 +125,8 @@ var dashboard_tab_content = '\
<span class="label real radius">'+tr("Real")+'</span>&emsp;\
<span class="label total radius">'+tr("Total")+'</span>\
</div>\
</div>\
</div>\
<div class="six columns">\
<div class="panel dashboard-panel">\
</div>',
"vms" : '<div class="panel dashboard-panel">\
<div class="row">\
<h5 class="subheader header-dashboard"><span class="span-dashboard"><i class="icon-cloud"></i> '+tr("Virtual Machines")+'</span></h5>\
</div>\
@ -165,11 +162,8 @@ var dashboard_tab_content = '\
<div class="ten columns centered graph" id="dash_vm_net_tx_graph" style="height: 100px;">\
</div>\
</div>\
</div>\
</div>\
</div>\
</div>\
';
</div>'
}
var dashboard_tab = {
title: '<i class="icon-dashboard"></i>'+tr("Dashboard"),
@ -186,5 +180,20 @@ var $dashboard;
function dashboardQuotasHTML(){}
$(document).ready(function(){
$dashboard = $('#dashboard-tab', main_tabs_context);
$dashboard = $('#dashboard-tab', main_tabs_context);
$.each(Config.dashboardWidgets('widgets_three_per_row'), function(id, widget){
var html = '<div class="four columns">'+widgets[widget]+'</div>';
$('#three_per_row', $dashboard).append(html);
})
$.each(Config.dashboardWidgets('widgets_two_per_row'), function(id, widget){
var html = '<div class="six columns">'+widgets[widget]+'</div>';
$('#two_per_row', $dashboard).append(html);
})
$.each(Config.dashboardWidgets('widgets_one_per_row'), function(id, widget){
var html = '<div class="twelve columns">'+widgets[widget]+'</div>';
$('#one_per_row', $dashboard).append(html);
})
});

View File

@ -682,7 +682,8 @@ function updateDatastoreInfo(request,ds){
"Configuration Attributes") +
'</div>\
<div class="six columns">'
+ insert_permissions_table("Datastore",
+ insert_permissions_table('datastores-tab',
"Datastore",
info.ID,
info.UNAME,
info.GNAME,

View File

@ -554,7 +554,8 @@ function updateFileInfo(request,img){
</table>\
</div>\
<div class="six columns">'
+ insert_permissions_table("File",
+ insert_permissions_table('files-tab',
"File",
img_info.ID,
img_info.UNAME,
img_info.GNAME,
@ -905,18 +906,16 @@ function is_persistent_file(id){
//The DOM is ready at this point
$(document).ready(function(){
var tab_name = 'files-tab';
dataTable_files = $("#datatable_files",main_tabs_context).dataTable({
"oColVis": {
"aiExclude": [ 0 ]
},
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0,2,3,9,10] },
{ "sWidth": "35px", "aTargets": [1,6,11,12] },
{ "sWidth": "100px", "aTargets": [5,7] },
{ "sWidth": "150px", "aTargets": [8] },
{ "bVisible": true, "aTargets": config['view']['tabs']['files-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -794,11 +794,13 @@ function setGroupAutorefresh(){
}
$(document).ready(function(){
var tab_name = 'groups-tab';
dataTable_groups = $("#datatable_groups",main_tabs_context).dataTable({
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "35px", "aTargets": [0,1] },
{ "bVisible": true, "aTargets": config['view']['tabs']['groups-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -1034,16 +1034,14 @@ function hostMonitorError(req,error_json){
//Here we can basicly init the host datatable, preload it
//and add specific listeners
$(document).ready(function(){
var tab_name = 'hosts-tab';
//prepare host datatable
dataTable_hosts = $("#datatable_hosts",main_tabs_context).dataTable({
"oColVis": { //exclude checkbox column
"aiExclude": [ 0 ]
},
"aoColumnDefs": [
//{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "35px", "aTargets": [0,1,4,9] }, //check, ID, RVMS, Status,
{ "bVisible": true, "aTargets": config['view']['tabs']['hosts-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -716,7 +716,8 @@ function updateImageInfo(request,img){
</table>\
</div>\
<div class="six columns">'
+ insert_permissions_table("Image",
+ insert_permissions_table('images-tab',
"Image",
img_info.ID,
img_info.UNAME,
img_info.GNAME,
@ -1251,18 +1252,16 @@ function popUpImageCloneDialog(){
//The DOM is ready at this point
$(document).ready(function(){
var tab_name = 'images-tab';
dataTable_images = $("#datatable_images",main_tabs_context).dataTable({
"oColVis": {
"aiExclude": [ 0 ]
},
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0,2,3,9,10] },
{ "sWidth": "35px", "aTargets": [1,6,11,12] },
{ "sWidth": "100px", "aTargets": [5,7] },
{ "sWidth": "150px", "aTargets": [8] },
{ "bVisible": true, "aTargets": config['view']['tabs']['images-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -283,6 +283,8 @@ function onlyOneCheckboxListener(dataTable) {
*/
$(document).ready(function(){
var tab_name = 'marketplace-tab';
dataTable_marketplace = $("#datatable_marketplace", main_tabs_context).dataTable({
"bSortClasses": true,
"aoColumns": [
@ -305,7 +307,7 @@ $(document).ready(function(){
{ "mDataProp": "tags"}
],
"aoColumnDefs": [
{ "bVisible": true, "aTargets": config['view']['tabs']['marketplace-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -1370,7 +1370,8 @@ function updateTemplateInfo(request,template){
</tr>\
</table>\
</div>\
<div class="six columns">' + insert_permissions_table("Template",
<div class="six columns">' + insert_permissions_table('templates-tab',
"Template",
template_info.ID,
template_info.UNAME,
template_info.GNAME,
@ -2250,7 +2251,7 @@ function setupCreateTemplateDialog(){
'</div>'+
'</div>'+
'<hr>'+
'<div class="row">'+
'<div class="">'+
'<table id="input_table" class="twelve">'+
'<thead>'+
'<tr>'+
@ -2332,7 +2333,7 @@ function setupCreateTemplateDialog(){
'<div class="six columns">'+
'<fieldset>'+
'<legend>'+tr("SSH")+'</legend>'+
'<div class="row">'+
'<div class="">'+
'<div class="columns one">'+
'<input type="checkbox" name="ssh_context" id="ssh_context" checked>'+
'</div>'+
@ -2343,20 +2344,22 @@ function setupCreateTemplateDialog(){
'<div class="tip">'+tr("Add an ssh public key to the context. If the Public Key textarea is empty then the user variable SSH_PUBLIC_KEY will be used.")+'</div>'+
'</div>'+
'</div>'+
'<div class="row">'+
'<div class="ten columns">'+
'<div class="">'+
'<div class="twelve columns">'+
'<label for="ssh_puclic_key"> '+tr("Public Key")+':</label>'+
'</div>'+
'</div>'+
'<div class="row">'+
'<div class="">'+
'<div class="twelve columns">'+
'<textarea rows="4" type="text" id="ssh_puclic_key" name="ssh_puclic_key" />'+
'</div>'+
'</div>'+
'</fieldset>'+
'</div>'+
'<div class="six columns">'+
'<fieldset>'+
'<legend>'+tr("Network")+'</legend>'+
'<div class="row">'+
'<div class="">'+
'<div class="columns one">'+
'<input type="checkbox" name="network_context" id="network_context" checked>'+
'</div>'+
@ -3041,13 +3044,33 @@ function setupCreateTemplateDialog(){
$('#update_template_header', $create_template_dialog).show();
});
add_capacityTab();
add_disks_tab();
add_nics_tab();
add_osTab();
add_ioTab();
add_contextTab();
add_schedulingTab();
if (Config.isTemplateCreationTabEnabled('general')){
add_capacityTab();
}
if (Config.isTemplateCreationTabEnabled('storage')){
add_disks_tab();
}
if (Config.isTemplateCreationTabEnabled('network')){
add_nics_tab();
}
if (Config.isTemplateCreationTabEnabled('os_booting')){
add_osTab();
}
if (Config.isTemplateCreationTabEnabled('input_output')){
add_ioTab();
}
if (Config.isTemplateCreationTabEnabled('context')){
add_contextTab();
}
if (Config.isTemplateCreationTabEnabled('scheduling')){
add_schedulingTab();
}
//tabs.tabs("option", "active", 0);
$(".ui-tabs-vertical .ui-tabs-nav", dialog).first().removeClass("ui-tabs-nav").addClass("ui-tabs-nav-vert")
@ -4148,15 +4171,13 @@ function popUpInstantiateVMTemplateDialog(){
//The DOM is ready at this point
$(document).ready(function(){
var tab_name = 'templates-tab';
dataTable_templates = $("#datatable_templates",main_tabs_context).dataTable({
"oColVis": {
"aiExclude": [ 0 ]
},
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "35px", "aTargets": [0,1] },
{ "bVisible": true, "aTargets": config['view']['tabs']['templates-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -1153,15 +1153,14 @@ function setUserAutorefresh(){
}
$(document).ready(function(){
var tab_name = 'users-tab';
//if we are not oneadmin, our tab will not even be in the DOM.
dataTable_users = $("#datatable_users",main_tabs_context).dataTable({
"oColVis": {
"aiExclude": [ 0 ]
},
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "35px", "aTargets": [0,1] },
{ "bVisible": true, "aTargets": config['view']['tabs']['users-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -1309,7 +1309,8 @@ function updateVMInfo(request,vm){
</table>\
</div>\
<div class="six columns">' +
insert_permissions_table("VM",
insert_permissions_table('vms-tab',
"VM",
vm_info.ID,
vm_info.UNAME,
vm_info.GNAME,
@ -1773,13 +1774,15 @@ function printDisks(vm_info){
<div class="twelve columns">\
<div id="refresh_disk" class="button small secondary radius" ><i class="icon-refresh"/></div>'
// If VM is not RUNNING, then we forget about the attach disk form.
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3"){
html += '\
<div id="attach_disk" class="button small secondary radius" >' + tr("Attach new disk") +'</div>'
} else {
html += '\
<div id="attach_disk" class="button small secondary radius" disabled="disabled">' + tr("Attach new disk") +'</div>'
if (Config.isTabActionEnabled("vms-tab", "VM.attachdisk")) {
// If VM is not RUNNING, then we forget about the attach disk form.
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3"){
html += '\
<div id="attach_disk" class="button small secondary radius" >' + tr("Attach new disk") +'</div>'
} else {
html += '\
<div id="attach_disk" class="button small secondary radius" disabled="disabled">' + tr("Attach new disk") +'</div>'
}
}
html += '\
@ -1862,12 +1865,16 @@ function printDisks(vm_info){
actions = '';
if ((vm_info.STATE == "3" && vm_info.LCM_STATE == "3") || vm_info.STATE == "5" || vm_info.STATE == "8") {
actions += '<a href="VM.saveas" class="saveas" ><i class="icon-save"/>'+tr("Snapshot")+'</a> &emsp;'
if (Config.isTabActionEnabled("vms-tab", "VM.saveas")) {
if ((vm_info.STATE == "3" && vm_info.LCM_STATE == "3") || vm_info.STATE == "5" || vm_info.STATE == "8") {
actions += '<a href="VM.saveas" class="saveas" ><i class="icon-save"/>'+tr("Snapshot")+'</a> &emsp;'
}
}
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3") {
actions += '<a href="VM.detachdisk" class="detachdisk" ><i class="icon-remove"/>'+tr("Detach")+'</a>'
if (Config.isTabActionEnabled("vms-tab", "VM.detachdisk")) {
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3") {
actions += '<a href="VM.detachdisk" class="detachdisk" ><i class="icon-remove"/>'+tr("Detach")+'</a>'
}
}
}
@ -2057,40 +2064,47 @@ function popUpAttachDiskDialog(vm_id){
// Listeners to the disks operations (detach, saveas, attach)
function hotpluggingOps(){
setupSaveAsDialog();
setupAttachDiskDialog();
if (Config.isTabActionEnabled("vms-tab", "VM.saveas")) {
setupSaveAsDialog();
$('a.detachdisk').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var disk_id = b.parents('tr').attr('disk_id');
$('a.saveas').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var disk_id = b.parents('tr').attr('disk_id');
Sunstone.runAction('VM.detachdisk', vm_id, disk_id);
popUpSaveAsDialog(vm_id, disk_id);
//b.html(spinner);
return false;
});
//b.html(spinner);
return false;
});
}
$('a.saveas').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var disk_id = b.parents('tr').attr('disk_id');
if (Config.isTabActionEnabled("vms-tab", "VM.attachdisk")) {
setupAttachDiskDialog();
popUpSaveAsDialog(vm_id, disk_id);
$('#attach_disk').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
//b.html(spinner);
return false;
});
popUpAttachDiskDialog(vm_id);
$('#attach_disk').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
//b.html(spinner);
return false;
});
}
popUpAttachDiskDialog(vm_id);
if (Config.isTabActionEnabled("vms-tab", "VM.detachdisk")) {
$('a.detachdisk').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var disk_id = b.parents('tr').attr('disk_id');
//b.html(spinner);
return false;
});
Sunstone.runAction('VM.detachdisk', vm_id, disk_id);
//b.html(spinner);
return false;
});
}
$('#refresh_disk').live('click', function(){
var b = $(this);
@ -2116,13 +2130,15 @@ function printNics(vm_info){
<div class="twelve columns">\
<div id="refresh_nic" class="button small secondary radius" ><i class="icon-refresh"/></div>'
// If VM is not RUNNING, then we forget about the attach nic form.
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3"){
html += '\
<div id="attach_nic" class="button small secondary radius" >' + tr("Attach new nic") +'</div>'
} else {
html += '\
<div id="attach_nic" class="button small secondary radius" disabled="disabled">' + tr("Attach new nic") +'</div>'
if (Config.isTabActionEnabled("vms-tab", "VM.attachnic")) {
// If VM is not RUNNING, then we forget about the attach nic form.
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3"){
html += '\
<div id="attach_nic" class="button small secondary radius" >' + tr("Attach new nic") +'</div>'
} else {
html += '\
<div id="attach_nic" class="button small secondary radius" disabled="disabled">' + tr("Attach new nic") +'</div>'
}
}
html += '\
@ -2179,8 +2195,10 @@ function printNics(vm_info){
else {
actions = '';
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3") {
actions += '<a href="VM.detachnic" class="detachnic" ><i class="icon-remove"/>'+tr("Detach")+'</a>'
if (Config.isTabActionEnabled("vms-tab", "VM.detachnic")) {
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3") {
actions += '<a href="VM.detachnic" class="detachnic" ><i class="icon-remove"/>'+tr("Detach")+'</a>'
}
}
}
@ -2321,29 +2339,32 @@ function popUpAttachNicDialog(vm_id){
// Listeners to the nics operations (detach, saveas, attach)
function setup_vm_network_tab(){
//setupSaveAsDialog();
setupAttachNicDialog();
if (Config.isTabActionEnabled("vms-tab", "VM.attachnic")) {
setupAttachNicDialog();
$('a.detachnic').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var nic_id = b.parents('tr').attr('nic_id');
$('#attach_nic').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
Sunstone.runAction('VM.detachnic', vm_id, nic_id);
popUpAttachNicDialog(vm_id);
//b.html(spinner);
return false;
});
//b.html(spinner);
return false;
});
}
$('#attach_nic').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
if (Config.isTabActionEnabled("vms-tab", "VM.detachnic")) {
$('a.detachnic').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var nic_id = b.parents('tr').attr('nic_id');
popUpAttachNicDialog(vm_id);
Sunstone.runAction('VM.detachnic', vm_id, nic_id);
//b.html(spinner);
return false;
});
//b.html(spinner);
return false;
});
}
$('#refresh_nic').live('click', function(){
var b = $(this);
@ -2370,13 +2391,15 @@ function printCapacity(vm_info){
<div class="twelve columns">\
<div id="refresh_capacity" class="button small secondary radius" ><i class="icon-refresh"/></div>'
// If VM is not RUNNING, then we forget about the attach nic form.
if (vm_info.STATE == "0" || vm_info.STATE == "1" || vm_info.STATE == "2" || vm_info.STATE == "7" || vm_info.STATE == "8"){
html += '\
<button id="resize_capacity" class="button small secondary radius" >' + tr("Resize VM capacity") +'</button>'
} else {
html += '\
<button id="resize_capacity" class="button small secondary radius" disabled="disabled">' + tr("Resize VM capacity") +'</button>'
if (Config.isTabActionEnabled("vms-tab", "VM.resize")) {
// If VM is not RUNNING, then we forget about the attach nic form.
if (vm_info.STATE == "0" || vm_info.STATE == "1" || vm_info.STATE == "2" || vm_info.STATE == "7" || vm_info.STATE == "8"){
html += '\
<button id="resize_capacity" class="button small secondary radius" >' + tr("Resize VM capacity") +'</button>'
} else {
html += '\
<button id="resize_capacity" class="button small secondary radius" disabled="disabled">' + tr("Resize VM capacity") +'</button>'
}
}
html += '\
@ -2521,18 +2544,20 @@ function popUpResizeCapacityDialog(vm_id){
// Listeners to the nics operations (detach, saveas, attach)
function setup_vm_capacity_tab(){
//setupSaveAsDialog();
setupResizeCapacityDialog();
if (Config.isTabActionEnabled("vms-tab", "VM.resize")) {
setupResizeCapacityDialog();
$('#resize_capacity').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
$('#resize_capacity').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
popUpResizeCapacityDialog(vm_id);
popUpResizeCapacityDialog(vm_id);
//b.html(spinner);
return false;
});
//b.html(spinner);
return false;
});
}
$('#refresh_capacity').live('click', function(){
var b = $(this);
@ -2559,13 +2584,15 @@ function printSnapshots(vm_info){
<div class="twelve columns">\
<div id="refresh_disk" class="button small secondary radius" ><i class="icon-refresh"/></div>'
// If VM is not RUNNING, then we forget about the attach disk form.
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3"){
html += '\
<div id="take_snapshot" class="button small secondary radius" >' + tr("Take snapshot") +'</div>'
} else {
html += '\
<div id="take_snapshot" class="button small secondary radius" disabled="disabled">' + tr("Take snapshot") +'</div>'
if (Config.isTabActionEnabled("vms-tab", "VM.snapshot_create")) {
// If VM is not RUNNING, then we forget about the attach disk form.
if (vm_info.STATE == "3" && vm_info.LCM_STATE == "3"){
html += '\
<div id="take_snapshot" class="button small secondary radius" >' + tr("Take snapshot") +'</div>'
} else {
html += '\
<div id="take_snapshot" class="button small secondary radius" disabled="disabled">' + tr("Take snapshot") +'</div>'
}
}
html += '\
@ -2615,8 +2642,13 @@ function printSnapshots(vm_info){
actions = '';
if ((vm_info.STATE == "3" && vm_info.LCM_STATE == "3")) {
actions += '<a href="VM.snapshot_revert" class="snapshot_revert" ><i class="icon-reply"/>'+tr("Revert")+'</a> &emsp;'
actions += '<a href="VM.snapshot_delete" class="snapshot_delete" ><i class="icon-remove"/>'+tr("Delete")+'</a>'
if (Config.isTabActionEnabled("vms-tab", "VM.snapshot_revert")) {
actions += '<a href="VM.snapshot_revert" class="snapshot_revert" ><i class="icon-reply"/>'+tr("Revert")+'</a> &emsp;'
}
if (Config.isTabActionEnabled("vms-tab", "VM.snapshot_delete")) {
actions += '<a href="VM.snapshot_delete" class="snapshot_delete" ><i class="icon-remove"/>'+tr("Delete")+'</a>'
}
}
}
@ -2708,39 +2740,46 @@ function popUpSnapshotDialog(vm_id){
// Listeners to the disks operations (detach, saveas, attach)
function setup_vm_snapshot_tab(){
setupSnapshotDialog();
if (Config.isTabActionEnabled("vms-tab", "VM.snapshot_create")) {
setupSnapshotDialog();
$('a.snapshot_revert').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var snapshot_id = b.parents('tr').attr('snapshot_id');
$('#take_snapshot').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
Sunstone.runAction('VM.snapshot_revert', vm_id, {"snapshot_id": snapshot_id});
popUpSnapshotDialog(vm_id);
//b.html(spinner);
return false;
});
//b.html(spinner);
return false;
});
}
$('a.snapshot_delete').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var snapshot_id = b.parents('tr').attr('snapshot_id');
if (Config.isTabActionEnabled("vms-tab", "VM.snapshot_revert")) {
$('a.snapshot_revert').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var snapshot_id = b.parents('tr').attr('snapshot_id');
Sunstone.runAction('VM.snapshot_delete', vm_id, {"snapshot_id": snapshot_id});
Sunstone.runAction('VM.snapshot_revert', vm_id, {"snapshot_id": snapshot_id});
//b.html(spinner);
return false;
});
//b.html(spinner);
return false;
});
}
$('#take_snapshot').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
popUpSnapshotDialog(vm_id);
if (Config.isTabActionEnabled("vms-tab", "VM.snapshot_delete")) {
$('a.snapshot_delete').live('click', function(){
var b = $(this);
var vm_id = b.parents('form').attr('vmid');
var snapshot_id = b.parents('tr').attr('snapshot_id');
//b.html(spinner);
return false;
});
Sunstone.runAction('VM.snapshot_delete', vm_id, {"snapshot_id": snapshot_id});
//b.html(spinner);
return false;
});
}
$('#refresh_snapshot').live('click', function(){
var b = $(this);
@ -2969,15 +3008,13 @@ function vmMonitorError(req,error_json){
// At this point the DOM is ready and the sunstone.js ready() has been run.
$(document).ready(function(){
var tab_name = 'vms-tab';
dataTable_vMachines = $("#datatable_vmachines",main_tabs_context).dataTable({
"oColVis": {
"aiExclude": [ 0 ]
},
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "35px", "aTargets": [0,1] },
{ "bVisible": true, "aTargets": config['view']['tabs']['vms-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -792,7 +792,8 @@ function updateVNetworkInfo(request,vn){
</table>\
</div>\
<div class="six columns">'
+ insert_permissions_table("Network",
+ insert_permissions_table('vnets-tab',
"Network",
vn_info.ID,
vn_info.UNAME,
vn_info.GNAME,
@ -866,25 +867,29 @@ function printLeases(vn_info){
<td class="value_td">'+vn_info.RANGE.IP_END+'</td>\
<td></td>\
<td></td>\
</tr\>\
</tr>\
<tr>\
<td colspan="2" class="key_td">'+tr("Network mask")+'</td>\
<td class="value_td">'+( vn_info.TEMPLATE.NETWORK_MASK ? vn_info.TEMPLATE.NETWORK_MASK : "--" )+'</td>\
<td></td>\
<td></td>\
</tr\>\
<tr>\
</tr>';
if (Config.isTabActionEnabled("vnets-tab", "Network.hold_lease")) {
html += '<tr>\
<td></td>\
<td class="value_td"><input type="text" id="panel_hold_lease" style="width:9em;"/></td>\
<td colspan="3"><button class="button small secondary radius" id="panel_hold_lease_button">'+tr("Hold lease")+'</button></td>\
</tr>';
<td colspan="3"><button class="button small secondary radius" id="panel_hold_lease_button">'+tr("Hold IP")+'</button></td>\
</tr>';
}
} else {
if (Config.isTabActionEnabled("vnets-tab", "Network.addleases")) {
html += '<tr>\
<td></td>\
<td class="value_td"><input type="text" id="panel_add_lease"/></td>\
<td colspan="2"><button id="panel_add_lease_button" class="button small secondary radius">'+tr("Add")+'</button></td>\
<td colspan="2"><button id="panel_add_lease_button" class="button small secondary radius">'+tr("Add IP")+'</button></td>\
<td></td>\
</tr>';
}
};
var leases = vn_info.LEASES.LEASE;
@ -938,13 +943,26 @@ function printLeases(vn_info){
switch (state){
case 0:
html += '<td><a class="hold_lease" href="#"><i class="icon-pause"/></a></td><td><a class="delete_lease" href="#"><i class="icon-trash"/></a>';
html += '<td>';
if (Config.isTabActionEnabled("vnets-tab", "Network.hold_lease")) {
html += '<a class="hold_lease" href="#"><i class="icon-pause"/></a>';
}
html += '</td>'
html += '<td>'
if (Config.isTabActionEnabled("vnets-tab", "Network.remove_lease")) {
html += '<a class="delete_lease" href="#"><i class="icon-trash"/></a>';
}
break;
case 1:
html += '<td colspan="2">' + tr("VM:") + lease.VID+''
break;
case 2:
html += '<td><a class="release_lease" href="#"><i class="icon-play"/></a></td><td>';
html += '<td>';
if (Config.isTabActionEnabled("vnets-tab", "Network.release_lease")) {
html += '<a class="release_lease" href="#"><i class="icon-play"/></a>';
}
html += '</td>'
html += '<td>'
break;
};
html += '</td>'
@ -1250,6 +1268,7 @@ function popUpCreateVnetDialog() {
// Listeners to the add, hold, release, delete leases operations in the
// extended information panel.
function setupLeasesOps(){
if (Config.isTabActionEnabled("vnets-tab", "Network.addleases")) {
$('button#panel_add_lease_button').live("click",function(){
var lease = $('input#panel_add_lease', dialog).val();
//var mac = $(this).previous().val();
@ -1260,7 +1279,9 @@ function setupLeasesOps(){
}
return false;
});
}
if (Config.isTabActionEnabled("vnets-tab", "Network.hold_lease")) {
//ranged networks hold lease
$('button#panel_hold_lease_button').live("click",function(){
var lease = $('input#panel_hold_lease', dialog).val();
@ -1273,16 +1294,6 @@ function setupLeasesOps(){
return false;
});
$('form#leases_form a.delete_lease').live("click",function(){
var lease = $(this).parents('tr').attr('ip');
var id = $(this).parents('form').attr('vnid');
var obj = { ip: lease};
Sunstone.runAction('Network.rmleases',id,obj);
//Set spinner
$(this).parents('tr').html('<td class="key_td">'+spinner+'</td><td class="value_td"></td>');
return false;
});
//fixed networks hold lease
$('a.hold_lease').live("click",function(){
var lease = $(this).parents('tr').attr('ip');
@ -1293,7 +1304,23 @@ function setupLeasesOps(){
$(this).parents('tr').html('<td class="key_td">'+spinner+'</td><td class="value_td"></td>');
return false;
});
}
if (Config.isTabActionEnabled("vnets-tab", "Network.remove_lease")) {
$('form#leases_form a.delete_lease').live("click",function(){
var lease = $(this).parents('tr').attr('ip');
var id = $(this).parents('form').attr('vnid');
var obj = { ip: lease};
Sunstone.runAction('Network.rmleases',id,obj);
//Set spinner
$(this).parents('tr').html('<td class="key_td">'+spinner+'</td><td class="value_td"></td>');
return false;
});
}
if (Config.isTabActionEnabled("vnets-tab", "Network.release_lease")) {
$('a.release_lease').live("click",function(){
var lease = $(this).parents('tr').attr('ip');
var id = $(this).parents('form').attr('vnid');
@ -1303,6 +1330,7 @@ function setupLeasesOps(){
$(this).parents('tr').html('<td class="key_td">'+spinner+'</td><td class="value_td"></td>');
return false;
});
}
}
function setVNetAutorefresh() {
@ -1318,14 +1346,12 @@ function setVNetAutorefresh() {
//The DOM is ready and the ready() from sunstone.js
//has been executed at this point.
$(document).ready(function(){
var tab_name = 'vnets-tab';
dataTable_vNetworks = $("#datatable_vnetworks",main_tabs_context).dataTable({
"oColVis": {
"aiExclude": [ 0 ]
},
"aoColumnDefs": [
{ "sWidth": "35px", "aTargets": [0,1] },
{ "bVisible": true, "aTargets": config['view']['tabs']['vnets-tab']['table_columns']},
{ "bVisible": true, "aTargets": Config.tabTableColumns(tab_name)},
{ "bVisible": false, "aTargets": ['_all']}
]
});

View File

@ -1926,116 +1926,124 @@ function buildOctet(permTable){
// Returns HTML with listeners to control permissions
function insert_permissions_table(resource_type,resource_id, owner, group, vm_uid, vm_gid){
var str ='<table class="'+resource_type.toLowerCase()+'_permissions_table twelve datatable extended_table">\
<thead><tr>\
<th style="width:130px">'+tr("Permissions")+':</th>\
<th style="width:40px;text-align:center;">'+tr("Use")+'</th>\
<th style="width:40px;text-align:center;">'+tr("Manage")+'</th>\
<th style="width:40px;text-align:center;">'+tr("Admin")+'</th></tr></thead>\
<tr>\
<td>'+tr("Owner")+'</td>\
<td style="text-align:center"><input type="checkbox" class="permission_check owner_u" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check owner_m" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check owner_a" /></td>\
</tr>\
<tr>\
<td>'+tr("Group")+'</td>\
<td style="text-align:center"><input type="checkbox" class="permission_check group_u" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check group_m" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check group_a" /></td>\
</tr>\
<tr>\
<td>'+tr("Other")+'</td>\
<td style="text-align:center"><input type="checkbox" class="permission_check other_u" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check other_m" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check other_a" /></td>\
</tr>'
function insert_permissions_table(tab_name, resource_type, resource_id, owner, group, vm_uid, vm_gid){
var str ='<table class="'+resource_type.toLowerCase()+'_permissions_table twelve datatable extended_table">'
if (mustBeAdmin())
{
str += '<thead><tr><th colspan="4" style="width:130px">'+tr("Ownership")+'</th>\</tr></thead>\
<tr>\
<td>'+tr("Owner")+'</td>\
<td colspan="2" id="value_td_owner">'+owner+'</td>\
<td><div id="div_edit_chg_owner">\
<a id="div_edit_chg_owner_link" class="edit_e" href="#"><i class="icon-edit right"/></a>\
</div>\
</td>\
</tr>\
<tr>\
<td>'+tr("Group")+'</td>\
<td colspan="2" id="value_td_group">'+group+'</td>\
<td><div id="div_edit_chg_group">\
<a id="div_edit_chg_group_link" class="edit_e" href="#"><i class="icon-edit right"/></a>\
</div>\
</td>\
</tr>\
</table>'
if (Config.isTabActionEnabled(tab_name, resource_type+'.chmod')) {
str += '<thead><tr>\
<th style="width:130px">'+tr("Permissions")+':</th>\
<th style="width:40px;text-align:center;">'+tr("Use")+'</th>\
<th style="width:40px;text-align:center;">'+tr("Manage")+'</th>\
<th style="width:40px;text-align:center;">'+tr("Admin")+'</th></tr></thead>\
<tr>\
<td>'+tr("Owner")+'</td>\
<td style="text-align:center"><input type="checkbox" class="permission_check owner_u" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check owner_m" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check owner_a" /></td>\
</tr>\
<tr>\
<td>'+tr("Group")+'</td>\
<td style="text-align:center"><input type="checkbox" class="permission_check group_u" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check group_m" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check group_a" /></td>\
</tr>\
<tr>\
<td>'+tr("Other")+'</td>\
<td style="text-align:center"><input type="checkbox" class="permission_check other_u" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check other_m" /></td>\
<td style="text-align:center"><input type="checkbox" class="permission_check other_a" /></td>\
</tr>'
// Handlers for chown
$("#div_edit_chg_owner_link").die();
$("#user_confirm_select").die();
$(".permission_check").die();
$(".permission_check").live('change',function(){
var permissions_table = $("."+resource_type.toLowerCase()+"_permissions_table");
var permissions_octect = { octet : buildOctet(permissions_table) };
// Listener for key,value pair edit action
$("#div_edit_chg_owner_link").live("click", function() {
var value_str = $("#value_td_owner").text();
var select_str='<select id="user_confirm_select">';
select_str += makeSelectOptions(dataTable_users,1,2,[],[],true);
select_str+="</select>";
$("#value_td_owner").html(select_str);
$("select#user_confirm_select").val(vm_uid);
});
$("#user_confirm_select").live("change", function() {
var value_str = $('select#user_confirm_select').val();
if(value_str!="")
{
// Let OpenNebula know
var resource_struct = new Array();
resource_struct[0] = resource_id;
Sunstone.runAction(resource_type+".chown",resource_struct,value_str);
Sunstone.runAction(resource_type+".showinfo",resource_id);
}
});
// Handlers for chgrp
$("#div_edit_chg_group_link").die();
$("#group_confirm_select").die();
// Listener for key,value pair edit action
$("#div_edit_chg_group_link").live("click", function() {
var value_str = $("#value_td_group").text();
var select_str='<select id="group_confirm_select">';
select_str += makeSelectOptions(dataTable_groups,1,2,[],[],true);
select_str+="</select>";
$("#value_td_group").html(select_str);
$("select#group_confirm_select").val(vm_gid);
});
$("#group_confirm_select").live("change", function() {
var value_str = $('select#group_confirm_select').val();
if(value_str!="")
{
// Let OpenNebula know
var resource_struct = new Array();
resource_struct[0] = resource_id;
Sunstone.runAction(resource_type+".chgrp",resource_struct,value_str);
Sunstone.runAction(resource_type+".showinfo",resource_id);
}
Sunstone.runAction(resource_type+".chmod",resource_id,permissions_octect);
});
}
$(".permission_check").die();
$(".permission_check").live('change',function(){
var permissions_table = $("."+resource_type.toLowerCase()+"_permissions_table");
var permissions_octect = { octet : buildOctet(permissions_table) };
if (Config.isTabActionEnabled(tab_name, resource_type+'.chgrp') || Config.isTabActionEnabled(tab_name, resource_type+'.chown')) {
str += '<thead><tr><th colspan="4" style="width:130px">'+tr("Ownership")+'</th>\</tr></thead>'
Sunstone.runAction(resource_type+".chmod",resource_id,permissions_octect);
});
if (Config.isTabActionEnabled(tab_name, resource_type+'.chown')) {
str += '<tr>\
<td>'+tr("Owner")+'</td>\
<td colspan="2" id="value_td_owner">'+owner+'</td>\
<td><div id="div_edit_chg_owner">\
<a id="div_edit_chg_owner_link" class="edit_e" href="#"><i class="icon-edit right"/></a>\
</div>\
</td>\
</tr>'
// Handlers for chown
$("#div_edit_chg_owner_link").die();
$("#user_confirm_select").die();
// Listener for key,value pair edit action
$("#div_edit_chg_owner_link").live("click", function() {
var value_str = $("#value_td_owner").text();
var select_str='<select id="user_confirm_select">';
select_str += makeSelectOptions(dataTable_users,1,2,[],[],true);
select_str+="</select>";
$("#value_td_owner").html(select_str);
$("select#user_confirm_select").val(vm_uid);
});
$("#user_confirm_select").live("change", function() {
var value_str = $('select#user_confirm_select').val();
if(value_str!="")
{
// Let OpenNebula know
var resource_struct = new Array();
resource_struct[0] = resource_id;
Sunstone.runAction(resource_type+".chown",resource_struct,value_str);
Sunstone.runAction(resource_type+".showinfo",resource_id);
}
});
}
if (Config.isTabActionEnabled(tab_name, resource_type+'.chgrp')) {
str += '<tr>\
<td>'+tr("Group")+'</td>\
<td colspan="2" id="value_td_group">'+group+'</td>\
<td><div id="div_edit_chg_group">\
<a id="div_edit_chg_group_link" class="edit_e" href="#"><i class="icon-edit right"/></a>\
</div>\
</td>\
</tr>'
// Handlers for chgrp
$("#div_edit_chg_group_link").die();
$("#group_confirm_select").die();
// Listener for key,value pair edit action
$("#div_edit_chg_group_link").live("click", function() {
var value_str = $("#value_td_group").text();
var select_str='<select id="group_confirm_select">';
select_str += makeSelectOptions(dataTable_groups,1,2,[],[],true);
select_str+="</select>";
$("#value_td_group").html(select_str);
$("select#group_confirm_select").val(vm_gid);
});
$("#group_confirm_select").live("change", function() {
var value_str = $('select#group_confirm_select').val();
if(value_str!="")
{
// Let OpenNebula know
var resource_struct = new Array();
resource_struct[0] = resource_id;
Sunstone.runAction(resource_type+".chgrp",resource_struct,value_str);
Sunstone.runAction(resource_type+".showinfo",resource_id);
}
});
}
}
str += '</table>'
return str;
}
function insert_cluster_dropdown(resource_type, resource_id, cluster_value, cluster_id){

View File

@ -125,15 +125,15 @@ var Sunstone = {
var tab=null;
var active=false;
console.log(selected_tab)
for (tab_name in tabs){
if (config['view']['tabs'][selected_tab]['tabs_panel'][tab_name] == false) {
for (panel_tab_name in tabs){
if (Config.isTabPanelEnabled(selected_tab, panel_tab_name) == false) {
continue;
}
tab=tabs[tab_name];
var dd = $('<dd><a href="#'+tab_name+'">'+tab.title+'</a></dd>').appendTo($('dl',dl_tabs));
//$('ul', dl_tabs).append('<div id="'+tab_name+'"><li id="'+tab_name+'Tab">'+tab.content+'</li></div>');
var li = $('<li id="'+tab_name+'Tab">'+tab.content+'</li>').appendTo($('ul', dl_tabs));
tab=tabs[panel_tab_name];
var dd = $('<dd><a href="#'+panel_tab_name+'">'+tab.title+'</a></dd>').appendTo($('dl',dl_tabs));
//$('ul', dl_tabs).append('<div id="'+panel_tab_name+'"><li id="'+panel_tab_name+'Tab">'+tab.content+'</li></div>');
var li = $('<li id="'+panel_tab_name+'Tab">'+tab.content+'</li>').appendTo($('ul', dl_tabs));
if (!active) {
dd.addClass('active');
@ -686,7 +686,7 @@ function insertButtonsInTab(tab_name){
button = buttons[button_name];
//if we meet the condition we proceed. Otherwise we skip it.
if (config['view']['tabs'][tab_name]['actions'][button_name] == false) {
if (Config.isTabActionEnabled(tab_name, button_name) == false) {
continue;
}

View File

@ -46,7 +46,7 @@
%script{:type=>"text/javascript", :src=>"js/sunstone-util.js"}
%script{:type=>"text/javascript", :src=>"js/monitoring.js"}
- view = $views_config.view(session['user'], session['user_gname'], session['view_name'])
- view = $views_config.view(session['user'], session['user_gname'], session['default_view'])
:javascript
var view = JSON.parse('#{view.to_json}')