From cd3e690f91b8220658d233e7cfa0d59465eb58d2 Mon Sep 17 00:00:00 2001 From: Tino Vazquez Date: Thu, 6 Feb 2014 11:30:14 +0100 Subject: [PATCH] Bug #2682: fill in already present clustes automatically --- src/sunstone/public/js/plugins/groups-tab.js | 108 +++++++++++++++---- 1 file changed, 89 insertions(+), 19 deletions(-) diff --git a/src/sunstone/public/js/plugins/groups-tab.js b/src/sunstone/public/js/plugins/groups-tab.js index 76225aa754..35359412b3 100644 --- a/src/sunstone/public/js/plugins/groups-tab.js +++ b/src/sunstone/public/js/plugins/groups-tab.js @@ -826,7 +826,7 @@ function updateGroupInfo(request,group){ $("#add_rp_button", $("#group_info_panel")).click(function(){ - setup_add_rp_dialog(info.ID); + setup_add_rp_dialog(info); $('#add_rp_dialog',dialogs_context).addClass("reveal-modal large max-height"); $('#add_rp_dialog',dialogs_context).reveal(); @@ -835,7 +835,7 @@ function updateGroupInfo(request,group){ } -function setup_add_rp_dialog(group_id){ +function setup_add_rp_dialog(group){ dialogs_context.append('
'); var dialog = $('#add_rp_dialog',dialogs_context); @@ -863,6 +863,7 @@ function setup_add_rp_dialog(group_id){
\
\ \ + \ \
\ \ @@ -874,6 +875,15 @@ function setup_add_rp_dialog(group_id){ $.each(selected_group_clusters, function(zone_id, zone_clusters) { var str_zone_tab_id = 'zone' + zone_id + "_add_rp"; + providers_array=group.RESOURCE_PROVIDER + + if (!$.isArray(providers_array)) + { + var tmp_array = new Array(); + tmp_array[0] = providers_array; + providers_array = tmp_array; + } + var resource_selection = $("input[name='"+str_zone_tab_id+"']:checked", dialog).val(); switch (resource_selection){ case "all": @@ -883,21 +893,46 @@ function setup_add_rp_dialog(group_id){ "cluster_id" : 10 } - Sunstone.runAction("Group.add_provider_action", - group_id, - extra_param); + add_it = true; + + $.each(providers_array, function(index, provider){ + if (provider.ZONE_ID==zone_id && provider.CLUSTER_ID == key) + { + add_it = false; + } + }); + + if (add_it) + { + Sunstone.runAction("Group.add_provider_action", + group.ID, + extra_param); + } break; case "cluster": $.each(selected_group_clusters[zone_id], function(key, value) { - extra_param = { + extra_param = + { "zone_id" : zone_id, "cluster_id" : key } - Sunstone.runAction("Group.add_provider_action", - group_id, + add_it = true; + + $.each(providers_array, function(index, provider){ + if (provider.ZONE_ID==zone_id && provider.CLUSTER_ID == key) + { + add_it = false; + } + }); + + if (add_it) + { + Sunstone.runAction("Group.add_provider_action", + group.ID, extra_param); + } }); break; @@ -911,24 +946,32 @@ function setup_add_rp_dialog(group_id){ }); + $("#add_rp_reset_button", dialog).die(); + $("#add_rp_reset_button", dialog).live("click", function(){ + $('#add_rp_dialog',dialog).remove(); + setup_add_rp_dialog(group); + $('#add_rp_dialog').addClass("reveal-modal large max-height"); + $('#add_rp_dialog').reveal(); + }); + $('#add_rp_close',dialog).die(); $('#add_rp_close',dialog).live( "click", function() { - dialog.trigger('reveal:close'); - dialog.remove(); + dialog.trigger('reveal:close'); + dialog.remove(); }); OpenNebula.Zone.list({ timeout: true, success: function (request, obj_list){ $.each(obj_list,function(){ - add_resource_tab(this.ZONE.ID, this.ZONE.NAME, dialog, "add_rp"); + add_resource_tab(this.ZONE.ID, this.ZONE.NAME, dialog, "add_rp", group); }); }, error: onError }); } -function setup_group_resource_tab_content(zone_id, zone_section, str_zone_tab_id, str_datatable_id, id_suffix) { +function setup_group_resource_tab_content(zone_id, zone_section, str_zone_tab_id, str_datatable_id, id_suffix, group) { // Show the clusters dataTable when the radio button is selected $("input[name='"+str_zone_tab_id+"']", zone_section).change(function(){ if ($("input[name='"+str_zone_tab_id+"']:checked", zone_section).val() == "cluster") { @@ -959,7 +1002,7 @@ function setup_group_resource_tab_content(zone_id, zone_section, str_zone_tab_id }); // Retrieve the clusters to fill the datatable - update_datatable_group_clusters(dataTable_group_clusters, zone_id); + update_datatable_group_clusters(dataTable_group_clusters, zone_id, group); $('#'+str_zone_tab_id+'_search', zone_section).keyup(function(){ dataTable_group_clusters.fnFilter( $(this).val() ); @@ -1027,7 +1070,7 @@ function setup_group_resource_tab_content(zone_id, zone_section, str_zone_tab_id setupTips(zone_section); } -function generate_group_resource_tab_content(str_zone_tab_id, str_datatable_id, zone_id){ +function generate_group_resource_tab_content(str_zone_tab_id, str_datatable_id, zone_id, group){ var html = '
\
\ @@ -1079,14 +1122,14 @@ function generate_group_resource_tab_content(str_zone_tab_id, str_datatable_id, $("#refresh_group_clusters_table_button_class"+str_zone_tab_id).die(); $("#refresh_group_clusters_table_button_class"+str_zone_tab_id).live('click', function(){ - update_datatable_group_clusters($('table[id='+str_datatable_id+']').dataTable(), zone_id); + update_datatable_group_clusters($('table[id='+str_datatable_id+']').dataTable(), zone_id, group); }); return html; } // TODO: Refactor? same function in templates-tab.js -function update_datatable_group_clusters(datatable, zone_id) { +function update_datatable_group_clusters(datatable, zone_id, group) { OpenNebula.Cluster.list_in_zone({ data:{zone_id:zone_id}, @@ -1100,6 +1143,33 @@ function update_datatable_group_clusters(datatable, zone_id) { }); updateView(obj_list_array, datatable); + + if (group && group.RESOURCE_PROVIDER) + { + var rows = datatable.fnGetNodes(); + providers_array=group.RESOURCE_PROVIDER + + if (!$.isArray(providers_array)) + { + var tmp_array = new Array(); + tmp_array[0] = providers_array; + providers_array = tmp_array; + } + + $.each(providers_array, function(index, provider){ + if (provider.ZONE_ID==zone_id) + for(var j=0;j'+ - generate_group_resource_tab_content(str_zone_tab_id, str_datatable_id, zone_id) + + generate_group_resource_tab_content(str_zone_tab_id, str_datatable_id, zone_id, group) + '' $(html_tab_content).appendTo($("ul#group_zones_tabs_content", dialog)); @@ -1134,7 +1204,7 @@ var add_resource_tab = function(zone_id, zone_name, dialog, id_suffix) { $(document).foundationTabs("set_tab", a); var zone_section = $('li#' +str_zone_tab_id+'Tab', dialog); - setup_group_resource_tab_content(zone_id, zone_section, str_zone_tab_id, str_datatable_id, id_suffix); + setup_group_resource_tab_content(zone_id, zone_section, str_zone_tab_id, str_datatable_id, id_suffix, group); }; function disableAdminUser(dialog){