diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index da41b76c4ea..b3abeeeef74 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -9607,10 +9607,15 @@ div.panel.ui-dialog div.list-view div.fixed-header { top: -36px; background-position: 0px -2519px; border: 1px solid #ADADAD; + cursor: pointer; +} + +.vpc-chart li.tier.virtual-router.disabled, +.vpc-chart li.tier.virtual-router.disabled span { + cursor: default; } .vpc-chart li.tier.virtual-router span { - cursor: default; color: #586E82; font-size: 18px; /*+text-shadow:0px 1px 3px #FFFFFF;*/ diff --git a/ui/scripts/ui-custom/vpc.js b/ui/scripts/ui-custom/vpc.js index 60d542985b0..f6214b87954 100644 --- a/ui/scripts/ui-custom/vpc.js +++ b/ui/scripts/ui-custom/vpc.js @@ -297,7 +297,9 @@ return $config; }, - router: function() { + router: function(args) { + var $browser = args.$browser; + var detailView = args.detailView; var $router = $('
  • ').addClass('tier virtual-router'); var $title = $('').addClass('title').html('Virtual Router'); @@ -306,6 +308,17 @@ // Append horizontal chart line $router.append($('
    ').addClass('connect-line')); + $router.click(function() { + if ($router.hasClass('disabled')) return false; + + $browser.cloudBrowser('addPanel', { + title: 'VPC router details', + complete: function($panel) { + $panel.detailView(detailView); + } + }); + }); + return $router; }, tier: function(args) { @@ -468,60 +481,70 @@ var context = args.context; var tierDetailView = args.tierDetailView; var $tiers = $('
      ').addClass('tiers'); - var $router = elems.router(); + var $router; + + $router = elems.router({ + $browser:$browser, + detailView:$.extend(true, {}, args.routerDetailView(), { + context:context + }) + }); + + if (!isAdmin() && !isDomainAdmin()) $router.addClass('disabled'); + var $chart = $('
      ').addClass('vpc-chart'); var $title = $('
      ').addClass('vpc-title') - .append( - $('').html(vpcName) - ) - .append( - elems.vpcConfigureArea({ - context: context, - $browser: $browser, - $chart: $chart, - ipAddresses: $.extend(ipAddresses, {context: context}), - gateways: $.extend(gateways, {context: context}), - siteToSiteVPN: $.extend(siteToSiteVPN, {context: context}), - acl: $.extend(acl, {context: context}), - tierDetailView: tierDetailView - }) - ); + .append( + $('').html(vpcName) + ) + .append( + elems.vpcConfigureArea({ + context:context, + $browser:$browser, + $chart:$chart, + ipAddresses:$.extend(ipAddresses, {context:context}), + gateways:$.extend(gateways, {context:context}), + siteToSiteVPN:$.extend(siteToSiteVPN, {context:context}), + acl:$.extend(acl, {context:context}), + tierDetailView:tierDetailView + }) + ); - var showAddTierDialog = function() { + var showAddTierDialog = function () { if ($(this).find('.loading-overlay').size()) { return false; } addTierDialog({ - ipAddresses: ipAddresses, - $browser: $browser, - tierDetailView: tierDetailView, - $tiers: $tiers, - acl: acl, - context: context, - actions: actions, - vmListView: vmListView, - actionPreFilter: actionPreFilter + ipAddresses:ipAddresses, + $browser:$browser, + tierDetailView:tierDetailView, + $tiers:$tiers, + acl:acl, + context:context, + actions:actions, + vmListView:vmListView, + actionPreFilter:actionPreFilter }); return true; }; if (tiers != null && tiers.length > 0) { - $(tiers).map(function(index, tier) { + $(tiers).map(function (index, tier) { var $tier = elems.tier({ - ipAddresses: ipAddresses, - acl: acl, - $browser: $browser, - detailView: tierDetailView, - name: tier.name, - cidr: tier.cidr, - virtualMachines: tier.virtualMachines, - vmListView: vmListView, - actions: actions, - actionPreFilter: actionPreFilter, - context: $.extend(true, {}, context, { - networks: [tier] + ipAddresses:ipAddresses, + acl:acl, + $browser:$browser, + detailView:tierDetailView, + name:tier.name, + cidr:tier.cidr, + virtualMachines:tier.virtualMachines, + vmListView:vmListView, + actions:actions, + actionPreFilter:actionPreFilter, + context:$.extend(true, {}, context, { + networks:[tier] }) }); @@ -530,7 +553,7 @@ } - elems.tier({ isPlaceholder: true }).appendTo($tiers) + elems.tier({ isPlaceholder:true }).appendTo($tiers) .click(showAddTierDialog); $tiers.prepend($router); $chart.append($title, $tiers); @@ -799,6 +822,7 @@ var gateways = args.gateways; var acl = args.acl; var siteToSiteVPN = args.siteToSiteVPN; + var routerDetailView = args.routerDetailView; return function(args) { var context = args.context; @@ -849,6 +873,7 @@ gateways: gateways, acl: acl, tierDetailView: tierDetailView, + routerDetailView: routerDetailView, siteToSiteVPN: siteToSiteVPN, vmListView: vmListView, context: context, diff --git a/ui/scripts/vpc.js b/ui/scripts/vpc.js index dfa3f34d296..d25458b6c9c 100644 --- a/ui/scripts/vpc.js +++ b/ui/scripts/vpc.js @@ -248,6 +248,14 @@ }; cloudStack.vpc = { + routerDetailView: function() { + return { + title: 'VPC router details', + tabs: { + routerDetails: cloudStack.sections.network.sections.vpc.listView.detailView.tabs.router + } + }; + }, vmListView: { id: 'vpcTierInstances', listView: {