You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gearpump.apache.org by hu...@apache.org on 2016/04/26 11:42:40 UTC

[30/49] incubator-gearpump git commit: GEARPUMP-11, fix code style

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/dashboard.js
----------------------------------------------------------------------
diff --git a/services/dashboard/dashboard.js b/services/dashboard/dashboard.js
index 90f3609..37af2bf 100644
--- a/services/dashboard/dashboard.js
+++ b/services/dashboard/dashboard.js
@@ -3,10 +3,10 @@
  * See accompanying LICENSE file.
  */
 
-(function() {
+(function () {
 
   // rootPath of this site, it has a tailing slash /
-  var rootPath = function() {
+  var rootPath = function () {
     var root = location.origin + location.pathname;
     return root.substring(0, root.lastIndexOf("/") + 1);
   }();
@@ -25,102 +25,102 @@
     'io.gearpump.models'
   ])
 
-  // configure routes
-  .config(['$stateProvider', '$urlRouterProvider',
-    function($stateProvider, $urlRouterProvider) {
+    // configure routes
+    .config(['$stateProvider', '$urlRouterProvider',
+      function ($stateProvider, $urlRouterProvider) {
+        'use strict';
+
+        $urlRouterProvider
+          .when('', '/')
+          .when('/', '/cluster')
+          .when('/cluster', '/cluster/master');
+
+        $stateProvider
+          .state('cluster', {
+            abstract: true, // todo: we have a sidebar for cluster only
+            url: '/cluster',
+            templateUrl: 'views/cluster/overview.html'
+          });
+        // Please check every controller for corresponding state definition
+      }])
+
+    // configure loading bar effect
+    .config(['cfpLoadingBarProvider', function (cfpLoadingBarProvider) {
       'use strict';
 
-      $urlRouterProvider
-        .when('', '/')
-        .when('/', '/cluster')
-        .when('/cluster', '/cluster/master');
-
-      $stateProvider
-        .state('cluster', {
-          abstract: true, // todo: we have a sidebar for cluster only
-          url: '/cluster',
-          templateUrl: 'views/cluster/overview.html'
-        });
-      // Please check every controller for corresponding state definition
+      cfpLoadingBarProvider.includeSpinner = false;
+      cfpLoadingBarProvider.latencyThreshold = 1000;
     }])
 
-  // configure loading bar effect
-  .config(['cfpLoadingBarProvider', function(cfpLoadingBarProvider) {
-    'use strict';
-
-    cfpLoadingBarProvider.includeSpinner = false;
-    cfpLoadingBarProvider.latencyThreshold = 1000;
-  }])
-
-  // configure angular-strap
-  .config(['$tooltipProvider', function($tooltipProvider) {
-    'use strict';
-
-    angular.extend($tooltipProvider.defaults, {
-      html: true
-    });
-  }])
-
-  // configure dashing
-  .config(['dashing.i18n', function(i18n) {
-    'use strict';
-
-    i18n.confirmationYesButtonText = 'OK';
-    i18n.confirmationNoButtonText = 'Cancel';
-  }])
-
-  // disable logging for production
-  .config(['$compileProvider', function($compileProvider) {
-    'use strict';
-
-    $compileProvider.debugInfoEnabled(false);
-  }])
-
-  // constants
-  .constant('conf', {
-    restapiProtocol: 'v1.0',
-    restapiRoot: rootPath,
-    restapiQueryInterval: 3 * 1000, // in milliseconds
-    restapiQueryTimeout: 30 * 1000, // in milliseconds
-    restapiTaskLevelMetricsQueryLimit: 100,
-    loginUrl: rootPath + 'login'
-  })
-
-  /* add a retry delay for angular-ui-router, when resolving a data is failed */
-  .run(['$rootScope', '$state', 'conf', function($rootScope, $state, conf) {
-    'use strict';
-
-    $rootScope.$on('$stateChangeError', function(event, toState) {
-      event.preventDefault();
-      _.delay($state.go, conf.restapiQueryTimeout, toState);
-    });
-  }])
-
-  /* enable a health check service */
-  .run(['$modal', 'HealthCheckService', 'conf', function($modal, HealthCheckService, conf) {
-    'use strict';
-
-    var dialog = $modal({
-      templateUrl: 'views/service_unreachable_notice.html',
-      backdrop: 'static',
-      show: false
-    });
-
-    var showDialogFn = function() {
-      dialog.$promise.then(dialog.show);
-    };
-
-    var hideDialogFn = function() {
-      // simply refresh the page, to make sure page status is fresh
-      location.reload();
-    };
-
-    HealthCheckService.config(
-      conf.restapiRoot + 'version',
-      conf.restapiQueryInterval,
-      showDialogFn,
-      hideDialogFn
-    );
-    HealthCheckService.checkForever();
-  }]);
+    // configure angular-strap
+    .config(['$tooltipProvider', function ($tooltipProvider) {
+      'use strict';
+
+      angular.extend($tooltipProvider.defaults, {
+        html: true
+      });
+    }])
+
+    // configure dashing
+    .config(['dashing.i18n', function (i18n) {
+      'use strict';
+
+      i18n.confirmationYesButtonText = 'OK';
+      i18n.confirmationNoButtonText = 'Cancel';
+    }])
+
+    // disable logging for production
+    .config(['$compileProvider', function ($compileProvider) {
+      'use strict';
+
+      $compileProvider.debugInfoEnabled(false);
+    }])
+
+    // constants
+    .constant('conf', {
+      restapiProtocol: 'v1.0',
+      restapiRoot: rootPath,
+      restapiQueryInterval: 3 * 1000, // in milliseconds
+      restapiQueryTimeout: 30 * 1000, // in milliseconds
+      restapiTaskLevelMetricsQueryLimit: 100,
+      loginUrl: rootPath + 'login'
+    })
+
+    /* add a retry delay for angular-ui-router, when resolving a data is failed */
+    .run(['$rootScope', '$state', 'conf', function ($rootScope, $state, conf) {
+      'use strict';
+
+      $rootScope.$on('$stateChangeError', function (event, toState) {
+        event.preventDefault();
+        _.delay($state.go, conf.restapiQueryTimeout, toState);
+      });
+    }])
+
+    /* enable a health check service */
+    .run(['$modal', 'HealthCheckService', 'conf', function ($modal, HealthCheckService, conf) {
+      'use strict';
+
+      var dialog = $modal({
+        templateUrl: 'views/service_unreachable_notice.html',
+        backdrop: 'static',
+        show: false
+      });
+
+      var showDialogFn = function () {
+        dialog.$promise.then(dialog.show);
+      };
+
+      var hideDialogFn = function () {
+        // simply refresh the page, to make sure page status is fresh
+        location.reload();
+      };
+
+      HealthCheckService.config(
+        conf.restapiRoot + 'version',
+        conf.restapiQueryInterval,
+        showDialogFn,
+        hideDialogFn
+      );
+      HealthCheckService.checkForever();
+    }]);
 })();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/index.html
----------------------------------------------------------------------
diff --git a/services/dashboard/index.html b/services/dashboard/index.html
index 26511ec..a312338 100644
--- a/services/dashboard/index.html
+++ b/services/dashboard/index.html
@@ -4,7 +4,8 @@
   <!-- Standard Meta -->
   <meta charset="utf-8"/>
   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
-  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/>
+  <meta name="viewport"
+        content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/>
 
   <!-- Site Properties -->
   <title>Dashboard</title>

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/login/login.html
----------------------------------------------------------------------
diff --git a/services/dashboard/login/login.html b/services/dashboard/login/login.html
index d80984d..189ad04 100644
--- a/services/dashboard/login/login.html
+++ b/services/dashboard/login/login.html
@@ -5,7 +5,8 @@
   <!-- Standard Meta -->
   <meta charset="utf-8"/>
   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
-  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/>
+  <meta name="viewport"
+        content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/>
 
   <title>Login</title>
 
@@ -83,30 +84,34 @@
   <title>Login</title>
 </head>
 
-<body  style="background-color: #555;">
+<body style="background-color: #555;">
 
 <h1 class="icon"><span class="glyphicon glyphicon-th" aria-hidden="true"/></h1>
+
 <h1 class="text-center welcome-message">Sign in to Gearpump</h1>
 
-<a href="../login" id = "loginUrl"></a>
-<a href="../logout" id = "logoutUrl"></a>
-<a href="../" id = "index"></a>
+<a href="../login" id="loginUrl"></a>
+<a href="../logout" id="logoutUrl"></a>
+<a href="../" id="index"></a>
 
 <div class="container">
   <div class="row">
     <div class="col-md-4 col-md-offset-4 ">
 
       <form id="loginForm" class="login-form" method="post">
-        <input type="text" class="form-control" name="username" placeholder="User Name" required autofocus />
-        <input type="password" class="form-control" name="password" placeholder="Password" required />
-        <button class="btn btn-lg btn-primary btn-block" type="button" onclick="login()">Sign In</button>
+        <input type="text" class="form-control" name="username" placeholder="User Name" required
+               autofocus/>
+        <input type="password" class="form-control" name="password" placeholder="Password"
+               required/>
+        <button class="btn btn-lg btn-primary btn-block" type="button" onclick="login()">Sign In
+        </button>
 
         <div class="social-login" id="social_login"></div>
         <div class="error" id="error"></div>
 
         <a href="#" class="pull-left" style="margin-top: 15px;"><!--Need help? --></a>
 
-        <span class="clearfix" ></span>
+        <span class="clearfix"></span>
       </form>
     </div>
   </div>

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/login/login.js
----------------------------------------------------------------------
diff --git a/services/dashboard/login/login.js b/services/dashboard/login/login.js
index 5a520f9..ffc3cd0 100644
--- a/services/dashboard/login/login.js
+++ b/services/dashboard/login/login.js
@@ -21,11 +21,11 @@ function login() {
       $(location).attr('href', index);
     }
   )
-  .fail(function (xhr, textStatus, errorThrown) {
-    var elem = $("#error");
-    elem.html(xhr.responseText);
-    elem.text(textStatus + "(" + xhr.status + "): " + elem.text());
-  });
+    .fail(function (xhr, textStatus, errorThrown) {
+      var elem = $("#error");
+      elem.html(xhr.responseText);
+      elem.text(textStatus + "(" + xhr.status + "): " + elem.text());
+    });
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/health_check_service.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/health_check_service.js b/services/dashboard/services/health_check_service.js
index 2af1fba..d9f5da3 100644
--- a/services/dashboard/services/health_check_service.js
+++ b/services/dashboard/services/health_check_service.js
@@ -8,25 +8,25 @@ angular.module('dashboard')
 /**
  * The service will continuously contact service endpoint. A dialog will be shown, when the service is unreachable.
  */
-  .service('HealthCheckService', ['$http', function($http) {
+  .service('HealthCheckService', ['$http', function ($http) {
     'use strict';
 
     var service = this;
     service._available = true;
 
-    service.config = function(checkUrl, checkInterval, showDialogFn, hideDialogFn) {
+    service.config = function (checkUrl, checkInterval, showDialogFn, hideDialogFn) {
       this.checkUrl = checkUrl;
       this.checkInterval = checkInterval;
       this.showDialogFn = showDialogFn;
       this.hideDialogFn = hideDialogFn;
     };
 
-    service.isServiceAvailable = function() {
+    service.isServiceAvailable = function () {
       return service._available;
     };
 
-    service.checkForever = function() {
-      var fn = function() {
+    service.checkForever = function () {
+      var fn = function () {
         service._check().finally(
           function retry() {
             _.delay(fn, service.checkInterval);
@@ -35,7 +35,7 @@ angular.module('dashboard')
       fn();
     };
 
-    service._check = function() {
+    service._check = function () {
       return $http.get(service.checkUrl).then(
         function handleSuccess() {
           if (!service.isServiceAvailable()) {
@@ -48,7 +48,7 @@ angular.module('dashboard')
       );
     };
 
-    service._setServiceAvailable = function(available) {
+    service._setServiceAvailable = function (available) {
       service._available = available;
       if (available) {
         service.hideDialogFn();

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/locator.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/locator.js b/services/dashboard/services/locator.js
index d855ea4..c034b57 100644
--- a/services/dashboard/services/locator.js
+++ b/services/dashboard/services/locator.js
@@ -5,18 +5,18 @@
 
 angular.module('dashboard')
 
-  /** Routing helper */
-  .factory('locator', function() {
+/** Routing helper */
+  .factory('locator', function () {
     'use strict';
 
     var self = {
-      worker: function(workerId) {
+      worker: function (workerId) {
         return '#/cluster/workers/worker/' + workerId;
       },
-      executor: function(appId, appType, executorId) {
+      executor: function (appId, appType, executorId) {
         return self.app(appId, appType) + '/executor/' + executorId;
       },
-      app: function(appId, appType) {
+      app: function (appId, appType) {
         var prefix = appType === 'streaming' ? 'streaming' : '';
         return '#/apps/' + prefix + 'app/' + appId;
       }

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/login_check.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/login_check.js b/services/dashboard/services/login_check.js
index 1d15dc4..66cdedf 100644
--- a/services/dashboard/services/login_check.js
+++ b/services/dashboard/services/login_check.js
@@ -6,26 +6,26 @@
 angular.module('dashboard')
 // Authentication Angular interceptor for http methods.
 // If server respond 401 (unauthenticated), will redirect to login page.
-.factory('authInterceptor', ['$q', 'conf', function ($q, conf) {
+  .factory('authInterceptor', ['$q', 'conf', function ($q, conf) {
 
     // Defer the error response to caller after this timeout to avoid browser hang issue
     // See https://github.com/gearpump/gearpump/issues/1855
     var deferErrorResponseMs = 3000;
     return {
-        'responseError': function(response) {
-            if (response.status == 401) {
-                window.location.href = conf.loginUrl;
-            }
+      'responseError': function (response) {
+        if (response.status == 401) {
+          window.location.href = conf.loginUrl;
+        }
 
-            var deferred = $q.defer();
-            setTimeout(function() {
-                deferred.reject(response);
-            }, 3000);
-            return deferred.promise;
+        var deferred = $q.defer();
+        setTimeout(function () {
+          deferred.reject(response);
+        }, 3000);
+        return deferred.promise;
 
-        }
+      }
     };
-}])
-.config(['$httpProvider', function ($httpProvider) {
+  }])
+  .config(['$httpProvider', function ($httpProvider) {
     $httpProvider.interceptors.push('authInterceptor');
-}]);
\ No newline at end of file
+  }]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/models/dag.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/models/dag.js b/services/dashboard/services/models/dag.js
index 876c80c..bff12db 100644
--- a/services/dashboard/services/models/dag.js
+++ b/services/dashboard/services/models/dag.js
@@ -5,7 +5,7 @@
 
 angular.module('io.gearpump.models')
 
-  .service('Dag', function() {
+  .service('Dag', function () {
     'use strict';
 
     /** This class represents a DAG. The topology is immutable after creation. */
@@ -20,50 +20,50 @@ angular.module('io.gearpump.models')
     Dag.prototype = {
 
       /** Indicate whether the topology of specified processors and edges is equal to the current topology. */
-      isEqual: function(processors, edges) {
+      isEqual: function (processors, edges) {
         return _.isEqual(this.processors, processors)
           && _.isEqual(this.edges, edges);
       },
 
       /** Return processor ids as an array. */
-      getProcessorIds: function() {
+      getProcessorIds: function () {
         return this.sortedProcessorIds;
       },
 
       /** Return source processor ids as an array. */
-      getSourceProcessorIds: function() {
-        return _.filter(this.getProcessorIds(), function(processorId) {
+      getSourceProcessorIds: function () {
+        return _.filter(this.getProcessorIds(), function (processorId) {
           return this.degrees[processorId].indegree === 0;
         }, this);
       },
 
       /** Return sink processor ids as an array. */
-      getSinkProcessorIds: function() {
-        return _.filter(this.getProcessorIds(), function(processorId) {
+      getSinkProcessorIds: function () {
+        return _.filter(this.getProcessorIds(), function (processorId) {
           return this.degrees[processorId].outdegree === 0;
         }, this);
       },
 
       /** Return the number of processors on the longest path. */
-      hierarchyDepth: function() {
+      hierarchyDepth: function () {
         return _.max(_.map(this.processors, 'hierarchy'));
       },
 
-      _getProcessorIdsByTopologicalOrdering: function() {
+      _getProcessorIdsByTopologicalOrdering: function () {
         return _(this.processors).sortBy('hierarchy').map('id').value();
       },
 
-      _getPredecessorIds: function() {
+      _getPredecessorIds: function () {
         var result = {};
-        _.forEach(this.getProcessorIds(), function(processorId) {
+        _.forEach(this.getProcessorIds(), function (processorId) {
           result[processorId] = this._calculatePredecessorIds(processorId);
         }, this);
         return result;
       },
 
-      _calculatePredecessorIds: function(processorId) {
+      _calculatePredecessorIds: function (processorId) {
         var result = [];
-        _.forEach(this.edges, function(edge) {
+        _.forEach(this.edges, function (edge) {
           if (edge.to === processorId) {
             result.push(edge.from);
           }
@@ -71,13 +71,13 @@ angular.module('io.gearpump.models')
         return result;
       },
 
-      _calculateDegrees: function() {
+      _calculateDegrees: function () {
         var result = {};
-        _.forEach(this.processors, function(_, key) {
+        _.forEach(this.processors, function (_, key) {
           result[key] = {indegree: 0, outdegree: 0};
         });
 
-        _.forEach(this.edges, function(edge) {
+        _.forEach(this.edges, function (edge) {
           result[edge.from].outdegree++;
           result[edge.to].indegree++;
         });
@@ -88,10 +88,10 @@ angular.module('io.gearpump.models')
        * Return the latency of critical path and all matched paths.
        * Note that the latency is the sum of all processors on the path.
        */
-      calculateCriticalPathAndLatency: function(metricsProvider, time) {
+      calculateCriticalPathAndLatency: function (metricsProvider, time) {
         // calculate independent processor latency
         var candidates = {};
-        _.forEach(this.sortedProcessorIds, function(processorId) {
+        _.forEach(this.sortedProcessorIds, function (processorId) {
           candidates[processorId] = {
             latency: this._getProcessorLatency(processorId, metricsProvider, time),
             path: [processorId]
@@ -99,10 +99,10 @@ angular.module('io.gearpump.models')
         }, this);
 
         // iteratively update processor's latency (and path) by adding its maximal predecessor's latency
-        _.forEach(this.sortedProcessorIds, function(processorId) {
+        _.forEach(this.sortedProcessorIds, function (processorId) {
           var predecessorIds = this.predecessorIds[processorId];
           if (predecessorIds.length > 0) {
-            var maxLatencyPredecessor = _.max(_.map(predecessorIds, function(predecessorId) {
+            var maxLatencyPredecessor = _.max(_.map(predecessorIds, function (predecessorId) {
               return candidates[predecessorId];
             }), 'latency');
             var current = candidates[processorId];
@@ -115,7 +115,7 @@ angular.module('io.gearpump.models')
         var criticalPathLatency = _.max(_.map(candidates, 'latency'));
 
         // find the critical paths
-        var criticalPaths = _.map(_.pick(candidates, function(candidate) {
+        var criticalPaths = _.map(_.pick(candidates, function (candidate) {
           return candidate.latency === criticalPathLatency;
         }), 'path');
 
@@ -125,7 +125,7 @@ angular.module('io.gearpump.models')
         };
       },
 
-      _getProcessorLatency: function(processorId, metricsProvider, time) {
+      _getProcessorLatency: function (processorId, metricsProvider, time) {
         if (this.processors[processorId].hierarchy === 0) {
           return 0; // the latency of source process is set to 0
         }

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/models/metrics.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/models/metrics.js b/services/dashboard/services/models/metrics.js
index ab40556..00b2305 100644
--- a/services/dashboard/services/models/metrics.js
+++ b/services/dashboard/services/models/metrics.js
@@ -6,23 +6,23 @@
 angular.module('io.gearpump.models')
 
 /** TODO: to be absorbed as scalajs (#458) */
-  .factory('Metrics', [function() {
+  .factory('Metrics', [function () {
     'use strict';
 
     var decoder = {
-      _common: function(data) {
+      _common: function (data) {
         return {
           meta: decoder._extractPathAndName(data.value.name),
           time: Number(data.time)
         };
       },
-      _extractPathAndName: function(name) {
+      _extractPathAndName: function (name) {
         var tuple = name.split(':');
         return tuple.length === 2 ?
-          {path: tuple[0], name: tuple[1]} :
-          {path: '', name: name};
+        {path: tuple[0], name: tuple[1]} :
+        {path: '', name: name};
       },
-      meter: function(data) {
+      meter: function (data) {
         var result = decoder._common(data);
         var value = data.value;
         result.values = {
@@ -32,7 +32,7 @@ angular.module('io.gearpump.models')
         };
         return result;
       },
-      histogram: function(data) {
+      histogram: function (data) {
         var result = decoder._common(data);
         var value = data.value;
         result.values = {
@@ -45,14 +45,14 @@ angular.module('io.gearpump.models')
         };
         return result;
       },
-      gauge: function(data) {
+      gauge: function (data) {
         var result = decoder._common(data);
         var value = data.value;
         result.value = Number(value.value);
         return result;
       },
       /** automatically guess metric type and decode or return null */
-      $auto: function(data) {
+      $auto: function (data) {
         switch (data.value.$type) {
           case 'io.gearpump.metrics.Metrics.Meter':
             return decoder.meter(data);

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/models/metrics_provider.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/models/metrics_provider.js b/services/dashboard/services/models/metrics_provider.js
index 71fc7ab..cddd1f1 100644
--- a/services/dashboard/services/models/metrics_provider.js
+++ b/services/dashboard/services/models/metrics_provider.js
@@ -5,7 +5,7 @@
 
 angular.module('io.gearpump.models')
 
-  .service('MetricsProvider', function() {
+  .service('MetricsProvider', function () {
     'use strict';
 
     /**
@@ -22,12 +22,12 @@ angular.module('io.gearpump.models')
     MetricsProvider.prototype = {
 
       /** Add or update metrics to the repository and return the number of updated metrics. */
-      update: function(metrics, args) {
+      update: function (metrics, args) {
         var that = this;
         var count = 0;
         // metrics is {multi-dimension associative array} name -> path -> array of metric
-        _.forEach(metrics, function(pathAndMetrics, name) {
-          _.forEach(pathAndMetrics, function(metricArray, path) {
+        _.forEach(metrics, function (pathAndMetrics, name) {
+          _.forEach(pathAndMetrics, function (metricArray, path) {
             if (that.paths.hasOwnProperty(path)) {
               count += args.latestOnly ?
                 that._updateLatestMetrics(path, name, metricArray) :
@@ -38,7 +38,7 @@ angular.module('io.gearpump.models')
         return count;
       },
 
-      _updateLatestMetrics: function(path, name, metrics) {
+      _updateLatestMetrics: function (path, name, metrics) {
         if (metrics.length > 0) {
           var metric = _.last(metrics);
           this._updateMetric(path, name, this.LATEST_METRIC_TIME, metric.values);
@@ -49,10 +49,10 @@ angular.module('io.gearpump.models')
         return 0;
       },
 
-      _updateMetricsByRetainInterval: function(path, name, metrics, timeResolution) {
+      _updateMetricsByRetainInterval: function (path, name, metrics, timeResolution) {
         var count = 0;
         if (timeResolution > 0) {
-          _.forEach(metrics, function(metric) {
+          _.forEach(metrics, function (metric) {
             var retainIntervalTime = Math.floor(metric.time / timeResolution) * timeResolution;
             this._updateMetric(path, name, retainIntervalTime, metric.values);
             count++;
@@ -63,7 +63,7 @@ angular.module('io.gearpump.models')
         return count;
       },
 
-      _updateMetric: function(path, name, time, values) {
+      _updateMetric: function (path, name, time, values) {
         this.data[path] = this.data[path] || {};
         this.data[path][name] = this.data[path][name] || {};
         this.data[path][name][time] = values;
@@ -74,11 +74,11 @@ angular.module('io.gearpump.models')
       },
 
       /** Return all metric time as an array in ascending order. */
-      getMetricTimeArray: function() {
+      getMetricTimeArray: function () {
         return _.values(this.timeLookup).sort();
       },
 
-      _getMetricFieldOrElse: function(path, name, field, fallback, time) {
+      _getMetricFieldOrElse: function (path, name, field, fallback, time) {
         try {
           return time > 0 ?
             this.data[path][name][time][field] :
@@ -89,17 +89,17 @@ angular.module('io.gearpump.models')
       },
 
       /** Return the sum of particular metric field of particular processors. */
-      getMeterMetricSum: function(paths, name, field, time) {
+      getMeterMetricSum: function (paths, name, field, time) {
         var result = this.getMeterMetricSumByFields(paths, name, [field], time);
         return result[field];
       },
 
       /** Return a map of the sum of particular metric fields of particular processors. */
-      getMeterMetricSumByFields: function(paths, name, fields, time) {
+      getMeterMetricSumByFields: function (paths, name, fields, time) {
         var result = _.zipObject(fields, _.times(fields.length, 0));
         var that = this;
-        _.forEach(paths, function(path) {
-          _.forEach(fields, function(field) {
+        _.forEach(paths, function (path) {
+          _.forEach(fields, function (field) {
             result[field] += that._getMetricFieldOrElse(path, name, field, 0, time);
           });
         });
@@ -110,9 +110,9 @@ angular.module('io.gearpump.models')
        * Return the average of particular metric field of particular processors.
        * Return a fallback value, if no metric value is captured.
        */
-      getHistogramMetricAverageOrElse: function(paths, name, field, fallback, time) {
+      getHistogramMetricAverageOrElse: function (paths, name, field, fallback, time) {
         var array = [];
-        _.forEach(paths, function(path) {
+        _.forEach(paths, function (path) {
           var value = this._getMetricFieldOrElse(path, name, field, false, time);
           if (value !== false) {
             array.push(value);
@@ -125,13 +125,13 @@ angular.module('io.gearpump.models')
        * Batch read particular metric field from the repository and then return a map. The key is metric
        * time; the value is an array of metric field values or the aggregated field value.
        */
-      getAggregatedMetricsByRetainInterval: function(paths, name, field, options) {
+      getAggregatedMetricsByRetainInterval: function (paths, name, field, options) {
         var that = this;
         var result = {};
 
-        _.forEach(paths, function(path) {
+        _.forEach(paths, function (path) {
           var metrics = that._filterMetricsByPathAndName(path, name);
-          _.forEach(metrics, function(metric, time) {
+          _.forEach(metrics, function (metric, time) {
             if (time !== that.LATEST_METRIC_TIME) {
               result[time] = result[time] || [];
               if (metric.hasOwnProperty(field)) {
@@ -141,14 +141,14 @@ angular.module('io.gearpump.models')
           });
         });
 
-        _.forEach(result, function(array, time) {
+        _.forEach(result, function (array, time) {
           result[time] = _.isFunction(options.aggregateFn) ?
             options.aggregateFn(array) : array;
         });
         return options.unsort ? result : util.keysSortedObject(result);
       },
 
-      _filterMetricsByPathAndName: function(path, name) {
+      _filterMetricsByPathAndName: function (path, name) {
         var match = this.data[path];
         if (match && match.hasOwnProperty(name)) {
           return match[name];
@@ -158,13 +158,13 @@ angular.module('io.gearpump.models')
     };
 
     var util = {
-      mean: function(array) {
+      mean: function (array) {
         // No idea why there is no Math.mean() or Array.mean() or _.mean()
         return array.length ? _.sum(array) / array.length : NaN;
       },
-      keysSortedObject: function(object) {
+      keysSortedObject: function (object) {
         var result = {};
-        _.forEach(_.keys(object).sort(), function(key) {
+        _.forEach(_.keys(object).sort(), function (key) {
           result[key] = object[key];
         });
         return result;

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/models/models.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/models/models.js b/services/dashboard/services/models/models.js
index 794f2ce..15755bc 100644
--- a/services/dashboard/services/models/models.js
+++ b/services/dashboard/services/models/models.js
@@ -7,20 +7,20 @@ angular.module('io.gearpump.models', [])
 
 /** TODO: to be absorbed as scalajs */
   .factory('models', ['$timeout', 'conf', 'restapi', 'locator', 'StreamingAppDag', 'Metrics',
-    function($timeout, conf, restapi, locator, StreamingAppDag, Metrics) {
+    function ($timeout, conf, restapi, locator, StreamingAppDag, Metrics) {
       'use strict';
 
       var util = {
-        usage: function(current, total) {
+        usage: function (current, total) {
           return total > 0 ? 100 * current / total : 0;
         },
-        getOrCreate: function(obj, prop, init) {
+        getOrCreate: function (obj, prop, init) {
           if (!obj.hasOwnProperty(prop)) {
             obj[prop] = init;
           }
           return obj[prop];
         },
-        parseIntFromQueryPathTail: function(path) {
+        parseIntFromQueryPathTail: function (path) {
           return Number(_.last(path.split('.')).replace(/[^0-9]/g, ''));
         }
       };
@@ -33,12 +33,12 @@ angular.module('io.gearpump.models', [])
        */
       function get(path, decodeFn, args) {
         args = args || {};
-        return restapi.get(path).then(function(response) {
+        return restapi.get(path).then(function (response) {
           var oldModel;
           var model = decodeFn(response.data, args);
 
-          model.$subscribe = function(scope, onData, onError) {
-            restapi.subscribe(args.pathOverride || path, scope, function(data) {
+          model.$subscribe = function (scope, onData, onError) {
+            restapi.subscribe(args.pathOverride || path, scope, function (data) {
               try {
                 var newModel = decodeFn(data, args);
                 if (!_.isEqual(newModel, oldModel)) {
@@ -53,7 +53,7 @@ angular.module('io.gearpump.models', [])
             }, args.period);
           };
 
-          model.$data = function() {
+          model.$data = function () {
             return _.omit(model, _.isFunction);
           };
 
@@ -62,21 +62,21 @@ angular.module('io.gearpump.models', [])
       }
 
       var decoder = {
-        _asAssociativeArray: function(objs, decodeFn, keyName) {
+        _asAssociativeArray: function (objs, decodeFn, keyName) {
           var result = {};
-          _.map(objs, function(obj) {
+          _.map(objs, function (obj) {
             var model = decodeFn(obj);
             var key = model[keyName];
             result[key] = model;
           });
           return result;
         },
-        _akkaAddr: function(actorPath) {
+        _akkaAddr: function (actorPath) {
           return actorPath
             .split('@')[1]
             .split('/')[0];
         },
-        _jvm: function(s) {
+        _jvm: function (s) {
           var tuple = s.split('@');
           return {
             pid: tuple[0],
@@ -84,11 +84,11 @@ angular.module('io.gearpump.models', [])
           };
         },
         /** Do the necessary deserialization. */
-        master: function(wrapper) {
+        master: function (wrapper) {
           var obj = wrapper.masterDescription;
           angular.merge(obj, {
             // upickle conversion
-            cluster: _.map(obj.cluster, function(node) {
+            cluster: _.map(obj.cluster, function (node) {
               return node.host + ":" + node.port;
             }),
             jvm: decoder._jvm(obj.jvmName),
@@ -99,13 +99,13 @@ angular.module('io.gearpump.models', [])
           });
           return obj;
         },
-        partitioners: function(wrapper) {
+        partitioners: function (wrapper) {
           return wrapper.partitioners;
         },
-        workers: function(objs) {
+        workers: function (objs) {
           return decoder._asAssociativeArray(objs, decoder.worker, 'workerId');
         },
-        worker: function(obj) {
+        worker: function (obj) {
           var slotsUsed = obj.totalSlots - obj.availableSlots;
           return angular.merge(obj, {
             // extra properties
@@ -122,14 +122,14 @@ angular.module('io.gearpump.models', [])
             configLink: restapi.workerConfigLink(obj.workerId)
           });
         },
-        supervisor: function(obj) {
+        supervisor: function (obj) {
           return obj;
         },
-        apps: function(wrapper) {
+        apps: function (wrapper) {
           var objs = wrapper.appMasters;
           return decoder._asAssociativeArray(objs, decoder.appSummary, 'appId');
         },
-        appSummary: function(obj) {
+        appSummary: function (obj) {
           // todo: add `type` field to summary and detailed app response
           angular.merge(obj, {
             type: 'streaming'
@@ -142,15 +142,15 @@ angular.module('io.gearpump.models', [])
             // extra methods
             pageUrl: locator.app(obj.appId, obj.type),
             configLink: restapi.appConfigLink(obj.appId),
-            terminate: function() {
+            terminate: function () {
               return restapi.killApp(obj.appId);
             },
-            restart: function() {
+            restart: function () {
               return restapi.restartAppAsync(obj.appId);
             }
           });
         },
-        app: function(obj) {
+        app: function (obj) {
           // todo: add `type` field to summary and detailed app response
           angular.merge(obj, {
             status: 'active',
@@ -166,7 +166,7 @@ angular.module('io.gearpump.models', [])
 
           // upickle conversion 1: streaming app related decoding
           obj.processors = _.zipObject(obj.processors);
-          _.forEach(obj.processors, function(processor) {
+          _.forEach(obj.processors, function (processor) {
             // add an active property
             var active = true;
             var replaced = false;
@@ -180,14 +180,14 @@ angular.module('io.gearpump.models', [])
             processor.active = active;
             processor.replaced = replaced;
           });
-          _.forEach(_.zipObject(obj.processorLevels), function(hierarchy, processorId) {
+          _.forEach(_.zipObject(obj.processorLevels), function (hierarchy, processorId) {
             obj.processors[processorId].hierarchy = hierarchy;
           });
           delete obj.processorLevels;
 
           if (obj.dag && Array.isArray(obj.dag.edgeList)) {
             var edges = {};
-            _.forEach(obj.dag.edgeList, function(tuple) {
+            _.forEach(obj.dag.edgeList, function (tuple) {
               var from = parseInt(tuple[0]);
               var to = parseInt(tuple[2]);
               var partitionerClass = tuple[1];
@@ -204,7 +204,7 @@ angular.module('io.gearpump.models', [])
           obj.executors = _.object(_.map(obj.executors, 'executorId'), obj.executors);
 
           // upickle conversion 2b: add extra executor properties and methods
-          _.forEach(obj.executors, function(executor) {
+          _.forEach(obj.executors, function (executor) {
             angular.merge(executor, {
               isRunning: executor.status === 'active',
               pageUrl: locator.executor(obj.appId, obj.type, executor.executorId),
@@ -213,10 +213,10 @@ angular.module('io.gearpump.models', [])
           });
 
           // upickle conversion 2c: task count is executor specific property for streaming app
-          _.forEach(obj.processors, function(processor) {
+          _.forEach(obj.processors, function (processor) {
             var taskCountLookup = _.zipObject(processor.taskCount);
             // Backend returns executor ids, but names as `executor`. We change them to real executors.
-            processor.executors = _.map(processor.executors, function(executorId) {
+            processor.executors = _.map(processor.executors, function (executorId) {
               var executor = obj.executors[executorId];
               var processorExecutor = angular.copy(executor); // The task count is for particular processor, so we make a copy
               processorExecutor.taskCount = taskCountLookup[executorId].count;
@@ -232,13 +232,13 @@ angular.module('io.gearpump.models', [])
             // extra methods
             pageUrl: locator.app(obj.appId, obj.type),
             configLink: restapi.appConfigLink(obj.appId),
-            terminate: function() {
+            terminate: function () {
               return restapi.killApp(obj.appId);
             }
           });
           return obj;
         },
-        appExecutor: function(obj) {
+        appExecutor: function (obj) {
           return angular.merge(obj, {
             // extra properties and methods
             jvm: decoder._jvm(obj.jvmName),
@@ -247,15 +247,15 @@ angular.module('io.gearpump.models', [])
           });
         },
         /** Return a map. the key is processor id, the value is an array of its stalling tasks */
-        appStallingTasks: function(wrapper) {
+        appStallingTasks: function (wrapper) {
           var result = _.groupBy(wrapper.tasks, 'processorId');
-          _.forEach(result, function(processor, processorId) {
+          _.forEach(result, function (processor, processorId) {
             result[processorId] = _.map(processor, 'index');
           });
           return result;
         },
         /** Return an array of application alerts */
-        appAlerts: function(obj) {
+        appAlerts: function (obj) {
           if (obj.time > 0) {
             return [{
               severity: 'error',
@@ -265,7 +265,7 @@ angular.module('io.gearpump.models', [])
           }
           return [];
         },
-        metrics: function(wrapper, args) {
+        metrics: function (wrapper, args) {
           var metrics = decoder._metricsGroups(wrapper);
           // Reduce nested array by one level, if we want to filter particular search path.
           if (args.filterPath) {
@@ -273,19 +273,19 @@ angular.module('io.gearpump.models', [])
           }
           return metrics;
         },
-        appMetrics: function(wrapper, args) {
+        appMetrics: function (wrapper, args) {
           var metrics = decoder.metrics(wrapper, args);
-          return _.mapValues(metrics, function(values) {
-            return _.transform(values, function(result, metrics, path) {
+          return _.mapValues(metrics, function (values) {
+            return _.transform(values, function (result, metrics, path) {
               var id = util.parseIntFromQueryPathTail(path);
               result[id] = metrics;
             });
           });
         },
-        appTaskLatestMetricValues: function(wrapper, args) {
+        appTaskLatestMetricValues: function (wrapper, args) {
           var metrics = decoder.metrics(wrapper, args);
-          return _.mapValues(metrics, function(values) {
-            return _.transform(values, function(result, metrics, path) {
+          return _.mapValues(metrics, function (values) {
+            return _.transform(values, function (result, metrics, path) {
               var id = util.parseIntFromQueryPathTail(path);
               result[id] = _.last(metrics).values;
             });
@@ -297,9 +297,9 @@ angular.module('io.gearpump.models', [])
          * The 2nd level key is the object path (e.g. master or app0.processor0)
          * The value is an array of metrics, which are sorted by time.
          */
-        _metricsGroups: function(wrapper) {
+        _metricsGroups: function (wrapper) {
           var result = {};
-          _.forEach(wrapper.metrics, function(obj) {
+          _.forEach(wrapper.metrics, function (obj) {
             var metric = Metrics.$auto(obj);
             if (metric) {
               var metricsGroup = util.getOrCreate(result, metric.meta.name, {});
@@ -311,16 +311,16 @@ angular.module('io.gearpump.models', [])
 
           // Remove duplicates and sort metrics by time defensively
           // https://github.com/gearpump/gearpump/issues/1385
-          _.forEach(result, function(metricsGroup) {
-            _.forEach(metricsGroup, function(metricSeries, path) {
+          _.forEach(result, function (metricsGroup) {
+            _.forEach(metricsGroup, function (metricSeries, path) {
               metricsGroup[path] = _.sortBy(metricSeries, 'time');
             });
           });
           return result;
         },
         /** Remove related metrics paths and change the given 2d array to 1d. */
-        _removeUnrelatedMetricsFrom2dArray: function(metrics, filterPath) {
-          _.forEach(metrics, function(metricsGroup, name) {
+        _removeUnrelatedMetricsFrom2dArray: function (metrics, filterPath) {
+          _.forEach(metrics, function (metricsGroup, name) {
             if (metricsGroup.hasOwnProperty(filterPath)) {
               metrics[name] = metricsGroup[filterPath];
             } else {
@@ -331,103 +331,103 @@ angular.module('io.gearpump.models', [])
       };
 
       var getter = {
-        master: function() {
+        master: function () {
           return get('master',
             decoder.master);
         },
-        masterMetrics: function(updateInterval) {
+        masterMetrics: function (updateInterval) {
           return getter._masterMetrics({period: updateInterval});
         },
-        masterHistMetrics: function() {
+        masterHistMetrics: function () {
           return getter._masterMetrics({all: true});
         },
-        _masterMetrics: function(args) {
+        _masterMetrics: function (args) {
           return getter._metrics('master/metrics/', 'master', args);
         },
-        partitioners: function() {
+        partitioners: function () {
           return get('master/partitioners',
             decoder.partitioners);
         },
-        workers: function() {
+        workers: function () {
           return get('master/workerlist',
             decoder.workers);
         },
-        worker: function(workerId) {
+        worker: function (workerId) {
           return get('worker/' + workerId,
             decoder.worker);
         },
-        workerMetrics: function(workerId, updateInterval) {
+        workerMetrics: function (workerId, updateInterval) {
           return getter._workerMetrics(workerId, {period: updateInterval});
         },
-        workerHistMetrics: function(workerId) {
+        workerHistMetrics: function (workerId) {
           return getter._workerMetrics(workerId, {all: true});
         },
-        _workerMetrics: function(workerId, args) {
+        _workerMetrics: function (workerId, args) {
           return getter._metrics('worker/' + workerId + '/metrics/', 'worker' + workerId, args);
         },
-        supervisor: function() {
+        supervisor: function () {
           return get('supervisor',
             decoder.supervisor);
         },
-        apps: function() {
+        apps: function () {
           return get('master/applist',
             decoder.apps);
         },
-        app: function(appId) {
+        app: function (appId) {
           return get('appmaster/' + appId + '?detail=true',
             decoder.app);
         },
         /** Note that executor related metrics will be excluded. */
-        appMetrics: function(appId, updateInterval) {
+        appMetrics: function (appId, updateInterval) {
           return getter._appMetrics(appId, {period: updateInterval});
         },
-        appHistMetrics: function(appId) {
+        appHistMetrics: function (appId) {
           return getter._appMetrics(appId, {all: true});
         },
-        appLatestMetrics: function(appId) {
+        appLatestMetrics: function (appId) {
           return getter._appMetrics(appId, {all: 'latest'});
         },
-        _appMetrics: function(appId, args) {
+        _appMetrics: function (appId, args) {
           args.aggregator = 'io.gearpump.streaming.metrics.ProcessorAggregator';
           args.decoder = decoder.appMetrics;
           return getter._metrics('appmaster/' + appId + '/metrics/app' + appId, '', args);
         },
-        appTaskLatestMetricValues: function(appId, processorId, metricName, range) {
+        appTaskLatestMetricValues: function (appId, processorId, metricName, range) {
           var taskRangeArgs = range && range.hasOwnProperty('start') ?
-            '&startTask=' + range.start + '&endTask=' + (range.stop + 1) : '';
+          '&startTask=' + range.start + '&endTask=' + (range.stop + 1) : '';
           var args = {
             all: 'latest',
             aggregator: 'io.gearpump.streaming.metrics.TaskFilterAggregator' +
-              '&startProcessor=' + processorId + '&endProcessor=' + (processorId + 1) + taskRangeArgs,
+            '&startProcessor=' + processorId + '&endProcessor=' + (processorId + 1) + taskRangeArgs,
             decoder: decoder.appTaskLatestMetricValues
           };
           metricName = metricName ? ':' + metricName : '';
           return getter._metrics('appmaster/' + appId + '/metrics/app' + appId +
             '.processor' + processorId + '.*' + metricName, '', args);
         },
-        appExecutor: function(appId, executorId) {
+        appExecutor: function (appId, executorId) {
           return get('appmaster/' + appId + '/executor/' + executorId,
             decoder.appExecutor);
         },
-        appExecutorMetrics: function(appId, executorId, updateInterval) {
+        appExecutorMetrics: function (appId, executorId, updateInterval) {
           return getter._appExecutorMetrics(appId, executorId, {period: updateInterval});
         },
-        appExecutorHistMetrics: function(appId, executorId) {
+        appExecutorHistMetrics: function (appId, executorId) {
           return getter._appExecutorMetrics(appId, executorId, {all: true});
         },
-        _appExecutorMetrics: function(appId, executorId, args) {
+        _appExecutorMetrics: function (appId, executorId, args) {
           return getter._metrics(
             'appmaster/' + appId + '/metrics/', 'app' + appId + '.executor' + executorId, args);
         },
-        appStallingTasks: function(appId) {
+        appStallingTasks: function (appId) {
           return get('appmaster/' + appId + '/stallingtasks',
             decoder.appStallingTasks);
         },
-        appAlerts: function(appId) {
+        appAlerts: function (appId) {
           return get('appmaster/' + appId + '/errors',
             decoder.appAlerts);
         },
-        _metrics: function(pathPrefix, path, args) {
+        _metrics: function (pathPrefix, path, args) {
           args = args || {};
           var aggregatorArg = angular.isString(args.aggregator) ?
             ('&aggregator=' + args.aggregator) : '';
@@ -445,10 +445,10 @@ angular.module('io.gearpump.models', [])
       return {
         $get: getter,
         /** Attempts to get model and then subscribe changes as long as the scope is valid. */
-        $subscribe: function(scope, getModelFn, onData, period) {
+        $subscribe: function (scope, getModelFn, onData, period) {
           var shouldCancel = false;
           var promise;
-          scope.$on('$destroy', function() {
+          scope.$on('$destroy', function () {
             shouldCancel = true;
             $timeout.cancel(promise);
           });
@@ -456,9 +456,9 @@ angular.module('io.gearpump.models', [])
             if (shouldCancel) {
               return;
             }
-            getModelFn().then(function(data) {
+            getModelFn().then(function (data) {
               return onData(data);
-            }, /*onerror=*/function() {
+            }, /*onerror=*/function () {
               promise = $timeout(trySubscribe, period || conf.restapiQueryInterval);
             });
           }
@@ -466,26 +466,26 @@ angular.module('io.gearpump.models', [])
           trySubscribe();
         },
         // TODO: scalajs should return a app.details object with dag, if it is a streaming application.
-        createDag: function(clock, processors, edges) {
+        createDag: function (clock, processors, edges) {
           var dag = new StreamingAppDag(clock, processors, edges);
           dag.replaceProcessor = restapi.replaceDagProcessor;
           return dag;
         },
         /** Submit a DAG along with jar files */
-        submitDag: function(files, dag, onComplete) {
+        submitDag: function (files, dag, onComplete) {
           if (Object.keys(files).length !== 1) {
             return onComplete({success: false, message: 'One jar file is expected'});
           }
           files = _.values(files)[0]; // todo: only one file can be uploaded once (issue 1450)
-          return restapi.uploadJars(files, function(response) {
+          return restapi.uploadJars(files, function (response) {
             if (!response.success) {
               return onComplete(response);
             }
             // todo: cannot set jar for individual processor
-            angular.forEach(dag.processors, function(elem) {
+            angular.forEach(dag.processors, function (elem) {
               elem[1].jar = response.files;
             });
-            return restapi.submitDag(dag, function(response) {
+            return restapi.submitDag(dag, function (response) {
               return onComplete(response);
             });
           });

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/models/streamingapp_dag.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/models/streamingapp_dag.js b/services/dashboard/services/models/streamingapp_dag.js
index 1fa220f..7fd5800 100644
--- a/services/dashboard/services/models/streamingapp_dag.js
+++ b/services/dashboard/services/models/streamingapp_dag.js
@@ -5,7 +5,7 @@
 
 angular.module('io.gearpump.models')
 
-  .service('StreamingAppDag', ['Dag', 'StreamingAppMetricsProvider', function(Dag, StreamingAppMetricsProvider) {
+  .service('StreamingAppDag', ['Dag', 'StreamingAppMetricsProvider', function (Dag, StreamingAppMetricsProvider) {
     'use strict';
 
     /**
@@ -23,7 +23,7 @@ angular.module('io.gearpump.models')
     StreamingAppDag.prototype = {
 
       /** Set the current dag data */
-      setData: function(clock, processors, edges) {
+      setData: function (clock, processors, edges) {
         this.clock = clock;
         // The physical view contains all the processors of the application, even those dead processors.
         // The logical view contains only the alive processors. Once processors or edges are changed, we
@@ -38,12 +38,12 @@ angular.module('io.gearpump.models')
         }
       },
 
-      setStallingTasks: function(tasks) {
+      setStallingTasks: function (tasks) {
         this.stallingTasks = tasks;
       },
 
       /** Update (or add) a set of latest metrics. */
-      updateLatestMetrics: function(metrics) {
+      updateLatestMetrics: function (metrics) {
         var count = this.metricsProvider.updateLatestMetrics(metrics);
         if (count > 0) {
           // advance the metric update time so that view can subscribe metric changes
@@ -52,7 +52,7 @@ angular.module('io.gearpump.models')
       },
 
       /** Replace existing historical metrics with new data. */
-      replaceHistoricalMetrics: function(metrics, timeResolution) {
+      replaceHistoricalMetrics: function (metrics, timeResolution) {
         // as the metrics can be application wide or processor wide, to be perfectly clean, we store
         // historical metrics in a separate metrics provider
         var processorIds = this.dagPhysicalView.getProcessorIds();
@@ -61,28 +61,28 @@ angular.module('io.gearpump.models')
       },
 
       /** Return the number of current active processors. */
-      getProcessorCount: function() {
+      getProcessorCount: function () {
         return this.dagLogicalView.getProcessorIds().length;
       },
 
       /** Return the processor object. */
-      getProcessor: function(processorId) {
+      getProcessor: function (processorId) {
         return this.dagPhysicalView.processors[processorId];
       },
 
       /** Return the logical view of dag with weighted information for drawing a DAG graph. */
-      getWeightedDagView: function() {
+      getWeightedDagView: function () {
         var viewProvider = this.dagLogicalView;
         var processors = viewProvider.processors;
         var edges = viewProvider.edges;
 
         var weights = {};
-        _.forEach(processors, function(processor) {
+        _.forEach(processors, function (processor) {
           weights[processor.id] = this._calculateProcessorWeight(processor.id);
         }, this);
 
         var bandwidths = {};
-        _.forEach(edges, function(edge, key) {
+        _.forEach(edges, function (edge, key) {
           bandwidths[key] = this._calculateEdgeBandwidth(edge);
         }, this);
 
@@ -96,7 +96,7 @@ angular.module('io.gearpump.models')
       },
 
       /** Weight of a processor equals the sum of its send throughput and receive throughput. */
-      _calculateProcessorWeight: function(processorId) {
+      _calculateProcessorWeight: function (processorId) {
         return Math.max(
           this.metricsProvider.getSendMessageMovingAverage([processorId]),
           this.metricsProvider.getReceiveMessageMovingAverage([processorId])
@@ -104,7 +104,7 @@ angular.module('io.gearpump.models')
       },
 
       /** Bandwidth of an edge equals the minimum of average send throughput and average receive throughput. */
-      _calculateEdgeBandwidth: function(edge) {
+      _calculateEdgeBandwidth: function (edge) {
         var sourceOutdegree = this.dagLogicalView.degrees[edge.from].outdegree;
         var targetIndegree = this.dagLogicalView.degrees[edge.to].indegree;
         var sourceSendThroughput = this.metricsProvider.getSendMessageMovingAverage([edge.from]);
@@ -116,71 +116,71 @@ angular.module('io.gearpump.models')
       },
 
       /** Return total received messages and rate of all active sink processors. */
-      getSinkProcessorReceivedMessageTotalAndRate: function() {
+      getSinkProcessorReceivedMessageTotalAndRate: function () {
         var processorIds = this.dagLogicalView.getSinkProcessorIds();
         return this.metricsProvider.getReceiveMessageTotalAndRate(processorIds);
       },
 
       /** Return total received messages and rate of particular processor. */
-      getProcessorReceivedMessages: function(processorId) {
+      getProcessorReceivedMessages: function (processorId) {
         return this.metricsProvider.getReceiveMessageTotalAndRate([processorId]);
       },
 
       /** Return total sent messages and rate of all active source processors. */
-      getSourceProcessorSentMessageTotalAndRate: function() {
+      getSourceProcessorSentMessageTotalAndRate: function () {
         var processorIds = this.dagLogicalView.getSourceProcessorIds();
         return this.metricsProvider.getSendMessageTotalAndRate(processorIds);
       },
 
       /** Return total sent messages and rate of particular processor. */
-      getProcessorSentMessages: function(processorId) {
+      getProcessorSentMessages: function (processorId) {
         return this.metricsProvider.getSendMessageTotalAndRate([processorId]);
       },
 
       /** Return the latency on critical path. */
-      getCriticalPathLatency: function() {
+      getCriticalPathLatency: function () {
         var criticalPathAndLatency = this.dagLogicalView.calculateCriticalPathAndLatency(this.metricsProvider);
         return criticalPathAndLatency.latency;
       },
 
       /** Return the average message processing time of particular processor. */
-      getProcessorAverageMessageProcessingTime: function(processorId) {
+      getProcessorAverageMessageProcessingTime: function (processorId) {
         return this.metricsProvider.getAverageMessageProcessingTime([processorId]);
       },
 
       /** Return the average message receive latency of particular processor or the latency on critical path. */
-      getProcessorMessageReceiveLatency: function(processorId) {
+      getProcessorMessageReceiveLatency: function (processorId) {
         return this.metricsProvider.getAverageMessageReceiveLatency([processorId]);
       },
 
       /** Return the historical message receive throughput of data sink processors as an array. */
-      getSinkProcessorHistoricalMessageReceiveThroughput: function() {
+      getSinkProcessorHistoricalMessageReceiveThroughput: function () {
         var processorIds = this.dagPhysicalView.getSinkProcessorIds();
         return this.histMetricsProvider.getReceiveMessageThroughputByRetainInterval(processorIds);
       },
 
       /** Return the historical message receive throughput of particular processor as an array. */
-      getProcessorHistoricalMessageReceiveThroughput: function(processorId) {
+      getProcessorHistoricalMessageReceiveThroughput: function (processorId) {
         return this.histMetricsProvider.getReceiveMessageThroughputByRetainInterval([processorId]);
       },
 
       /** Return the historical message send throughput of data sink processors as an array. */
-      getSourceProcessorHistoricalMessageSendThroughput: function() {
+      getSourceProcessorHistoricalMessageSendThroughput: function () {
         var processorIds = this.dagPhysicalView.getSourceProcessorIds();
         return this.histMetricsProvider.getSendMessageThroughputByRetainInterval(processorIds);
       },
 
       /** Return the historical message send throughput of particular processor as an array. */
-      getProcessorHistoricalMessageSendThroughput: function(processorId) {
+      getProcessorHistoricalMessageSendThroughput: function (processorId) {
         return this.histMetricsProvider.getSendMessageThroughputByRetainInterval([processorId]);
       },
 
       /** Return the historical message receive latency on critical path as an array. */
-      getHistoricalCriticalPathLatency: function() {
+      getHistoricalCriticalPathLatency: function () {
         var provider = this.histMetricsProvider;
         var metricTimeArray = provider.getMetricTimeArray();
         var result = {};
-        _.forEach(metricTimeArray, function(time) {
+        _.forEach(metricTimeArray, function (time) {
           var criticalPathAndLatency = this.dagPhysicalView.calculateCriticalPathAndLatency(provider, time);
           result[time] = criticalPathAndLatency.latency;
         }, this);
@@ -188,27 +188,27 @@ angular.module('io.gearpump.models')
       },
 
       /** Return the historical average message processing time of particular processor as an array. */
-      getProcessorHistoricalAverageMessageProcessingTime: function(processorId) {
+      getProcessorHistoricalAverageMessageProcessingTime: function (processorId) {
         return this.histMetricsProvider.getAverageMessageProcessingTimeByRetainInterval([processorId]);
       },
 
       /** Return the historical average message receive latency of particular processor. */
-      getProcessorHistoricalAverageMessageReceiveLatency: function(processorId) {
+      getProcessorHistoricalAverageMessageReceiveLatency: function (processorId) {
         return this.histMetricsProvider.getAverageMessageReceiveLatencyByRetainInterval([processorId]);
       },
 
       /** Return an array of all processors' metrics of particular metric name. */
-      getMetricsByMetricName: function(name) {
+      getMetricsByMetricName: function (name) {
         return this.metricsProvider.getMetricsByMetricName(name);
       },
 
       /** Return the logical indegree and outdegree of a processor. */
-      getProcessorIndegreeAndOutdegree: function(processorId) {
+      getProcessorIndegreeAndOutdegree: function (processorId) {
         return this.dagLogicalView.degrees[processorId];
       },
 
       /** Return the number of processors on the longest alive path. */
-      hierarchyDepth: function() {
+      hierarchyDepth: function () {
         return this.dagLogicalView.hierarchyDepth();
       }
 
@@ -216,14 +216,14 @@ angular.module('io.gearpump.models')
 
     /** static method */
     function filterActiveProcessors(processors) {
-      return _.pick(processors, function(processor) {
+      return _.pick(processors, function (processor) {
         return processor.active;
       });
     }
 
     /** static method */
     function filterRelatedEdges(edges, processors) {
-      return _.pick(edges, function(edge) {
+      return _.pick(edges, function (edge) {
         return processors.hasOwnProperty(edge.from) &&
           processors.hasOwnProperty(edge.to);
       });

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/models/streamingapp_metrics_provider.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/models/streamingapp_metrics_provider.js b/services/dashboard/services/models/streamingapp_metrics_provider.js
index 5f9795b..2a9f655 100644
--- a/services/dashboard/services/models/streamingapp_metrics_provider.js
+++ b/services/dashboard/services/models/streamingapp_metrics_provider.js
@@ -5,7 +5,7 @@
 
 angular.module('io.gearpump.models')
 
-  .service('StreamingAppMetricsProvider', ['MetricsProvider', function(MetricsProvider) {
+  .service('StreamingAppMetricsProvider', ['MetricsProvider', function (MetricsProvider) {
     'use strict';
 
     /** This repository stores streaming app related metrics. */
@@ -16,7 +16,7 @@ angular.module('io.gearpump.models')
     StreamingAppMetricsProvider.prototype = {
 
       /** Add metrics or update to the latest value and return the number of updated metrics. */
-      updateLatestMetrics: function(metrics) {
+      updateLatestMetrics: function (metrics) {
         return this.impl.update(metrics, {latestOnly: true});
       },
 
@@ -24,26 +24,26 @@ angular.module('io.gearpump.models')
        * Add all metrics to a multiple dimension associative array and return the number of updated metrics.
        * Note that every metric will be stored only once and the metric time is the closest retain interval.
        */
-      updateAllMetricsByRetainInterval: function(metrics, timeResolution) {
+      updateAllMetricsByRetainInterval: function (metrics, timeResolution) {
         return this.impl.update(metrics, {latestOnly: false, timeResolution: timeResolution});
       },
 
       /** Return all metric time as an array in ascending order. */
-      getMetricTimeArray: function() {
+      getMetricTimeArray: function () {
         return this.impl.getMetricTimeArray();
       },
 
       /** Return total and moving average received messages of one or more processors */
-      getReceiveMessageTotalAndRate: function(ids, time) {
+      getReceiveMessageTotalAndRate: function (ids, time) {
         return this._getMeterMetricsTotalAndRate(ids, 'receiveThroughput', time);
       },
 
       /** Return total and moving average sent messages of one or more processors */
-      getSendMessageTotalAndRate: function(ids, time) {
+      getSendMessageTotalAndRate: function (ids, time) {
         return this._getMeterMetricsTotalAndRate(ids, 'sendThroughput', time);
       },
 
-      _getMeterMetricsTotalAndRate: function(ids, name, time) {
+      _getMeterMetricsTotalAndRate: function (ids, name, time) {
         var result = this.impl.getMeterMetricSumByFields(ids, name, ['count', 'movingAverage1m'], time);
         return {
           total: result.count,
@@ -52,25 +52,25 @@ angular.module('io.gearpump.models')
       },
 
       /** Return moving average received messages of one or more processors */
-      getReceiveMessageMovingAverage: function(ids, time) {
+      getReceiveMessageMovingAverage: function (ids, time) {
         var field = 'movingAverage1m';
         return this.impl.getMeterMetricSumByFields(ids, 'receiveThroughput', [field], time)[field];
       },
 
       /** Return moving average sent messages of one or more processors */
-      getSendMessageMovingAverage: function(ids, time) {
+      getSendMessageMovingAverage: function (ids, time) {
         var field = 'movingAverage1m';
         return this.impl.getMeterMetricSumByFields(ids, 'sendThroughput', [field], time)[field];
       },
 
       /** Return the average message processing time of one or more processors */
-      getAverageMessageProcessingTime: function(ids, time) {
+      getAverageMessageProcessingTime: function (ids, time) {
         var fallback = 0;
         return this.impl.getHistogramMetricAverageOrElse(ids, 'processTime', 'mean', fallback, time);
       },
 
       /** Return the average message receive latency of one or more processors */
-      getAverageMessageReceiveLatency: function(ids, time) {
+      getAverageMessageReceiveLatency: function (ids, time) {
         var fallback = 0;
         return this.impl.getHistogramMetricAverageOrElse(ids, 'receiveLatency', 'mean', fallback, time);
       },
@@ -79,7 +79,7 @@ angular.module('io.gearpump.models')
        * Return an array of message receive throughput of one or more processors, which is
        * aggregated by retain interval.
        */
-      getReceiveMessageThroughputByRetainInterval: function(ids) {
+      getReceiveMessageThroughputByRetainInterval: function (ids) {
         return this.impl.getAggregatedMetricsByRetainInterval(ids,
           'receiveThroughput', 'movingAverage1m', {aggregateFn: _.sum});
       },
@@ -88,7 +88,7 @@ angular.module('io.gearpump.models')
        * Return an array of message send throughput of one or more processors, which is aggregated
        * by retain interval.
        */
-      getSendMessageThroughputByRetainInterval: function(ids) {
+      getSendMessageThroughputByRetainInterval: function (ids) {
         return this.impl.getAggregatedMetricsByRetainInterval(ids,
           'sendThroughput', 'movingAverage1m', {aggregateFn: _.sum});
       },
@@ -97,7 +97,7 @@ angular.module('io.gearpump.models')
        * Return an array of the average message processing time of one or more processors, which is aggregated
        * by retain interval.
        */
-      getAverageMessageProcessingTimeByRetainInterval: function(ids) {
+      getAverageMessageProcessingTimeByRetainInterval: function (ids) {
         return this.impl.getAggregatedMetricsByRetainInterval(ids,
           'processTime', 'mean', {aggregateFn: d3.mean});
       },
@@ -106,14 +106,14 @@ angular.module('io.gearpump.models')
        * Return an array of the average message receive latency of one or more processors, which is aggregated
        * by retain interval.
        */
-      getAverageMessageReceiveLatencyByRetainInterval: function(ids) {
+      getAverageMessageReceiveLatencyByRetainInterval: function (ids) {
         return this.impl.getAggregatedMetricsByRetainInterval(ids,
           'receiveLatency', 'mean', {aggregateFn: d3.mean});
       },
 
       /** Return an array of processor metrics of particular metric name. */
-      getMetricsByMetricName: function(name) {
-        return _.mapValues(this.impl.data, function(metricsGroups) {
+      getMetricsByMetricName: function (name) {
+        return _.mapValues(this.impl.data, function (metricsGroups) {
           return metricsGroups[name].latest;
         });
       }

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/services/restapi.js
----------------------------------------------------------------------
diff --git a/services/dashboard/services/restapi.js b/services/dashboard/services/restapi.js
index 483fcf9..29a1683 100644
--- a/services/dashboard/services/restapi.js
+++ b/services/dashboard/services/restapi.js
@@ -7,7 +7,7 @@ angular.module('dashboard')
 
 /** TODO: refactoring work required */
   .factory('restapi', ['$q', '$http', '$timeout', '$modal', 'Upload', 'conf', 'HealthCheckService',
-    function($q, $http, $timeout, $modal, Upload, conf, HealthCheckService) {
+    function ($q, $http, $timeout, $modal, Upload, conf, HealthCheckService) {
       'use strict';
 
       function decodeSuccessResponse(data) {
@@ -32,27 +32,27 @@ angular.module('dashboard')
         /**
          * Retrieve data from rest service endpoint (HTTP GET) periodically in an angular scope.
          */
-        subscribe: function(path, scope, onData, interval) {
+        subscribe: function (path, scope, onData, interval) {
           var timeoutPromise;
           var shouldCancel = false;
-          scope.$on('$destroy', function() {
+          scope.$on('$destroy', function () {
             shouldCancel = true;
             $timeout.cancel(timeoutPromise);
           });
 
           interval = interval || conf.restapiQueryInterval;
-          var fn = function() {
+          var fn = function () {
             var promise = self.get(path);
-            promise.then(function(response) {
-                if (!shouldCancel && angular.isFunction(onData)) {
-                  shouldCancel = onData(response.data);
-                }
-              }, function(response) {
-                if (!shouldCancel && angular.isFunction(onData)) {
-                  shouldCancel = onData(response.data);
-                }
-              })
-              .finally(function() {
+            promise.then(function (response) {
+              if (!shouldCancel && angular.isFunction(onData)) {
+                shouldCancel = onData(response.data);
+              }
+            }, function (response) {
+              if (!shouldCancel && angular.isFunction(onData)) {
+                shouldCancel = onData(response.data);
+              }
+            })
+              .finally(function () {
                 if (!shouldCancel) {
                   timeoutPromise = $timeout(fn, interval);
                 }
@@ -67,7 +67,7 @@ angular.module('dashboard')
          * health check indicates the service is unavailable, no request will be sent to server, just
          * simple return a failure after a default timeout.
          */
-        get: function(path) {
+        get: function (path) {
           if (!HealthCheckService.isServiceAvailable()) {
             var deferred = $q.defer();
             _.delay(deferred.reject, conf.restapiQueryTimeout);
@@ -77,59 +77,59 @@ angular.module('dashboard')
         },
 
         /** Get data from server periodically until an user cancellation or scope exit. */
-        repeatUntil: function(url, scope, onData) {
+        repeatUntil: function (url, scope, onData) {
           // TODO: Once `subscribe` is turned to websocket push model, there is no need to have this method
           this.subscribe(url, scope,
-            function(data) {
+            function (data) {
               return !onData || onData(data);
             });
         },
 
         /** Kill a running application */
-        killApp: function(appId) {
+        killApp: function (appId) {
           var url = restapiV1Root + 'appmaster/' + appId;
           return $http.delete(url);
         },
 
         /** Restart a running application and return a promise */
-        restartAppAsync: function(appId) {
+        restartAppAsync: function (appId) {
           var url = restapiV1Root + 'appmaster/' + appId + '/restart';
           return $http.post(url);
         },
 
         /** Return the config link of an application */
-        appConfigLink: function(appId) {
+        appConfigLink: function (appId) {
           return restapiV1Root + 'appmaster/' + appId + '/config';
         },
 
         /** Return the config link of an application */
-        appExecutorConfigLink: function(appId, executorId) {
+        appExecutorConfigLink: function (appId, executorId) {
           return restapiV1Root + 'appmaster/' + appId + '/executor/' + executorId + '/config';
         },
 
         /** Return the config link of a worker */
-        workerConfigLink: function(workerId) {
+        workerConfigLink: function (workerId) {
           return restapiV1Root + 'worker/' + workerId + '/config';
         },
 
         /** Return the config link of the master */
-        masterConfigLink: function() {
+        masterConfigLink: function () {
           return restapiV1Root + 'master/config';
         },
 
         /** Submit an user defined application with user configuration */
-        submitUserApp: function(files, fileFieldNames, executorNum, args, onComplete) {
+        submitUserApp: function (files, fileFieldNames, executorNum, args, onComplete) {
           return self._submitApp(restapiV1Root + 'master/submitapp',
             files, fileFieldNames, executorNum, args, onComplete);
         },
 
         /** Submit a Storm application */
-        submitStormApp: function(files, formFormNames, executorNum, args, onComplete) {
+        submitStormApp: function (files, formFormNames, executorNum, args, onComplete) {
           return self._submitApp(restapiV1Root + 'master/submitstormapp',
             files, formFormNames, executorNum, args, onComplete);
         },
 
-        _submitApp: function(url, files, fileFieldNames, executorNum, args, onComplete) {
+        _submitApp: function (url, files, fileFieldNames, executorNum, args, onComplete) {
           var upload = Upload.upload({
             url: url,
             method: 'POST',
@@ -141,12 +141,12 @@ angular.module('dashboard')
             }
           });
 
-          upload.then(function(response) {
+          upload.then(function (response) {
             if (onComplete) {
               var data = response.data;
               onComplete({success: data && data.success});
             }
-          }, function(response) {
+          }, function (response) {
             if (onComplete) {
               onComplete(decodeErrorResponse(response.data));
             }
@@ -154,13 +154,13 @@ angular.module('dashboard')
         },
 
         /** Submit an user defined application with user configuration */
-        submitDag: function(args, onComplete) {
+        submitDag: function (args, onComplete) {
           var url = restapiV1Root + 'master/submitdag';
-          return $http.post(url, args).then(function(response) {
+          return $http.post(url, args).then(function (response) {
             if (onComplete) {
               onComplete(decodeSuccessResponse(response.data));
             }
-          }, function(response) {
+          }, function (response) {
             if (onComplete) {
               onComplete(decodeErrorResponse(response.data));
             }
@@ -168,7 +168,7 @@ angular.module('dashboard')
         },
 
         /** Upload a set of JAR files */
-        uploadJars: function(files, onComplete) {
+        uploadJars: function (files, onComplete) {
           var upload = Upload.upload({
             url: restapiV1Root + 'master/uploadjar',
             method: 'POST',
@@ -176,11 +176,11 @@ angular.module('dashboard')
             fileFormDataName: 'jar'
           });
 
-          upload.then(function(response) {
+          upload.then(function (response) {
             if (onComplete) {
               onComplete(decodeSuccessResponse({files: response.data}));
             }
-          }, function(response) {
+          }, function (response) {
             if (onComplete) {
               onComplete(decodeErrorResponse(response.data));
             }
@@ -188,14 +188,14 @@ angular.module('dashboard')
         },
 
         /** Add a new worker */
-        addWorker: function(onComplete) {
+        addWorker: function (onComplete) {
           var count = 1;
           var url = restapiV1Root + 'supervisor/addworker/' + count;
-          return $http.post(url).then(function(response) {
+          return $http.post(url).then(function (response) {
             if (angular.isFunction(onComplete)) {
               onComplete(decodeSuccessResponse(response.data));
             }
-          }, function(response) {
+          }, function (response) {
             if (angular.isFunction(onComplete)) {
               onComplete(decodeErrorResponse(response.data));
             }
@@ -203,13 +203,13 @@ angular.module('dashboard')
         },
 
         /** Remove a new worker */
-        removeWorker: function(workerId, onComplete) {
+        removeWorker: function (workerId, onComplete) {
           var url = restapiV1Root + 'supervisor/removeworker/' + workerId;
-          return $http.post(url).then(function(response) {
+          return $http.post(url).then(function (response) {
             if (angular.isFunction(onComplete)) {
               onComplete(decodeSuccessResponse(response.data));
             }
-          }, function(response) {
+          }, function (response) {
             if (angular.isFunction(onComplete)) {
               onComplete(decodeErrorResponse(response.data));
             }
@@ -217,7 +217,7 @@ angular.module('dashboard')
         },
 
         /** Replace a dag processor at runtime */
-        replaceDagProcessor: function(files, formFormNames, appId, oldProcessorId, newProcessorDescription, onComplete) {
+        replaceDagProcessor: function (files, formFormNames, appId, oldProcessorId, newProcessorDescription, onComplete) {
           var url = restapiV1Root + 'appmaster/' + appId + '/dynamicdag';
           var args = {
             "$type": 'io.gearpump.streaming.appmaster.DagManager.ReplaceProcessor',
@@ -229,7 +229,7 @@ angular.module('dashboard')
           url += '?args=' + encodeURIComponent(angular.toJson(args));
 
           var promise;
-          var filtered = _.filter(files, function(file) {
+          var filtered = _.filter(files, function (file) {
             return file;
           });
           if (filtered.length) {
@@ -243,11 +243,11 @@ angular.module('dashboard')
             promise = $http.post(url);
           }
 
-          promise.then(function() {
+          promise.then(function () {
             if (onComplete) {
               onComplete({success: true});
             }
-          }, function(response) {
+          }, function (response) {
             if (onComplete) {
               onComplete({success: false, reason: response.data});
             }
@@ -255,8 +255,8 @@ angular.module('dashboard')
         },
 
         /** Return the service version in onData callback */
-        serviceVersion: function(onData) {
-          return $http.get(conf.restapiRoot + 'version').then(function(response) {
+        serviceVersion: function (onData) {
+          return $http.get(conf.restapiRoot + 'version').then(function (response) {
             if (angular.isFunction(onData)) {
               onData(response.data);
             }

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/styles/dashboard.css
----------------------------------------------------------------------
diff --git a/services/dashboard/styles/dashboard.css b/services/dashboard/styles/dashboard.css
index 8062959..32a52b3 100644
--- a/services/dashboard/styles/dashboard.css
+++ b/services/dashboard/styles/dashboard.css
@@ -77,13 +77,21 @@ h4, table > caption {
 }
 
 @-webkit-keyframes spin2 {
-  from { -webkit-transform: rotate(0deg); }
-  to { -webkit-transform: rotate(360deg); }
+  from {
+    -webkit-transform: rotate(0deg);
+  }
+  to {
+    -webkit-transform: rotate(360deg);
+  }
 }
 
 @keyframes spin {
-  from { transform: scale(1) rotate(0deg); }
-  to { transform: scale(1) rotate(360deg); }
+  from {
+    transform: scale(1) rotate(0deg);
+  }
+  to {
+    transform: scale(1) rotate(360deg);
+  }
 }
 
 /* Help text */

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/views/apps/app/alerts_table.html
----------------------------------------------------------------------
diff --git a/services/dashboard/views/apps/app/alerts_table.html b/services/dashboard/views/apps/app/alerts_table.html
index b545165..c463be3 100644
--- a/services/dashboard/views/apps/app/alerts_table.html
+++ b/services/dashboard/views/apps/app/alerts_table.html
@@ -1,8 +1,8 @@
-<sortable-table
-  caption="Alerts"
-  columns-bind="table.cols" records-bind="table.rows" pagination="4">
-  <div class="table-no-data-sm">
-    <h5><span class="glyphicon glyphicon-bullhorn"></span>
-      No alert reported so far</h5>
-  </div>
+<sortable-table
+  caption="Alerts"
+  columns-bind="table.cols" records-bind="table.rows" pagination="4">
+  <div class="table-no-data-sm">
+    <h5><span class="glyphicon glyphicon-bullhorn"></span>
+      No alert reported so far</h5>
+  </div>
 </sortable-table>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/views/apps/app/alerts_table.js
----------------------------------------------------------------------
diff --git a/services/dashboard/views/apps/app/alerts_table.js b/services/dashboard/views/apps/app/alerts_table.js
index 86bf3b1..014f396 100644
--- a/services/dashboard/views/apps/app/alerts_table.js
+++ b/services/dashboard/views/apps/app/alerts_table.js
@@ -5,7 +5,7 @@
 
 angular.module('dashboard')
 
-  .directive('alertsTable', function() {
+  .directive('alertsTable', function () {
     'use strict';
 
     return {
@@ -16,7 +16,7 @@ angular.module('dashboard')
         alerts: '=alertsBind'
       },
       controller: ['$scope', '$sortableTableBuilder',
-        function($scope, $stb) {
+        function ($scope, $stb) {
           $scope.table = {
             cols: [
               $stb.indicator().key('severity').canSort().styleClass('td-no-padding').done(),
@@ -33,7 +33,7 @@ angular.module('dashboard')
 
           function updateTable(alerts) {
             $scope.table.rows = $stb.$update($scope.table.rows,
-              _.map(alerts, function(alert) {
+              _.map(alerts, function (alert) {
                 var severity = severityLookup[alert.severity];
                 return {
                   severity: {
@@ -47,7 +47,7 @@ angular.module('dashboard')
               }));
           }
 
-          $scope.$watch('alerts', function(alerts) {
+          $scope.$watch('alerts', function (alerts) {
             updateTable(alerts);
           });
         }]

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/views/apps/app/app.js
----------------------------------------------------------------------
diff --git a/services/dashboard/views/apps/app/app.js b/services/dashboard/views/apps/app/app.js
index 6372756..911e480 100644
--- a/services/dashboard/views/apps/app/app.js
+++ b/services/dashboard/views/apps/app/app.js
@@ -6,7 +6,7 @@
 angular.module('dashboard')
 
   .config(['$stateProvider',
-    function($stateProvider) {
+    function ($stateProvider) {
       'use strict';
 
       $stateProvider
@@ -16,7 +16,7 @@ angular.module('dashboard')
           templateUrl: 'views/apps/app/app.html',
           controller: 'AppCtrl',
           resolve: {
-            app0: ['$stateParams', 'models', function($stateParams, models) {
+            app0: ['$stateParams', 'models', function ($stateParams, models) {
               return models.$get.app($stateParams.appId);
             }]
           }
@@ -27,11 +27,11 @@ angular.module('dashboard')
  * This controller is used to obtain app. All nested views will read status from here.
  */
   .controller('AppCtrl', ['$scope', 'app0',
-    function($scope, app0) {
+    function ($scope, app0) {
       'use strict';
 
       $scope.app = app0.$data();
-      app0.$subscribe($scope, function(app) {
+      app0.$subscribe($scope, function (app) {
         $scope.app = app;
       });
     }])

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/c176e448/services/dashboard/views/apps/app/executors_table.html
----------------------------------------------------------------------
diff --git a/services/dashboard/views/apps/app/executors_table.html b/services/dashboard/views/apps/app/executors_table.html
index e7ca23c..ca58145 100644
--- a/services/dashboard/views/apps/app/executors_table.html
+++ b/services/dashboard/views/apps/app/executors_table.html
@@ -1,5 +1,5 @@
-<sortable-table
-  caption="Executors"
-  caption-tooltip="{{whatIsExecutor}}"
-  columns-bind="table.cols" records-bind="table.rows" pagination="4">
+<sortable-table
+  caption="Executors"
+  caption-tooltip="{{whatIsExecutor}}"
+  columns-bind="table.cols" records-bind="table.rows" pagination="4">
 </sortable-table>
\ No newline at end of file