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.
This commit is contained in:
Brian Federle 2012-06-28 14:50:13 -07:00
parent 252e599a6c
commit 0a14f09fd7
1 changed files with 35 additions and 10 deletions

View File

@ -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 = $('<div>').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($('<span>').addClass('icon').html('&nbsp;'));
}
$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($('<div>').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;