diff --git a/src/sunstone/public/js/opennebula.js b/src/sunstone/public/js/opennebula.js index 23abbc1a6e..23aa229b52 100644 --- a/src/sunstone/public/js/opennebula.js +++ b/src/sunstone/public/js/opennebula.js @@ -182,8 +182,8 @@ var OpenNebula = { var password = params.data.password; var remember = params.remember; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"login"); + var resource = OpenNebula.Auth.resource; + var request = OpenNebula.Helper.request(resource,"login"); $.ajax({ url: "/login", @@ -216,8 +216,8 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"logout"); + var resource = OpenNebula.Auth.resource; + var request = OpenNebula.Helper.request(resource,"logout"); $.ajax({ url: "/logout", @@ -248,8 +248,8 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"list"); + var resource = OpenNebula.Config.resource; + var request = OpenNebula.Helper.request(resource,"list"); $.ajax({ url: "/config", @@ -281,8 +281,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var data = params.data; + var resource = OpenNebula.Host.resource; - var request = OpenNebula.Helper.request(this.resource,"create", data); + var request = OpenNebula.Helper.request(resource,"create", data); $.ajax({ url: "/host", @@ -311,9 +312,10 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Host.resource; - var request = OpenNebula.Helper.request(this.resource,"delete", id); + var request = OpenNebula.Helper.request(resource,"delete", id); $.ajax({ url: "/host/" + id, @@ -341,8 +343,8 @@ var OpenNebula = { var callback_error = params.error; var timeout = params.timeout || false; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"list"); + var resource = OpenNebula.Host.resource; + var request = OpenNebula.Helper.request(resource,"list"); $.ajax({ url: "/host", @@ -374,8 +376,8 @@ var OpenNebula = { var callback_error = params.error; var id = params.data.id; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"show", id); + var resource = OpenNebula.Host.resource; + var request = OpenNebula.Helper.request(resource,"show", id); $.ajax({ url: "/host/" + id, @@ -403,10 +405,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Host.resource; var method = "enable"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/host/" + id + "/action", @@ -434,10 +437,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Host.resource; var method = "disable"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/host/" + id + "/action", @@ -469,8 +473,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var data = params.data; + var resource = OpenNebula.Network.resource; - var request = OpenNebula.Helper.request(this.resource,"create",data); + var request = OpenNebula.Helper.request(resource,"create",data); $.ajax({ url: "/vnet", @@ -499,8 +504,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Network.resource; - var request = OpenNebula.Helper.request(this.resource,"delete", id); + var request = OpenNebula.Helper.request(resource,"delete", id); $.ajax({ url: "/vnet/" + id, @@ -527,9 +533,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var timeout = params.timeout || false; - - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"list"); + var resource = OpenNebula.Network.resource; + + var request = OpenNebula.Helper.request(resource,"list"); $.ajax({ url: "/vnet", @@ -559,8 +565,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Network.resource; - var request = OpenNebula.Helper.request(this.resource,"show", id); + var request = OpenNebula.Helper.request(resource,"show", id); $.ajax({ url: "/vnet/" + id, @@ -588,10 +595,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Network.resource; var method = "publish"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vnet/" + id + "/action", @@ -619,10 +627,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Network.resource; var method = "unpublish"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vnet/" + id + "/action", @@ -654,8 +663,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var data = params.data; + var resource = OpenNebula.VM.resource; - var request = OpenNebula.Helper.request(this.resource,"create",data); + var request = OpenNebula.Helper.request(resource,"create",data); $.ajax({ url: "/vm", @@ -684,8 +694,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Network.resource; - var request = OpenNebula.Helper.request(this.resource,"delete", id); + var request = OpenNebula.Helper.request(resource,"delete", id); $.ajax({ url: "/vm/" + id, @@ -713,8 +724,8 @@ var OpenNebula = { var callback_error = params.error; var timeout = params.timeout || false; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"list"); + var resource = OpenNebula.VM.resource; + var request = OpenNebula.Helper.request(resource,"list"); $.ajax({ url: "/vm", @@ -744,8 +755,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; - var request = OpenNebula.Helper.request(this.resource,"log", id); + var request = OpenNebula.Helper.request(resource,"log", id); $.ajax({ url: "/vm/" + id + "/log", @@ -772,8 +784,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; - var request = OpenNebula.Helper.request(this.resource,"show", id); + var request = OpenNebula.Helper.request(resource,"show", id); $.ajax({ url: "/vm/" + id, @@ -802,10 +815,11 @@ var OpenNebula = { var callback_error = params.error; var id = params.data.id; var host = params.data.extra_param; + var resource = OpenNebula.VM.resource; var method = "deploy"; var action = OpenNebula.Helper.action(method, {"host_id": host}); - var request = OpenNebula.Helper.request(this.resource,method, [id, host]); + var request = OpenNebula.Helper.request(resource,method, [id, host]); $.ajax({ url: "/vm/" + id + "/action", @@ -833,10 +847,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; var method = "shutdown"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vm/" + id + "/action", @@ -865,10 +880,11 @@ var OpenNebula = { var callback_error = params.error; var id = params.data.id; var host = params.data.extra_param; + var resource = OpenNebula.VM.resource; var method = "livemigrate"; var action = OpenNebula.Helper.action(method,{"host_id": host}); - var request = OpenNebula.Helper.request(this.resource,method, [id, host]); + var request = OpenNebula.Helper.request(resource,method, [id, host]); $.ajax({ url: "/vm/" + id + "/action", @@ -897,10 +913,11 @@ var OpenNebula = { var callback_error = params.error; var id = params.data.id; var host = params.data.extra_param; + var resource = OpenNebula.VM.resource; var method = "migrate"; var action = OpenNebula.Helper.action(method,{"host_id": host}); - var request = OpenNebula.Helper.request(this.resource,method, [id, host]); + var request = OpenNebula.Helper.request(resource,method, [id, host]); $.ajax({ url: "/vm/" + id + "/action", @@ -928,10 +945,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; var method = "hold"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vm/" + id + "/action", @@ -959,10 +977,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; var method = "release"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vm/" + id + "/action", @@ -990,10 +1009,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; var method = "stop"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vm/" + id + "/action", @@ -1021,10 +1041,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; var method = "cancel"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vm/" + id + "/action", @@ -1052,10 +1073,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; - + var resource = OpenNebula.VM.resource; + var method = "suspend"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vm/" + id + "/action", @@ -1083,10 +1105,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; var method = "resume"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vm/" + id + "/action", @@ -1125,8 +1148,10 @@ var OpenNebula = { "image_name": image_name, "type" : type } + var resource = OpenNebula.VM.resource; + var action = OpenNebula.Helper.action(method,saveas_params) - var request = OpenNebula.Helper.request(this.resource,method, [vm_id, disk_id, image_name, type]); + var request = OpenNebula.Helper.request(resource,method, [vm_id, disk_id, image_name, type]); $.ajax({ url: "/vm/" + id + "/action", @@ -1154,10 +1179,11 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.VM.resource; var method = "restart"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/vm/" + id + "/action", @@ -1189,8 +1215,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var data = params.data; + var resource = OpenNebula.Cluster.resource; - var request = OpenNebula.Helper.request(this.resource,"create", name); + var request = OpenNebula.Helper.request(resource,"create", name); $.ajax({ url: "/cluster", @@ -1219,8 +1246,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Cluster.resource; - var request = OpenNebula.Helper.request(this.resource,"delete", id); + var request = OpenNebula.Helper.request(resource,"delete", id); $.ajax({ url: "/cluster/" + id, @@ -1247,9 +1275,10 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var timeout = params.timeout || false; + var resource = OpenNebula.Cluster.resource; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"list"); + var resource = OpenNebula.Cluster.resource; + var request = OpenNebula.Helper.request(resource,"list"); $.ajax({ url: "/cluster", @@ -1280,12 +1309,13 @@ var OpenNebula = { var callback_error = params.error; var host_id = params.data.id; var cluster_id = params.data.extra_param; + var resource = OpenNebula.Cluster.resource; var method = "add_host"; var action = OpenNebula.Helper.action(method, { "host_id" : host_id }); - var request = OpenNebula.Helper.request(this.resource,method, [host_id, cluster_id]); + var request = OpenNebula.Helper.request(resource,method, [host_id, cluster_id]); $.ajax({ url: "/cluster/" + cluster_id + "/action", @@ -1319,7 +1349,9 @@ var OpenNebula = { var action = OpenNebula.Helper.action(method, { "host_id" : host_id }); - var request = OpenNebula.Helper.request(this.resource,method, [host_id, cluster_id]); + var resource = OpenNebula.Cluster.resource; + + var request = OpenNebula.Helper.request(resource,method, [host_id, cluster_id]); $.ajax({ url: "/cluster/" + cluster_id + "/action", @@ -1351,8 +1383,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var data = params.data; + var resource = OpenNebula.User.resource; - var request = OpenNebula.Helper.request(this.resource,"create",data); + var request = OpenNebula.Helper.request(resource,"create",data); $.ajax({ url: "/user", @@ -1381,8 +1414,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.User.resource; - var request = OpenNebula.Helper.request(this.resource,"delete", id); + var request = OpenNebula.Helper.request(resource,"delete", id); $.ajax({ url: "/user/" + id, @@ -1410,8 +1444,8 @@ var OpenNebula = { var callback_error = params.error; var timeout = params.timeout || false; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"list"); + var resource = OpenNebula.Cluster.resource; + var request = OpenNebula.Helper.request(resource,"list"); $.ajax({ url: "/user", @@ -1447,7 +1481,9 @@ var OpenNebula = { var action = OpenNebula.Helper.action(method, { "password" : passwd }); - var request = OpenNebula.Helper.request(this.resource,method, passwd); + + var resource = OpenNebula.User.resource; + var request = OpenNebula.Helper.request(resource,method, passwd); $.ajax({ url: "/user/" + id + "/action", @@ -1479,8 +1515,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var data = params.data; + var resource = OpenNebula.Image.resource; - var request = OpenNebula.Helper.request(this.resource,"register",data); + var request = OpenNebula.Helper.request(resource,"register",data); $.ajax({ url: "/image", @@ -1509,8 +1546,9 @@ var OpenNebula = { var callback = params.success; var callback_error = params.error; var id = params.data.id; + var resource = OpenNebula.Image.resource; - var request = OpenNebula.Helper.request(this.resource,"delete", id); + var request = OpenNebula.Helper.request(resource,"delete", id); $.ajax({ url: "/image/" + id, @@ -1538,8 +1576,8 @@ var OpenNebula = { var callback_error = params.error; var timeout = params.timeout || false; - var resource = this.resource; - var request = OpenNebula.Helper.request(this.resource,"list"); + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,"list"); $.ajax({ url: "/image", @@ -1570,7 +1608,8 @@ var OpenNebula = { var callback_error = params.error; var id = params.data.id; - var request = OpenNebula.Helper.request(this.resource,"show", id); + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,"show", id); $.ajax({ url: "/image/" + id, @@ -1606,7 +1645,9 @@ var OpenNebula = { "name" : name, "value" : value }); - var request = OpenNebula.Helper.request(this.resource,method, [id, name, value]); + + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,method, [id, name, value]); $.ajax({ url: "/image/" + id + "/action", @@ -1641,7 +1682,9 @@ var OpenNebula = { var action = OpenNebula.Helper.action(method, { "name" : name }); - var request = OpenNebula.Helper.request(this.resource,method, [id, name]); + + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,method, [id, name]); $.ajax({ url: "/image/" + id + "/action", @@ -1672,7 +1715,9 @@ var OpenNebula = { var method = "enable"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/image/" + id + "/action", @@ -1703,7 +1748,8 @@ var OpenNebula = { var method = "disable"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/image/" + id + "/action", @@ -1734,7 +1780,8 @@ var OpenNebula = { var method = "publish"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/image/" + id + "/action", @@ -1765,7 +1812,8 @@ var OpenNebula = { var method = "unpublish"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/image/" + id + "/action", @@ -1796,7 +1844,9 @@ var OpenNebula = { var method = "persistent"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/image/" + id + "/action", @@ -1827,7 +1877,9 @@ var OpenNebula = { var method = "nonpersistent"; var action = OpenNebula.Helper.action(method); - var request = OpenNebula.Helper.request(this.resource,method, id); + + var resource = OpenNebula.Image.resource; + var request = OpenNebula.Helper.request(resource,method, id); $.ajax({ url: "/image/" + id + "/action", diff --git a/src/sunstone/public/js/plugins/hosts-tab.js b/src/sunstone/public/js/plugins/hosts-tab.js index 699cd95e5b..4f1dfa918b 100644 --- a/src/sunstone/public/js/plugins/hosts-tab.js +++ b/src/sunstone/public/js/plugins/hosts-tab.js @@ -38,6 +38,65 @@ var hosts_tab_content = \ '; +var create_host_tmpl = +'
\ +
\ + Host parameters\ + \ +
\ +

Drivers

\ +
\ +
\ + \ + \ +
\ +
\ + \ + \ +
\ +
\ + \ + \ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
\ +
'; + +var create_cluster_tmpl = +'
\ +
\ +
\ + \ +
\ +
\ +
\ +
\ +
\ + \ + \ +
\ +
\ +
'; + var hosts_select=""; var clusters_select=""; var host_list_json = {}; @@ -55,6 +114,11 @@ var host_actions = { notify:False, }, + "Host.create_dialog" : { + type: "custom", + call: popUpCreateHostDialog + }, + "Host.list" : { type: "list", call: OpenNebula.Host.list, @@ -110,7 +174,7 @@ var host_actions = { "Host.delete" : { type: "multiple", - call : OpenNebula.Host.create, + call : OpenNebula.Host.delete, callback : deleteHostElement, dataTable: function() { return dataTable_hosts }, error : onError, @@ -136,7 +200,20 @@ var host_actions = { Sunstone.runAction("Cluster.list"); }, error : onError, - notify:True, + notify:True + }, + + "Cluster.create_dialog" : { + type: "custom", + call: popUpCreateClusterDialog + }, + + "Cluster.list" : { + type: "list", + call: OpenNebula.Cluster.list, + callback: updateClustersView, + error: onError, + notify:True }, "Cluster.delete" : { @@ -178,9 +255,8 @@ var host_buttons = { img: "/images/Refresh-icon.png", condition: True }, - - "Host.create" : { - type: "create", + "Host.create_dialog" : { + type: "create_dialog", text: "+ New host", condition :True }, @@ -195,8 +271,8 @@ var host_buttons = { tip: "This will disable the selected hosts.", condition : True }, - "Cluster.create" : { - type: "create", + "Cluster.create_dialog" : { + type: "create_dialog", text: "+ New Cluster", condition : True }, @@ -231,12 +307,25 @@ var host_buttons = { } }; +var host_info_panel = { + "info_host_tab" : { + title: "Host information", + content:"" + }, + + "host_template_tab" : { + title: "Host template", + content: "" + } +}; + for (action in host_actions){ Sunstone.addAction(action,host_actions[action]); } // title, content, buttons, id Sunstone.addMainTab('Hosts',hosts_tab_content,host_buttons,'hosts_tab'); +Sunstone.addInfoPanel("host_info_panel",host_info_panel); //Plugin functions @@ -395,15 +484,11 @@ function updateClustersView(request, cluster_list){ function updateHostInfo(request,host){ - host_info = host.HOST - rendered_info = -'
\ - \ -
\ - \ + var host_info = host.HOST; + var info_host_tab = { + title : "Host information", + content : + '
\ \ \ \ @@ -460,20 +545,92 @@ function updateHostInfo(request,host){ \ \ \ -
Host information - '+host_info.NAME+'
Running VMs'+host_info.HOST_SHARE.RUNNING_VMS+'
\ -
\ -
\ - \ +
' + } + + var host_template_tab = { + title : "Host template", + content : + '\ '+ prettyPrintJSON(host_info.TEMPLATE)+ - '
Host template
\ -
\ -
'; - popDialog(rendered_info); - $('#host_informations').tabs(); + '' + } + + Sunstone.updateInfoTab("host_info_panel","info_host_tab",info_host_tab); + Sunstone.updateInfoTab("host_info_panel","host_template_tab",host_template_tab); + popDialog(Sunstone.getInfoPanelHTML("host_info_panel")); } +function setUpCreateHostDialog(){ + $('div#dialogs').append('
'); + $('div#create_host_dialog').html(create_host_tmpl); + $('#create_host_dialog').dialog({ + autoOpen: false, + modal: true, + width: 500 + }); + + $('#create_host_dialog button').button(); + + //Handle the form submission + $('#create_host_form').submit(function(){ + if (!($('#name',this).val().length)){ + notifyError("Host name missing!"); + return false; + } + host_json = { "host": { "name": $('#name',this).val(), + "tm_mad": $('#tm_mad :selected',this).val(), + "vm_mad": $('#vmm_mad :selected',this).val(), + "im_mad": $('#im_mad :selected',this).val()}} + + //Create the OpenNebula.Host. + //If it's successfull we refresh the list. + Sunstone.runAction("Host.create",host_json); + //OpenNebula.Host.create({data: host_json, success: addHostElement, error: onError}); + $('#create_host_dialog').dialog('close'); + return false; + }); + +} + +function setUpCreateClusterDialog(){ + $('div#dialogs').append('
'); + $('#create_cluster_dialog').html(create_cluster_tmpl); + + $('#create_cluster_dialog').dialog({ + autoOpen: false, + modal: true, + width: 400 + }); + + $('#create_cluster_dialog button').button(); + + $('#create_cluster_form').submit(function(){ + name=$('#name',this).val(); + cluster_json = { "cluster" : { "name" : name }}; + Sunstone.runAction("Cluster.create",cluster_json); + $('#create_cluster_dialog').dialog('close'); + return false; + }); + +} + + + +function popUpCreateHostDialog(){ + $('#create_host_dialog').dialog('open'); + return false; +} + +function popUpCreateClusterDialog(){ + $('#create_cluster_dialog').dialog('open'); + return false; +} + + + //Document ready $(document).ready(function(){ @@ -499,6 +656,9 @@ $(document).ready(function(){ //OpenNebula.Host.list({success: updateHostsView,error: onError}); Sunstone.runAction("Host.list"); + setUpCreateHostDialog(); + setUpCreateClusterDialog(); + //set refresh interval setInterval(function(){ nodes = $('input:checked',dataTable_hosts.fnGetNodes()); @@ -511,5 +671,6 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_hosts); tableCheckboxesListener(dataTable_hosts); hostInfoListener(); + }); diff --git a/src/sunstone/public/js/sunstone-util.js b/src/sunstone/public/js/sunstone-util.js index 3fba713610..a50c0740f8 100644 --- a/src/sunstone/public/js/sunstone-util.js +++ b/src/sunstone/public/js/sunstone-util.js @@ -143,7 +143,7 @@ function tableCheckboxesListener(dataTable){ if (last_action_b.length && last_action_b.val().length){ last_action_b.button("disable"); }; - $('.create_button',context).button("enable"); + $('.create_dialog_button',context).button("enable"); //listen to changes $('input',dataTable).live("change",function(){ diff --git a/src/sunstone/public/js/sunstone.js b/src/sunstone/public/js/sunstone.js index 26abd43e66..13a320bf52 100644 --- a/src/sunstone/public/js/sunstone.js +++ b/src/sunstone/public/js/sunstone.js @@ -67,6 +67,50 @@ var Sunstone = { }, + "getInfoPanelHTML" : function(name){ + var info_panel = $('
'); + var tabs = SunstoneCfg["info_panels"][name]; + var tab=null; + for (tab_name in tabs){ + tab=tabs[tab_name]; + $('ul',info_panel).append('
  • '+tab.title+'
  • '); + info_panel.append('
    '+tab.content+'
    '); + } + return info_panel.tabs({selected: 0}); + + }, + + "addInfoPanel" : function(name, info_panel){ + SunstoneCfg["info_panels"][name]=info_panel; + }, + + "updateInfoPanel" : function(name, info_panel,refresh){ + SunstoneCfg["info_panels"][name]=info_panel; + if (refresh){ + refreshInfoPanel(name); + } + }, + + "removeInfoPanel" : function(name){ + SunstoneCfg["info_panels"][name] = null; + }, + + "addInfoTab" : function(info_panel, tab_name, tab){ + SunstoneCfg["info_panels"][info_panel][tab_name] = tab; + }, + + "updateInfoTab" : function(info_panel, tab_name, tab, refresh){ + SunstoneCfg["info_panels"][info_panel][tab_name] = tab; + if (refresh){ + refreshInfoPanelTab(info_panel,tab_name); + } + }, + + + "removeInfoTab" : function(info_panel,tab_name){ + SunstoneCfg["info_panels"][info_panel][tab_name] = null; + }, + "runAction" : function(action, data_arg, extra_param){ var actions = SunstoneCfg["actions"]; @@ -93,7 +137,10 @@ var Sunstone = { // * Other calls switch (action_cfg.type){ - case "create","single": + case "create": + call({data:data_arg, success: callback, error:err}); + break; + case "single": call({data:{id:data_arg}, success: callback,error:err}); break; case "list": @@ -258,7 +305,6 @@ $(document).ready(function(){ insertTabs(); insertButtons(); - initListButtons(); setupCreateDialogs(); //listener for create setupConfirmDialogs(); @@ -380,6 +426,9 @@ function insertButtons(){ case "image": button_code = ''+button.text+''; break; + case "create_dialog": + button_code = ''; + break; default: button_code = ''; @@ -393,6 +442,56 @@ function insertButtons(){ } +// We do not insert info panels code, we generate it dinamicly when +// we need it with getInfoPanelHTML() +//~ function insertInfoPanels(){ + //~ var panels = SunstoneCfg["info_panels"]; + //~ tabs = null; + //~ //For each defined dialog + //~ for (panel in panels) { + //~ addInfoPanel(panel); + //~ } +//~ } +//~ +//~ function addInfoPanel(name){ + //~ var tabs = SunstoneCfg["info_panels"][name]; + //~ $('#info_panels').append('
    '); + //~ for (tab in tabs){ + //~ addInfoPanelTab(name,tab); + //~ } + //~ //at this point jquery tabs structure is ready, so we enable it + //~ $('div#'+name).tabs(); +//~ } +//~ +//~ function refreshInfoPanel(name){ + //~ $('#info_panels div#'+name).tabs("destroy"); + //~ $('#info_panels div#'+name).remove(); + //~ $('#info_panels').append('
    '); + //~ var tabs = SunstoneCfg["info_panels"][name]; + //~ for (tab in tabs){ + //~ addInfoPanelTab(name,tab); + //~ } + //~ //at this point jquery tabs structure is ready, so we enable it + //~ $('div#'+name).tabs(); +//~ } +//~ +//~ function addInfoPanelTab(panel_name,tab_name){ + //~ var tab = SunstoneCfg["info_panels"][panel_name][tab_name]; + //~ if ( !$('div#'+panel_name+' ul').length ) { + //~ $('div#'+panel_name).prepend(''); + //~ } + //~ $('div#'+panel_name+' ul').append('
  • '+tab.title+'
  • '); + //~ $('div#'+panel_name).append('
    '+tab.content+'
    '); +//~ } +//~ + + +//Tries to refresh a tab content if it is somewhere in the DOM +function refreshInfoPanelTab(panel_name,tab_name){ + var tab = SunstoneCfg["info_panels"][panel_name][tab_name]; + $('div#'+panel_name+' div#'+tab_name).html(tab.content); +} + //Converts selects into buttons which show a of actions when clicked function initListButtons(){ diff --git a/src/sunstone/templates/index.html b/src/sunstone/templates/index.html index 79cc056998..e0358c84a2 100644 --- a/src/sunstone/templates/index.html +++ b/src/sunstone/templates/index.html @@ -70,32 +70,8 @@
    -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    +