From 6e8a64d38a3194a7b00e7167f737d766e3f54a13 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 14 Dec 2010 14:02:27 -0800 Subject: [PATCH] Add Network Offering page. --- ui/index.jsp | 12 ++ ui/jsp/networkoffering.jsp | 174 +++++++++++++++++++ ui/scripts/cloud.core.init.js | 1 + ui/scripts/cloud.core.networkoffering.js | 205 +++++++++++++++++++++++ 4 files changed, 392 insertions(+) create mode 100644 ui/jsp/networkoffering.jsp create mode 100644 ui/scripts/cloud.core.networkoffering.js diff --git a/ui/index.jsp b/ui/index.jsp index effde5c41b2..86740774010 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -41,6 +41,7 @@ + @@ -846,6 +847,17 @@ + +
+
+
+
+
+ Network Offering +
+
+
+
diff --git a/ui/jsp/networkoffering.jsp b/ui/jsp/networkoffering.jsp new file mode 100644 index 00000000000..b057e5aba8a --- /dev/null +++ b/ui/jsp/networkoffering.jsp @@ -0,0 +1,174 @@ +<%@ page import="java.util.*" %> + +<%@ page import="com.cloud.utils.*" %> + +<% + Locale browserLocale = request.getLocale(); + CloudResourceBundle t = CloudResourceBundle.getBundle("resources/resource", browserLocale); +%> + + + +
+ +
+ Disk Offering
+ +

+ Network Offering +

+
+
+ +
+
+ <%=t.t("details")%>
+
+
+ +
+
+
+
(title)
+ +
+
+
+

+ Waiting …

+
+
+
+
+
+ <%=t.t("ID")%>:
+
+
+
+
+
+
+
+
+
+ <%=t.t("name")%>:
+
+
+
+
+ + +
+
+
+
+
+ <%=t.t("display.text")%>:
+
+
+
+
+ + +
+
+ +
+
+
+ Type:
+
+
+
+
+
+
+ +
+
+
+ Traffic Type:
+
+
+
+
+
+
+ +
+
+
+ Is Default:
+
+
+
+
+
+
+ +
+
+
+ Specify VLAN:
+
+
+
+
+
+
+ +
+
+ + +
+
+
+
+ + + + + diff --git a/ui/scripts/cloud.core.init.js b/ui/scripts/cloud.core.init.js index 7df402509af..79bf25b5213 100644 --- a/ui/scripts/cloud.core.init.js +++ b/ui/scripts/cloud.core.init.js @@ -118,6 +118,7 @@ $(document).ready(function() { bindAndListMidMenuItems($("#leftmenu_service_offering"), "listServiceOfferings", serviceOfferingGetSearchParams, "listserviceofferingsresponse", "serviceoffering", "jsp/serviceoffering.jsp", afterLoadServiceOfferingJSP, serviceOfferingToMidmenu, serviceOfferingToRightPanel, getMidmenuId, false); bindAndListMidMenuItems($("#leftmenu_disk_offering"), "listDiskOfferings", diskOfferingGetSearchParams, "listdiskofferingsresponse", "diskoffering", "jsp/diskoffering.jsp", afterLoadDiskOfferingJSP, diskOfferingToMidmenu, diskOfferingToRightPanel, getMidmenuId, false); + bindAndListMidMenuItems($("#leftmenu_network_offering"), "listNetworkOfferings", networkOfferingGetSearchParams, "listnetworkofferingsresponse", "networkoffering", "jsp/networkoffering.jsp", afterLoadNetworkOfferingJSP, networkOfferingToMidmenu, networkOfferingToRightPanel, getMidmenuId, false); bindAndListMidMenuItems($("#leftmenu_submenu_virtual_router"), "listRouters", routerGetSearchParams, "listroutersresponse", "router", "jsp/router.jsp", afterLoadRouterJSP, routerToMidmenu, routerToRightPanel, getMidmenuId, false); bindAndListMidMenuItems($("#leftmenu_submenu_systemvm"), "listSystemVms", systemVmGetSearchParams, "listsystemvmsresponse", "systemvm", "jsp/systemvm.jsp", afterLoadSystemVmJSP, systemvmToMidmenu, systemvmToRightPanel, getMidmenuId, false); diff --git a/ui/scripts/cloud.core.networkoffering.js b/ui/scripts/cloud.core.networkoffering.js new file mode 100644 index 00000000000..a34ec779d07 --- /dev/null +++ b/ui/scripts/cloud.core.networkoffering.js @@ -0,0 +1,205 @@ + /** + * Copyright (C) 2010 Cloud.com, Inc. All rights reserved. + * + * This software is licensed under the GNU General Public License v3 or later. + * + * It is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +function networkOfferingGetSearchParams() { + var moreCriteria = []; + + var $advancedSearchPopup = $("#advanced_search_popup"); + if (lastSearchType == "advanced_search" && $advancedSearchPopup.length > 0) { + var name = $advancedSearchPopup.find("#adv_search_name").val(); + if (name!=null && trim(name).length > 0) + moreCriteria.push("&name="+todb(name)); + + if ($advancedSearchPopup.find("#adv_search_domain_li").css("display") != "none") { + var domainId = $advancedSearchPopup.find("#adv_search_domain").val(); + if (domainId!=null && domainId.length > 0) + moreCriteria.push("&domainid="+domainId); + } + } + else { + var searchInput = $("#basic_search").find("#search_input").val(); + if (lastSearchType == "basic_search" && searchInput != null && searchInput.length > 0) { + moreCriteria.push("&keyword="+todb(searchInput)); + } + } + + return moreCriteria.join(""); +} + +function afterLoadNetworkOfferingJSP() { + +} + +function doEditNetworkOffering($actionLink, $detailsTab, $midmenuItem1) { + var $readonlyFields = $detailsTab.find("#name, #displaytext, #tags, #domain"); + var $editFields = $detailsTab.find("#name_edit, #displaytext_edit, #domain_edit"); + + $readonlyFields.hide(); + $editFields.show(); + $detailsTab.find("#cancel_button, #save_button").show(); + + $detailsTab.find("#cancel_button").unbind("click").bind("click", function(event){ + $editFields.hide(); + $readonlyFields.show(); + $("#save_button, #cancel_button").hide(); + return false; + }); + $detailsTab.find("#save_button").unbind("click").bind("click", function(event){ + doEditNetworkOffering2($actionLink, $detailsTab, $midmenuItem1, $readonlyFields, $editFields); + return false; + }); +} + +function doEditNetworkOffering2($actionLink, $detailsTab, $midmenuItem1, $readonlyFields, $editFields) { + var jsonObj = $midmenuItem1.data("jsonObj"); + var id = jsonObj.id; + + // validate values + var isValid = true; + isValid &= validateString("Name", $detailsTab.find("#name_edit"), $detailsTab.find("#name_edit_errormsg"), true); + isValid &= validateString("Display Text", $detailsTab.find("#displaytext_edit"), $detailsTab.find("#displaytext_edit_errormsg"), true); + if (!isValid) + return; + + var array1 = []; + var name = $detailsTab.find("#name_edit").val(); + array1.push("&name="+todb(name)); + + var displaytext = $detailsTab.find("#displaytext_edit").val(); + array1.push("&displayText="+todb(displaytext)); + + var tags = $detailsTab.find("#tags_edit").val(); + array1.push("&tags="+todb(tags)); + + var domainid = $detailsTab.find("#domain_edit").val(); + array1.push("&domainid="+todb(domainid)); + + $.ajax({ + data: createURL("command=updateNetworkOffering&id="+id+array1.join("")), + dataType: "json", + success: function(json) { + var jsonObj = json.updateNetworkOfferingresponse.NetworkOffering; + networkOfferingToMidmenu(jsonObj, $midmenuItem1); + networkOfferingToRightPanel($midmenuItem1); + + $editFields.hide(); + $readonlyFields.show(); + $("#save_button, #cancel_button").hide(); + } + }); +} + +function networkOfferingToMidmenu(jsonObj, $midmenuItem1) { + $midmenuItem1.attr("id", getMidmenuId(jsonObj)); + $midmenuItem1.data("jsonObj", jsonObj); + + /* + var $iconContainer = $midmenuItem1.find("#icon_container").show(); + $iconContainer.find("#icon").attr("src", "images/midmenuicon_system_networkOffering.png"); + */ + + $midmenuItem1.find("#first_row").text(fromdb(jsonObj.name).substring(0,25)); + $midmenuItem1.find("#second_row").text(fromdb(jsonObj.type).substring(0,25)); +} + +function networkOfferingToRightPanel($midmenuItem1) { + copyActionInfoFromMidMenuToRightPanel($midmenuItem1); + $("#right_panel_content").data("$midmenuItem1", $midmenuItem1); + networkOfferingJsonToDetailsTab(); +} + +function networkOfferingJsonToDetailsTab() { + var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1"); + if($midmenuItem1 == null) + return; + + var jsonObj = $midmenuItem1.data("jsonObj"); + if(jsonObj == null) + return; + + var $thisTab = $("#right_panel_content #tab_content_details"); + $thisTab.find("#tab_container").hide(); + $thisTab.find("#tab_spinning_wheel").show(); + + var id = jsonObj.id; + + var jsonObj; + $.ajax({ + data: createURL("command=listNetworkOfferings&id="+id), + dataType: "json", + async: false, + success: function(json) { + var items = json.listNetworkOfferingsresponse.NetworkOffering; + if(items != null && items.length > 0) { + jsonObj = items[0]; + $midmenuItem1.data("jsonObj", jsonObj); + } + } + }); + + $thisTab.find("#id").text(fromdb(jsonObj.id)); + + $thisTab.find("#grid_header_title").text(fromdb(jsonObj.name)); + $thisTab.find("#name").text(fromdb(jsonObj.name)); + //$thisTab.find("#name_edit").val(fromdb(jsonObj.name)); + + $thisTab.find("#displaytext").text(fromdb(jsonObj.displaytext)); + //$thisTab.find("#displaytext_edit").val(fromdb(jsonObj.displaytext)); + + $thisTab.find("#type").text(fromdb(jsonObj.type)); + $thisTab.find("#traffictype").text(fromdb(jsonObj.traffictype)); + + setBooleanReadField(jsonObj.isdefault, $thisTab.find("#isdefault")); + setBooleanReadField(jsonObj.specifyvlan, $thisTab.find("#specifyvlan")); + + + //actions *** + var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu"); + $actionMenu.find("#action_list").empty(); + buildActionLinkForTab("Edit Network Offering", networkOfferingActionMap, $actionMenu, $midmenuItem1, $thisTab); + + $thisTab.find("#tab_spinning_wheel").hide(); + $thisTab.find("#tab_container").show(); +} + +function networkOfferingClearRightPanel() { + networkOfferingClearDetailsTab(); +} + +function networkOfferingClearDetailsTab() { + var $thisTab = $("#right_panel_content").find("#tab_content_details"); + $thisTab.find("#id").text(""); + $thisTab.find("#grid_header_title").text(""); + $thisTab.find("#name").text(""); + $thisTab.find("#name_edit").val(""); + $thisTab.find("#displaytext").text(""); + $thisTab.find("#displaytext_edit").val(""); + $thisTab.find("#disksize").text(""); + $thisTab.find("#tags").text(""); + $thisTab.find("#domain").text(""); + + var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu"); + $actionMenu.find("#action_list").empty(); + $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); +} + +var networkOfferingActionMap = { + "Edit Network Offering": { + dialogBeforeActionFn: doEditNetworkOffering + } +} \ No newline at end of file