From 0a14f09fd79ad64449e34b5f40d6b05d02dcc3d6 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Thu, 28 Jun 2012 14:50:13 -0700 Subject: [PATCH] VPC UI: Refactor tier action filter handling For reusability, move action filter handling for VPC tier actions to a separate function. This allows for easier refreshing of actions after a tier's state has changed. --- ui/scripts/ui-custom/vpc.js | 45 ++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 10 deletions(-) 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;