Updated Branches: refs/heads/master 9bbbc4e35 -> 28e49e888
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. Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/28e49e88 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/28e49e88 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/28e49e88 Branch: refs/heads/master Commit: 28e49e88804865f56d6d9d1a1b8767f77b8676e8 Parents: 9bbbc4e Author: Brian Federle <[email protected]> Authored: Thu Jun 28 14:50:13 2012 -0700 Committer: Brian Federle <[email protected]> Committed: Thu Jun 28 15:22:41 2012 -0700 ---------------------------------------------------------------------- ui/scripts/ui-custom/vpc.js | 45 +++++++++++++++++++++++++++++-------- 1 files changed, 35 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/28e49e88/ui/scripts/ui-custom/vpc.js ---------------------------------------------------------------------- diff --git a/ui/scripts/ui-custom/vpc.js b/ui/scripts/ui-custom/vpc.js index 0ba70e5..6db1f61 100644 --- a/ui/scripts/ui-custom/vpc.js +++ b/ui/scripts/ui-custom/vpc.js @@ -32,16 +32,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 }; } ); @@ -98,7 +94,6 @@ var $action = $('<div>').addClass('action'); var shortLabel = action.action.shortLabel; var label = action.action.label; - var isDisabled = action.isDisabled; $action.addClass(action.id); @@ -107,14 +102,14 @@ } else { $action.append($('<span>').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; } @@ -138,6 +133,13 @@ // Append horizontal chart line $tier.append($('<div>').addClass('connect-line')); + // Handle action filter + filterActions({ + $actions: $actions, + actionPreFilter: actionPreFilter, + context: context + }); + return $tier; }, chart: function(args) { @@ -200,6 +202,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;
