From c21fc721c70ca433c1acb3eed13e30f8b7827ffb Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Fri, 17 Dec 2010 15:33:47 -0800 Subject: [PATCH] New Advanced Search dialog - clicking advanced will open the dialog. Clicking advanced again will close the dialog. --- ui/scripts/cloud.core.init.js | 250 ++++++++++++++++++---------------- 1 file changed, 129 insertions(+), 121 deletions(-) diff --git a/ui/scripts/cloud.core.init.js b/ui/scripts/cloud.core.init.js index efa0c5c4b55..d08c10d4fc8 100644 --- a/ui/scripts/cloud.core.init.js +++ b/ui/scripts/cloud.core.init.js @@ -243,130 +243,138 @@ $(document).ready(function() { //advanced search $("#advanced_search_icon").unbind("click").bind("click", function(event) { - var $advancedSearch = $("#advanced_search_template").clone().attr("id", "advanced_search_popup"); - - $advancedSearch.unbind("click").bind("click", function(event) { - var $target = $(event.target); - var targetId = $target.attr("id"); - if(targetId == "advanced_search_close") { - $(this).hide(); - return false; - } - else if(targetId == "adv_search_button") { - var params = $("#middle_menu_pagination").data("params"); - if(params == null) - return; - lastSearchType = "advanced_search"; - $("#basic_search").find("#search_input").val(""); - listMidMenuItems2(params.commandString, params.getSearchParamsFn, params.jsonResponse1, params.jsonResponse2, params.toMidmenuFn, params.toRightPanelFn, params.getMidmenuIdFn, params.isMultipleSelectionInMidMenu, 1); - $(this).hide(); - return false; - } - return true; - }); - - $advancedSearch.unbind("keypress").bind("keypress", function(event) { - event.stopPropagation(); - if(event.keyCode == keycode_Enter) { - event.preventDefault(); - $(this).find("#adv_search_button").click(); - } - }); - - if(isAdmin() || isDomainAdmin()) - $advancedSearch.find("#adv_search_domain_li, #adv_search_account_li, #adv_search_pod_li").show(); - else - $advancedSearch.find("#adv_search_domain_li, #adv_search_account_li, #adv_search_pod_li").hide(); - - var zoneSelect = $advancedSearch.find("#adv_search_zone"); - if(zoneSelect.length>0) { //if zone dropdown is found on Advanced Search dialog - $.ajax({ - data: createURL("command=listZones&available=true"), - dataType: "json", - success: function(json) { - var zones = json.listzonesresponse.zone; - zoneSelect.empty(); - zoneSelect.append(""); - if (zones != null && zones.length > 0) { - for (var i = 0; i < zones.length; i++) { - zoneSelect.append(""); - } - } - } - }); - - var podSelect = $advancedSearch.find("#adv_search_pod").empty(); - var podLabel = $advancedSearch.find("#adv_search_pod_label"); - if(podSelect.length>0 && $advancedSearch.find("#adv_search_pod_li").css("display")!="none") { - zoneSelect.bind("change", function(event) { - var zoneId = $(this).val(); - if (zoneId == null || zoneId.length == 0) { - podLabel.css("color", "gray"); - podSelect.attr("disabled", "disabled"); - podSelect.empty(); - } else { - podLabel.css("color", "black"); - podSelect.removeAttr("disabled"); - $.ajax({ - data: createURL("command=listPods&zoneId="+zoneId+""), - dataType: "json", - async: false, - success: function(json) { - var pods = json.listpodsresponse.pod; - podSelect.empty(); - if (pods != null && pods.length > 0) { - for (var i = 0; i < pods.length; i++) { - podSelect.append(""); - } - } - } - }); - } - return false; - }); - - zoneSelect.change(); - } + if($(this).hasClass("on")) { + $(this).removeClass("on"); + $("#advanced_search_container").empty(); } - - var domainSelect = $advancedSearch.find("#adv_search_domain"); - if(domainSelect.length>0 && $advancedSearch.find("#adv_search_domain_li").css("display")!="none") { - var domainSelect = domainSelect.empty(); - $.ajax({ - data: createURL("command=listDomains&available=true"), - dataType: "json", - success: function(json) { - var domains = json.listdomainsresponse.domain; - if (domains != null && domains.length > 0) { - for (var i = 0; i < domains.length; i++) { - domainSelect.append(""); - } - } - } - }); - } + else { + $(this).addClass("on"); + + var $advancedSearch = $("#advanced_search_template").clone().attr("id", "advanced_search_popup"); + + $advancedSearch.unbind("click").bind("click", function(event) { + var $target = $(event.target); + var targetId = $target.attr("id"); + if(targetId == "advanced_search_close") { + $(this).hide(); + return false; + } + else if(targetId == "adv_search_button") { + var params = $("#middle_menu_pagination").data("params"); + if(params == null) + return; + lastSearchType = "advanced_search"; + //$("#basic_search").find("#search_input").val(""); + listMidMenuItems2(params.commandString, params.getSearchParamsFn, params.jsonResponse1, params.jsonResponse2, params.toMidmenuFn, params.toRightPanelFn, params.getMidmenuIdFn, params.isMultipleSelectionInMidMenu, 1); + $(this).hide(); + return false; + } + return true; + }); - var vmSelect = $advancedSearch.find("#adv_search_vm"); - if(vmSelect.length>0) { - vmSelect.empty(); - vmSelect.append(""); - $.ajax({ - data: createURL("command=listVirtualMachines"), - dataType: "json", - success: function(json) { - var items = json.listvirtualmachinesresponse.virtualmachine; - if (items != null && items.length > 0) { - for (var i = 0; i < items.length; i++) { - vmSelect.append(""); + $advancedSearch.unbind("keypress").bind("keypress", function(event) { + event.stopPropagation(); + if(event.keyCode == keycode_Enter) { + event.preventDefault(); + $(this).find("#adv_search_button").click(); + } + }); + + if(isAdmin() || isDomainAdmin()) + $advancedSearch.find("#adv_search_domain_li, #adv_search_account_li, #adv_search_pod_li").show(); + else + $advancedSearch.find("#adv_search_domain_li, #adv_search_account_li, #adv_search_pod_li").hide(); + + var zoneSelect = $advancedSearch.find("#adv_search_zone"); + if(zoneSelect.length>0) { //if zone dropdown is found on Advanced Search dialog + $.ajax({ + data: createURL("command=listZones&available=true"), + dataType: "json", + success: function(json) { + var zones = json.listzonesresponse.zone; + zoneSelect.empty(); + zoneSelect.append(""); + if (zones != null && zones.length > 0) { + for (var i = 0; i < zones.length; i++) { + zoneSelect.append(""); + } } - } - } - }); - } - - $advancedSearch.find("#adv_search_startdate, #adv_search_enddate").datepicker({dateFormat: 'yy-mm-dd'}); - - $("#advanced_search_container").empty().append($advancedSearch.show()); + } + }); + + var podSelect = $advancedSearch.find("#adv_search_pod").empty(); + var podLabel = $advancedSearch.find("#adv_search_pod_label"); + if(podSelect.length>0 && $advancedSearch.find("#adv_search_pod_li").css("display")!="none") { + zoneSelect.bind("change", function(event) { + var zoneId = $(this).val(); + if (zoneId == null || zoneId.length == 0) { + podLabel.css("color", "gray"); + podSelect.attr("disabled", "disabled"); + podSelect.empty(); + } else { + podLabel.css("color", "black"); + podSelect.removeAttr("disabled"); + $.ajax({ + data: createURL("command=listPods&zoneId="+zoneId+""), + dataType: "json", + async: false, + success: function(json) { + var pods = json.listpodsresponse.pod; + podSelect.empty(); + if (pods != null && pods.length > 0) { + for (var i = 0; i < pods.length; i++) { + podSelect.append(""); + } + } + } + }); + } + return false; + }); + + zoneSelect.change(); + } + } + + var domainSelect = $advancedSearch.find("#adv_search_domain"); + if(domainSelect.length>0 && $advancedSearch.find("#adv_search_domain_li").css("display")!="none") { + var domainSelect = domainSelect.empty(); + $.ajax({ + data: createURL("command=listDomains&available=true"), + dataType: "json", + success: function(json) { + var domains = json.listdomainsresponse.domain; + if (domains != null && domains.length > 0) { + for (var i = 0; i < domains.length; i++) { + domainSelect.append(""); + } + } + } + }); + } + + var vmSelect = $advancedSearch.find("#adv_search_vm"); + if(vmSelect.length>0) { + vmSelect.empty(); + vmSelect.append(""); + $.ajax({ + data: createURL("command=listVirtualMachines"), + dataType: "json", + success: function(json) { + var items = json.listvirtualmachinesresponse.virtualmachine; + if (items != null && items.length > 0) { + for (var i = 0; i < items.length; i++) { + vmSelect.append(""); + } + } + } + }); + } + + $advancedSearch.find("#adv_search_startdate, #adv_search_enddate").datepicker({dateFormat: 'yy-mm-dd'}); + + $("#advanced_search_container").empty().append($advancedSearch.show()); + } return false; });