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('&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;
             }
                 
@@ -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;

Reply via email to