diff --git a/ui/scripts/ui-custom/vpc.js b/ui/scripts/ui-custom/vpc.js index 851e5a827b2..11ec4f7fcde 100644 --- a/ui/scripts/ui-custom/vpc.js +++ b/ui/scripts/ui-custom/vpc.js @@ -26,16 +26,12 @@ var cidr = args.cidr; var context = args.context; var vmListView = args.vmListView; - var disabledActions = args.actionPreFilter ? args.actionPreFilter({ - context: context - }) : true; + var actionPreFilter = args.actionPreFilter; var actions = $.map( args.actions ? args.actions : {}, function(value, key) { return { id: key, - action: value, - isDisabled: $.isArray(disabledActions) && - $.inArray(key, disabledActions) != -1 + action: value }; } ); @@ -92,7 +88,6 @@ var $action = $('
').addClass('action'); var shortLabel = action.action.shortLabel; var label = action.action.label; - var isDisabled = action.isDisabled; $action.addClass(action.id); @@ -101,14 +96,14 @@ } else { $action.append($('').addClass('icon').html(' ')); } + $actions.append($action); $action.attr('title', label); - - if (isDisabled) $action.addClass('disabled'); + $action.data('vpc-tier-action-id', action.id); // Action event $action.click(function() { - if (isDisabled) { + if ($action.hasClass('disabled')) { return false; } @@ -132,6 +127,13 @@ // Append horizontal chart line $tier.append($('
').addClass('connect-line')); + // Handle action filter + filterActions({ + $actions: $actions, + actionPreFilter: actionPreFilter, + context: context + }); + return $tier; }, chart: function(args) { @@ -194,6 +196,29 @@ } }; + var filterActions = function(args) { + var $actions = args.$actions; + var actionPreFilter = args.actionPreFilter; + var context = args.context; + var disabledActions, allowedActions; + + disabledActions = actionPreFilter ? actionPreFilter({ + context: context + }) : []; + + // Visual appearance for disabled actions + $actions.find('.action').map(function(index, action) { + var $action = $(action); + var actionID = $action.data('vpc-tier-action-id'); + + if ($.inArray(actionID, disabledActions) > -1) { + $action.addClass('disabled'); + } else { + $action.removeClass('disabled'); + } + }); + }; + // Handles tier action, including UI effects var tierAction = function(args) { var $tier = args.$tier;