From 5475436e033bd04fee5f9616493a4f5452979444 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 3 Jul 2012 14:00:10 -0700 Subject: [PATCH] cloudstack 3.0 UI: delete site-to-site VPN action in detailView - remove detail view and corresponding table row after remove action succeeds. --- ui/scripts/network.js | 55 ++++++++++++++++++----------------- ui/scripts/sharedFunctions.js | 19 +++++++++++- 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 83e22741f23..af61a18b201 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -3380,9 +3380,15 @@ else { clearInterval(createvpnconnectionIntervalID); - if (result.jobstatus == 1) { - //var obj = result.jobresult.vpnconnection; - $.removeTableRowInAction(); + if (result.jobstatus == 1) { + //remove loading image on table row + var $listviewTable = $("div.list-view div.data-table table.body tbody"); + var $tr1 = $listviewTable.find("tr.loading").removeClass("loading"); + $tr1.find("td div.loading").removeClass("loading"); + + var item = result.jobresult.vpnconnection; + $tr1.find("td.publicip span").text(item.publicip); + cloudStack.dialog.notice({ message: "site-to-site VPN is created successfully." }); } else if (result.jobstatus == 2) { @@ -3469,8 +3475,7 @@ } } }, - actions: { - //??? + actions: { remove: { label: 'delete site-to-site VPN', messages: { @@ -3503,8 +3508,6 @@ else { clearInterval(deleteVpnConnectionIntervalID); if (result.jobstatus == 1) { - //var updatedObj = result.jobresult.vpnconnection; - $.ajax({ url: createURL("deleteVpnGateway"), dataType: "json", @@ -3547,17 +3550,19 @@ else { clearInterval(deleteVpnCustomerGatewayIntervalID); if (result.jobstatus == 1) { - //debugger; - args.complete({ data: {} }); //show notification + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: "site-to-site VPN has been deleted." }); + $.removeDetailViewAndTableRow(); } else if (result.jobstatus == 2) { - alert("deleteVpnCustomerGateway failed. Error: " + _s(result.jobresult.errortext)); + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); } } }, error: function(XMLHttpResponse) { - var errorMsg = parseXMLHttpResponse(XMLHttpResponse); - alert("deleteVpnCustomerGateway failed. Error: " + errorMsg); + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); } }); }, 3000); @@ -3565,13 +3570,14 @@ }); } else if (result.jobstatus == 2) { - alert("deleteVpnGateway failed. Error: " + _s(result.jobresult.errortext)); + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); } } }, error: function(XMLHttpResponse) { - var errorMsg = parseXMLHttpResponse(XMLHttpResponse); - alert("deleteVpnGateway failed. Error: " + errorMsg); + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); } }); }, 3000); @@ -3579,26 +3585,21 @@ }); } else if (result.jobstatus == 2) { - alert("deleteVpnConnection failed. Error: " + _s(result.jobresult.errortext)); + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); } } }, error: function(XMLHttpResponse) { - var errorMsg = parseXMLHttpResponse(XMLHttpResponse); - alert("deleteVpnConnection failed. Error: " + errorMsg); + $("div.detail-view div.loading-overlay").remove(); + cloudStack.dialog.notice({ message: parseXMLHttpResponse(XMLHttpResponse) }); } }); }, 3000); } - }); - - - }, - notification: { - poll: pollAsyncJobResult - } - } - //??? + }); + } + } } } } diff --git a/ui/scripts/sharedFunctions.js b/ui/scripts/sharedFunctions.js index 8fe7d6bde06..7911228e8ff 100644 --- a/ui/scripts/sharedFunctions.js +++ b/ui/scripts/sharedFunctions.js @@ -277,7 +277,7 @@ cloudStack.actionFilter = { } } -$.removeTableRowInAction = function() { //remove table row that has loading image on top of it (i.e. table row that is in action) +$.removeTableRowInAction = function() { //remove table row that has loading image on top of it (i.e. table row that is in action) (e.g. after add action in listView succeeds) var $listviewTable = $("div.list-view div.data-table table.body tbody"); var $tr1 = $listviewTable.find("tr.loading").removeClass("loading"); $tr1.find("td div.loading").removeClass("loading"); @@ -286,6 +286,23 @@ $.removeTableRowInAction = function() { //remove table row that has loading imag $listviewTable.append($("").addClass("empty even").append($("").text("No data to show"))); } +$.removeDetailViewAndTableRow = function() { //remove detail view and corresponding table row (e.g. after remove action in detailView succeeds) + var $detailView = $("div.detail-view"); + var $panel = $detailView.closest('.panel'); + var $browser = $('#browser .container'); + if ($detailView.is(':visible')) { + $browser.cloudBrowser('selectPanel', { + panel: $panel.prev() + }); + } + if($detailView.data("list-view-row") != null) { + $detailView.data("list-view-row").remove(); + var $listviewTable = $("div.list-view div.data-table table.body tbody"); + if($listviewTable.find("tr").length == 0) + $listviewTable.append($("").addClass("empty even").append($("").text("No data to show"))); + } +} + var roleTypeUser = "0"; var roleTypeAdmin = "1"; var roleTypeDomainAdmin = "2";