You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@griffin.apache.org by gu...@apache.org on 2017/06/27 06:31:52 UTC

incubator-griffin git commit: Fix bugs

Repository: incubator-griffin
Updated Branches:
  refs/heads/master 0132a58d4 -> 3daf27b86


Fix bugs

Author: Yang <xi...@ebay.com>

Closes #94 from RachelYang2/fix_bugs.


Project: http://git-wip-us.apache.org/repos/asf/incubator-griffin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-griffin/commit/3daf27b8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-griffin/tree/3daf27b8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-griffin/diff/3daf27b8

Branch: refs/heads/master
Commit: 3daf27b86098b6dbdf4d452ea51f22c98535069e
Parents: 0132a58
Author: Yang <xi...@ebay.com>
Authored: Tue Jun 27 14:31:46 2017 +0800
Committer: Lionel Liu <bh...@163.com>
Committed: Tue Jun 27 14:31:46 2017 +0800

----------------------------------------------------------------------
 ui/index.html                             | 16 ++++++------
 ui/js/controllers/bigChart-ctrl.js        | 32 +++++++++++++++---------
 ui/js/controllers/createdataasset-ctrl.js | 10 ++++----
 ui/js/controllers/createjob-ac-ctrl.js    | 17 +++++++------
 ui/js/controllers/createrule-ac-ctrl.js   | 29 ++++++++++++----------
 ui/js/controllers/dataassets-ctrl.js      | 18 ++++++++------
 ui/js/controllers/detail-ctrl.js          | 24 ++++++++++++------
 ui/js/controllers/editdataasset-ctrl.js   |  9 ++++---
 ui/js/controllers/footer-ctrl.js          |  8 +++---
 ui/js/controllers/health-ctrl.js          | 22 ++++++++---------
 ui/js/controllers/job-ctrl.js             | 26 +++++++++++---------
 ui/js/controllers/metrics-ctrl.js         | 10 +++++---
 ui/js/controllers/rule-ctrl.js            | 34 ++++++++++++++------------
 ui/js/controllers/sidebar-ctrl.js         | 18 +++++++-------
 ui/js/controllers/viewrule-ctrl.js        | 16 +++++++-----
 ui/js/services/bark-chart.js              |  2 +-
 ui/js/services/services.js                |  4 +--
 ui/pages/dataassets/dataassets.html       |  2 +-
 ui/pages/jobs/createjob-ac.html           | 14 +++++++----
 ui/pages/jobs/jobs.html                   |  2 +-
 ui/pages/measures/measures.html           |  6 ++---
 ui/sidebar.html                           |  8 +++---
 22 files changed, 188 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/index.html
----------------------------------------------------------------------
diff --git a/ui/index.html b/ui/index.html
index 3b10ae7..aacb9e9 100644
--- a/ui/index.html
+++ b/ui/index.html
@@ -66,26 +66,26 @@ limitations under the License.
                 <span class="icon-bar"></span>
                 <span class="icon-bar"></span>
             </button>
-            <a href="#/" class="navbar-brand" style="padding-top:5px;padding-bottom:0;"><img src="/img/logo.gif" title="Data Quality Service" style="max-height:40px;"/></a>
+            <a href="#!/" class="navbar-brand" style="padding-top:5px;padding-bottom:0;"><img src="/img/logo.gif" title="Data Quality Service" style="max-height:40px;"/></a>
         </div>
 
         <!-- Collect the nav links, forms, and other content for toggling -->
         <div class="collapse navbar-collapse" id="navbar-collapse">
             <ul class="nav navbar-nav">
-                <li ng-class="{active:isActive('/health')}"><a href="#/health"><i class="icon-home icon-white"></i> Health</a></li>
-                <li ng-class="{active:isActive('/measures') || isActive('/createrule')}"><a href="#/measures"><i class="icon-folder-open icon-white"></i> Measures</a></li>
+                <li ng-class="{active:isActive('/health')}"><a href="#!/health"><i class="icon-home icon-white"></i> Health</a></li>
+                <li ng-class="{active:isActive('/measures') || isActive('/createrule')}"><a href="#!/measures"><i class="icon-folder-open icon-white"></i> Measures</a></li>
                 <!-- <li><a href="#/undercons"><i class="icon-calendar icon-white"></i> Data Profiling</a></li> -->
-                <li ng-class="{active:isActive('/jobs') || isActive('/jobs')}"><a href="#/jobs"><i class="icon-calendar icon-white"></i> Jobs</a></li>
+                <li ng-class="{active:isActive('/jobs') || isActive('/jobs')}"><a href="#!/jobs"><i class="icon-calendar icon-white"></i> Jobs</a></li>
 
-                <li ng-class="{active:isActive('/mydashboard') || isActive('/subscribemodel')}"><a href="#/mydashboard"><i class="icon-calendar icon-white"></i> My Dashboard</a></li>
+                <li ng-class="{active:isActive('/mydashboard') || isActive('/subscribemodel')}"><a href="#!/mydashboard"><i class="icon-calendar icon-white"></i> My Dashboard</a></li>
             </ul>
 
             <ul class="nav navbar-nav navbar-right">
                 <li class="dropdown">
                     <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{fullName}} <i class="fa fa-user fa-fw"></i><span class="caret"></span></a>
                     <ul class="dropdown-menu dropdown-user">
-                        <li><a href="#/undercons"><i class="fa fa-user fa-fw"></i> User Profile</a></li>
-                        <li><a href="#/undercons"><i class="fa fa-gear fa-fw"></i> Settings</a></li>
+                        <li><a href="#!/undercons"><i class="fa fa-user fa-fw"></i> User Profile</a></li>
+                        <li><a href="#!/undercons"><i class="fa fa-gear fa-fw"></i> Settings</a></li>
                         <li class="divider"></li>
                         <li><a href="/apidocs/index.html" target="_blank"><i class="fa fa-book fa-fw"></i> API DOCs</a></li>
                         <li><a href="https://github.com/eBay/griffin/blob/master/griffin-doc/userguide.md" target="_blank"><i class="fa fa-question-circle fa-fw"></i> User Guide</a></li>
@@ -137,7 +137,7 @@ limitations under the License.
                 <p ng-show="!notifications">{{timestamp|date:'short'}} - Welcome <label>{{fullName}}</label>!</p>
                 <p ng-repeat="r in notifications">
                     {{r.timestamp|date:'short'}} - <label>{{r.owner}}</label> {{r.operation}}d a {{r.target}} named
-                    <a ng-if="r.target=='model'" href="#/viewrule/{{r.name}}">{{r.name}}</a>
+                    <a ng-if="r.target=='model'" href="#!/viewrule/{{r.name}}">{{r.name}}</a>
                     <label ng-if="r.target=='dataasset'">"{{r.name}}"</label>
                 </p>
             </div><!-- /row -->

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/bigChart-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/bigChart-ctrl.js b/ui/js/controllers/bigChart-ctrl.js
index 4558142..6b986ef 100644
--- a/ui/js/controllers/bigChart-ctrl.js
+++ b/ui/js/controllers/bigChart-ctrl.js
@@ -22,7 +22,8 @@ define(['./module'], function(controllers) {
 
       function pageInit() {
         resizeBigChart();
-        $scope.bigChart = echarts.init($('#bigChartDiv').get(0), 'dark');
+        // $scope.bigChart = echarts.init($('#bigChartDiv').get(0), 'dark');
+        $rootScope.bigChart = echarts.init($('#bigChartDiv').get(0), 'dark');
       }
 
       function resizeBigChart() {
@@ -33,8 +34,8 @@ define(['./module'], function(controllers) {
       $scope.closeBigChart = function(){
         console.log('close big chart!');
         // $('#bigChartContainer').hide();
-        history.back();
-        // $location.path('/health');
+        // history.back();
+        $location.path('/health');
         // $('#mainWindow').show();
       }
 
@@ -45,16 +46,25 @@ define(['./module'], function(controllers) {
       $(window).resize(function() {
         console.log('big chart resize');
           resizeBigChart();
-          $scope.bigChart.resize();
+          $rootScope.bigChart.resize();
       });
 
-      $rootScope.showBigChart = function(option) {
-        $scope.selectedModel = option.title.text;
-        $('#bigChartContainer').show();
-        // $('#mainWindow').hide();
-        $scope.bigChart.clear();
-        $scope.bigChart.setOption(option);
-      }
+      // $rootScope.showBigChart = function(option) {
+      //   $scope.selectedModel = option.title.text;
+      //   $('#bigChartContainer').show();
+      //   // $('#mainWindow').hide();
+      //   $scope.bigChart.clear();
+      //   $scope.bigChart.setOption(option);
+      // }
+         if($rootScope.showBigChart==undefined){
+              $rootScope.showBigChart = function(option) {
+              $scope.selectedModel = option.title.text;
+              $('#bigChartContainer').show();
+              // $('#mainWindow').hide();
+              $rootScope.bigChart.clear();
+              $rootScope.bigChart.setOption(option);
+            }
+          }
 
     }]);
 });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/createdataasset-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/createdataasset-ctrl.js b/ui/js/controllers/createdataasset-ctrl.js
index a92a844..25833fa 100644
--- a/ui/js/controllers/createdataasset-ctrl.js
+++ b/ui/js/controllers/createdataasset-ctrl.js
@@ -30,8 +30,8 @@ define(['./module'], function (controllers) {
         // $scope.regex = new RegExp('^\\/(?:[0-9a-zA-Z\\_\\-\\.]+\\/?)+');
 
         var allModels = $config.uri.dbtree;
-        $http.get(allModels).success(function(data) {
-            $scope.platformOptions = data;
+        $http.get(allModels).then(function successCallback(data) {
+            $scope.platformOptions = data.data;
         });
 
         //$scope.platformOptions = [{"id":null,"platform":"Teradata","systems":[{"id":null,"name":"gdw_tables","assets":[{"id":108,"name":"dw_bid"},{"id":109,"name":"dw_trans"}]}]},{"id":null,"platform":"Apollo","systems":[{"id":null,"name":"Sojourner","assets":[{"id":22,"name":"ubi_event"}]},{"id":null,"name":"SiteSpeed","assets":[{"id":21,"name":"sitespeed"}]},{"id":null,"name":"PDS","assets":[{"id":20,"name":"last_categories_accessed"}]},{"id":null,"name":"Bullseye","assets":[{"id":1,"name":"be_view_event_queue"},{"id":2,"name":"be_search_event_queue"},{"id":3,"name":"be_item_watch_event_queue"},{"id":4,"name":"be_bid_event_queue"},{"id":5,"name":"be_transaction_event_queue"},{"id":6,"name":"dmg"},{"id":7,"name":"loyaltysgmnt"},{"id":8,"name":"cust_dna_cat_score"},{"id":9,"name":"badge_interest"},{"id":10,"name":"cust_dna_vq_feed"},{"id":11,"name":"user_dna"},{"id":12,"name":"adchoice_user_pref"},{"id":13,"name":"cust_dna_vq_cat_feed"},{"id":14,"name":"cpcp_dealsv17"},{"id":15,"n
 ame":"bbe_tbl_trx"},{"id":17,"name":"bbe_tbl_neg"},{"id":16,"name":"bbe_tbl_neu"},{"id":19,"name":"rtm_segment_dict"},{"id":18,"name":"bbe_tbl_pos"}]}]}];
@@ -152,7 +152,7 @@ define(['./module'], function (controllers) {
                   'owner' : $scope.form.basic.owner
                 }
 
-                $http.post($config.uri.adddataasset, msg).success(function() {
+                $http.post($config.uri.adddataasset, msg).then(function successCallback() {
                     $('#confirm-pu').on('hidden.bs.modal', function(e) {
                         $('#confirm-pu').off('hidden.bs.modal');
                         $location.path('/dataassets');
@@ -161,8 +161,8 @@ define(['./module'], function (controllers) {
 
 	                  $('#confirm-pu').modal('hide');
 
-                }).error(function(data){
-                  toaster.pop('error', 'Save data asset failed, please try again!', data.message);
+                 },function errorCallback(response) {
+                    toaster.pop('error', 'Error when creating dataasset', response.message);
                 });
             },
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/createjob-ac-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/createjob-ac-ctrl.js b/ui/js/controllers/createjob-ac-ctrl.js
index 14f11ad..ff231dc 100644
--- a/ui/js/controllers/createjob-ac-ctrl.js
+++ b/ui/js/controllers/createjob-ac-ctrl.js
@@ -39,8 +39,8 @@ define(['./module'], function(controllers) {
             // $('.formStep').css({height: 800});
         });
         var getMeasureUrl = $config.uri.getMeasuresByOwner+$scope.ntAccount;
-        $http.get(getMeasureUrl).success(function(res){
-            angular.forEach(res,function(measure){
+        $http.get(getMeasureUrl).then(function successCallback(res){
+            angular.forEach(res.data,function(measure){
                 $scope.Measures.push(measure);
             })
             console.log($scope.Measures);
@@ -141,7 +141,7 @@ define(['./module'], function(controllers) {
                 var newJob = $config.uri.addJobs + this.data.groupName + '/' + jobName + '/' + $scope.Measures[$scope.measure];
                 console.log(newJob);
                 console.log(this.data);
-                $http.post(newJob, this.data).success(function(data) {
+                $http.post(newJob, this.data).then(function successCallback(data) {
                 	// if(data.status=='0')
                 	// {
                 	  console.log(data);
@@ -162,10 +162,13 @@ define(['./module'], function(controllers) {
                 	// 	errorMessage(0, data.result);
                 	// }
 
-                }).error(function(data){
-                  // errorMessage(0, 'Save model failed, please try again!');
-                  toaster.pop('error', 'Save job failed, please try again!', data.message);
-                });
+                // }).error(function(data){
+                //   // errorMessage(0, 'Save model failed, please try again!');
+                //   toaster.pop('error', 'Save job failed, please try again!', data.message);
+                // });
+                      },function errorCallback(response) {
+                        toaster.pop('error', 'Error when creating job', response.message);
+                        });
 
             },
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/createrule-ac-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/createrule-ac-ctrl.js b/ui/js/controllers/createrule-ac-ctrl.js
index fb30f80..97d33e0 100644
--- a/ui/js/controllers/createrule-ac-ctrl.js
+++ b/ui/js/controllers/createrule-ac-ctrl.js
@@ -33,10 +33,10 @@ define(['./module'], function(controllers) {
         var dbtreeUrl = $config.uri.dbtree;
         var schemaDefinitionUrl = $config.uri.schemadefinition;
 
-        $http.get(dbtreeUrl).success(function(data) {
+        $http.get(dbtreeUrl).then(function successCallback(data) {
                     var dbList = [];
-                    if (data) {
-                        angular.forEach(data,function(db,key){
+                    if (data.data) {
+                        angular.forEach(data.data,function(db,key){
                         console.log(db);
                         var dbNode = {
                             name: key,
@@ -88,9 +88,9 @@ define(['./module'], function(controllers) {
 
             // $scope.schemaCollection = null;
             if (newValue) {
-                $http.get(schemaDefinitionUrl+ '/' + newValue.parent[0].dbName+'/table/'+newValue.name).success(function(data) {
+                $http.get(schemaDefinitionUrl+ '/' + newValue.parent[0].dbName+'/table/'+newValue.name).then(function successCallback(data) {
                 console.log(data);
-                $scope.schemaCollection = data.sd.cols;
+                $scope.schemaCollection = data.data.sd.cols;
                 console.log($scope.schemaCollection);
                 });
             }
@@ -144,9 +144,9 @@ define(['./module'], function(controllers) {
 //
 //            }
             if (newValue) {
-                $http.get(schemaDefinitionUrl + '/' + newValue.parent[0].dbName+'/table/'+newValue.name).success(function(data) {
+                $http.get(schemaDefinitionUrl + '/' + newValue.parent[0].dbName+'/table/'+newValue.name).then(function successCallback(data) {
                 console.log(data);
-                $scope.schemaCollectionTarget = data.sd.cols;
+                $scope.schemaCollectionTarget = data.data.sd.cols;
                 console.log($scope.schemaCollectionTarget);
                 });
             }
@@ -458,11 +458,11 @@ define(['./module'], function(controllers) {
                 console.log(JSON.stringify($scope.form.data));
 
                 var newModel = $config.uri.addModels;
-                $http.post(newModel, this.data).success(function(data) {
+                $http.post(newModel, this.data).then(function successCallback(data) {
                 	// if(data.status=='0')
                 	// {
                 	  console.log(data);
-                      if(data=='CREATE_MEASURE_FAIL_DUPLICATE'){
+                      if(data.data=='CREATE_MEASURE_FAIL_DUPLICATE'){
                           toaster.pop('error', 'Please modify the name of measure, because there is already a same measure in database ', data.message);
                           return;
                       }
@@ -479,10 +479,13 @@ define(['./module'], function(controllers) {
                 	// 	errorMessage(0, data.result);
                 	// }
 
-                }).error(function(data){
-                  // errorMessage(0, 'Save model failed, please try again!');
-                  toaster.pop('error', 'Save measure failed, please try again!', data.message);
-                });
+                // }).error(function(data){
+                //   // errorMessage(0, 'Save model failed, please try again!');
+                //   toaster.pop('error', 'Save measure failed, please try again!', data.message);
+                // });
+                      },function errorCallback(response) {
+                            toaster.pop('error', 'Save measure failed, please try again!', response.message);
+                    });
 
             },
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/dataassets-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/dataassets-ctrl.js b/ui/js/controllers/dataassets-ctrl.js
index 4bd497e..08b4194 100644
--- a/ui/js/controllers/dataassets-ctrl.js
+++ b/ui/js/controllers/dataassets-ctrl.js
@@ -31,14 +31,14 @@ define(['./module'], function (controllers) {
         number = tableState.pagination.number || 10;
 
         if(start == 0 && !$scope.rowCollection){
-          $http.get(allModels).success(function(data) {
-            if(data){
+          $http.get(allModels).then(function successCallback(data) {
+            if(data.data){
               // data.sort(function(a,b){
               //   return -(a.timestamp - b.timestamp);
               // });
             }
             originalRowCollection = new Array();
-            angular.forEach(data,function(db){
+            angular.forEach(data.data,function(db){
               angular.forEach(db,function(table){
                 originalRowCollection.push(table);
               });
@@ -106,7 +106,7 @@ define(['./module'], function (controllers) {
 		};
 
 		$scope.sendDeleteRequest = function() {
-			$http.delete($config.uri.deletedataasset+'/'+$scope.selectedRow._id).success(function(data){
+			$http.delete($config.uri.deletedataasset+'/'+$scope.selectedRow._id).then(function successCallback(data){
 
 					$('#confirm-delete').modal('hide');
           var index = $scope.rowCollection.indexOf($scope.selectedRow);
@@ -115,9 +115,13 @@ define(['./module'], function (controllers) {
           index = $scope.displayed.indexOf($scope.selectedRow);
           $scope.displayed.splice(index, 1);
 
-			}).error(function(data, status){
-        toaster.pop('error', 'Error when deleting record', data);
-      });
+			// }).error(function(data, status){
+   //      toaster.pop('error', 'Error when deleting record', data);
+   //    });
+            },function errorCallback(response) {
+               toaster.pop('error', 'Error when deleting record', response.message);
+       });
+
 
 		}
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/detail-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/detail-ctrl.js b/ui/js/controllers/detail-ctrl.js
index acb798b..6c56cee 100644
--- a/ui/js/controllers/detail-ctrl.js
+++ b/ui/js/controllers/detail-ctrl.js
@@ -22,20 +22,30 @@ define(['./module'], function (controllers) {
         var echarts = require('echarts');
         var formatUtil = echarts.format;
 
+       if($rootScope.showBigChart==undefined)
+        {
+            $rootScope.showBigChart = function(option) {
+                $scope.selectedModel = option.title.text;
+                $('#bigChartContainer').show();
+                // $('#mainWindow').hide();
+                $rootScope.bigChart.clear();
+                $rootScope.bigChart.setOption(option);
+            }
+        }
 
         var showBig = function(metricName){
           var metricDetailUrl = $config.uri.dashboard;
-          // var metricDetailUrl = 'data.json';
-          $http.post(metricDetailUrl, {"query": {  "bool":{"filter":[ {"term" : {"name": metricName }}]}},  "sort": [{"tmst": {"order": "asc"}}],"size":1000}).success(function(data) {
-            // $http.get(metricDetailUrl).success(function (data) {
+//          var metricDetailUrl = 'data.json';
+           $http.post(metricDetailUrl, {"query": {  "bool":{"filter":[ {"term" : {"name": metricName }}]}},  "sort": [{"tmst": {"order": "asc"}}],"size":1000}).then(function successCallback(data) {
+//            $http.get(metricDetailUrl).then(function successCallback(data) {
                 // body...
             
             var metric = new Object();
-            metric.name = data.hits.hits[0]._source.name;
-            metric.timestamp = data.hits.hits[data.hits.hits.length-1]._source.tmst;
-            metric.dq = data.hits.hits[data.hits.hits.length-1]._source.matched/data.hits.hits[data.hits.hits.length-1]._source.matched*100;
+            metric.name = data.data.hits.hits[0]._source.name;
+            metric.timestamp = data.data.hits.hits[data.data.hits.hits.length-1]._source.tmst;
+            metric.dq = data.data.hits.hits[data.data.hits.hits.length-1]._source.matched/data.data.hits.hits[data.data.hits.hits.length-1]._source.matched*100;
             metric.details = new Array();
-            angular.forEach(data.hits.hits,function(point){
+            angular.forEach(data.data.hits.hits,function(point){
                 metric.details.push(point);
             })
             $rootScope.showBigChart($barkChart.getOptionBig(metric));

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/editdataasset-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/editdataasset-ctrl.js b/ui/js/controllers/editdataasset-ctrl.js
index 858d07f..971ac3a 100644
--- a/ui/js/controllers/editdataasset-ctrl.js
+++ b/ui/js/controllers/editdataasset-ctrl.js
@@ -57,7 +57,8 @@ define(['./module'], function (controllers) {
 
         var assetUri = $config.uri.getdataasset + '/' + $scope.assetId;
         $scope.getDataAsset = function(){
-            $http.get(assetUri).success(function(data) {
+            $http.get(assetUri).then(function successCallback(data) {
+                data = data.data;
                 $scope.form.basic.assetName = data.assetName;
                 $scope.form.basic.path = data.assetHDFSPath;
                 $scope.form.basic.type = $scope.assetTypeOptions.indexOf(data.assetType).toString();
@@ -187,14 +188,14 @@ define(['./module'], function (controllers) {
                     'partitions' : $scope.form.basic.partitions
                 }
 
-                $http.put($config.uri.updatedataasset, msg).success(function(data) {
-                	if(data.result=='success')
+                $http.put($config.uri.updatedataasset, msg).then(function successCallback(data) {
+                	if(data.data.result=='success')
                 	{
                       	$('#confirm-pu').modal('hide');
                     }
                 	else
                 	{
-                		errorMessage(0, data.result);
+                		errorMessage(0, data.data.result);
                 	}
                 });
             },

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/footer-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/footer-ctrl.js b/ui/js/controllers/footer-ctrl.js
index 2788e98..b275a07 100644
--- a/ui/js/controllers/footer-ctrl.js
+++ b/ui/js/controllers/footer-ctrl.js
@@ -47,10 +47,10 @@ define(['./module'], function (controllers) {
 
       function retrieveNotifications(){
         var notificationUrl = $config.uri.getnotifications;
-        $http.get(notificationUrl).success(function(data) {
-          // $scope.allNotifications = data.slice(0, 15);
-          $scope.notifications = data.slice(0, 3);
-        });
+        // $http.get(notificationUrl).success(function(data) {
+        //   // $scope.allNotifications = data.slice(0, 15);
+        //   $scope.notifications = data.slice(0, 3);
+        // });
       }
 
     }]);

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/health-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/health-ctrl.js b/ui/js/controllers/health-ctrl.js
index 83d1bbb..240f647 100644
--- a/ui/js/controllers/health-ctrl.js
+++ b/ui/js/controllers/health-ctrl.js
@@ -31,28 +31,28 @@ define(['./module'], function (controllers) {
             $scope.$emit('initReq');
 
 //            var url = $config.uri.heatmap;
-            var url_dashboard = $config.uri.dashboard ;
-            // var url_dashboard = 'data.json';
-            var url_organization = $config.uri.organization;
-            // var url_organization = 'org.json';
-            $http.get(url_organization).success(function(res){
+             var url_dashboard = $config.uri.dashboard ;
+//            var url_dashboard = 'data.json';
+             var url_organization = $config.uri.organization;
+//            var url_organization = 'org.json';
+            $http.get(url_organization).then(function successCallback(res){
                var orgNode = null;
-               angular.forEach(res, function(value,key) {
+               angular.forEach(res.data, function(value,key) {
                     orgNode = new Object();
                     $scope.orgs.push(orgNode);
                     orgNode.name = key;
                     orgNode.assetMap = value;
                });
                $scope.originalOrgs = angular.copy($scope.orgs);
-                $http.post(url_dashboard, {"query": {"match_all":{}},  "sort": [{"tmst": {"order": "asc"}}],"size":1000}).success(function(data) {
-//                  $http.get(url_dashboard).success(function(data){
-                    angular.forEach(data.hits.hits, function(sys) {
+                 $http.post(url_dashboard, {"query": {"match_all":{}},  "sort": [{"tmst": {"order": "asc"}}],"size":1000}).then(function successCallback(data) {
+//                 $http.get(url_dashboard).then(function successCallback(data){
+                    angular.forEach(data.data.hits.hits, function(sys) {
                         var chartData = sys._source;
                         chartData.sort = function(a,b){
                             return a.tmst - b.tmst;
                         }
                     });
-                    $scope.originalData = angular.copy(data);
+                    $scope.originalData = angular.copy(data.data);
 
                     $scope.myData = angular.copy($scope.originalData.hits.hits);
                     $scope.metricName = [];
@@ -231,7 +231,7 @@ define(['./module'], function (controllers) {
                     // param.event.event.preventDefault();
                     if (param.data.name) {
                         // $location.path('/detailed/'+param.data.name);
-                        window.location.href = '/#/detailed/'+param.data.name;
+                        window.location.href = '/#!/detailed/'+param.data.name;
                     }
                 });
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/job-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/job-ctrl.js b/ui/js/controllers/job-ctrl.js
index 4c185b1..4472b3a 100644
--- a/ui/js/controllers/job-ctrl.js
+++ b/ui/js/controllers/job-ctrl.js
@@ -34,14 +34,14 @@ define(['./module'], function (controllers) {
         number = tableState.pagination.number || 10;
 
         if(start == 0 && !$scope.rowCollection){
-         $http.get(allJobs).success(function(data) {
-           data.sort(function(a,b){
+         $http.get(allJobs).then(function successCallback(data) {
+           data.data.sort(function(a,b){
             var dateA = Date.parse(new Date(a.jobName.split('-')[3]))/1000;
             var dateB = Date.parse(new Date(b.jobName.split('-')[3]))/1000;
                 return -(dateA-dateB);
               });
-           originalRowCollection = angular.copy(data);
-           $scope.rowCollection = angular.copy(data);
+           originalRowCollection = angular.copy(data.data);
+           $scope.rowCollection = angular.copy(data.data);
 
            $scope.displayed = $scope.rowCollection.slice(start, start+number);
            tableState.pagination.numberOfPages = Math.ceil($scope.rowCollection.length/number);
@@ -56,9 +56,10 @@ define(['./module'], function (controllers) {
           $('#'+p_index+'-'+number).addClass('page-active');
           $('#'+p_index+'-'+number).siblings().removeClass('page-active');
           $scope.currentJob = row;
+
           var allInstances = $config.uri.getInstances + 'BA/' + row.jobName +'/0/100';
-          $http.get(allInstances).success(function(data){
-            row.instances = data;
+          $http.get(allInstances).then(function successCallback(data){
+            row.instances = data.data;
             row.pageCount = new Array();
             for(var i = 0;i<Math.ceil(row.instances.length/10);i++){
                 row.pageCount.push(i);
@@ -67,9 +68,9 @@ define(['./module'], function (controllers) {
             $('#'+p_index+'-'+number).siblings().removeClass('page-active');
           });
           var url = $config.uri.getInstances + 'BA/' + row.jobName + '/'+number+'/10';
-          $http.get(url).success(function(data){
+          $http.get(url).then(function successCallback(data){
               // row.instances = data;
-              row.currentInstances = data;
+              row.currentInstances = data.data;
               $('#'+p_index+'-'+number).addClass('page-active');
               $('#'+p_index+'-'+number).siblings().removeClass('page-active');
           });
@@ -97,7 +98,7 @@ define(['./module'], function (controllers) {
       $scope.confirmDelete = function(){
         var row = $scope.deletedBriefRow;
         var deleteModelUrl = $config.uri.deleteJob + row.groupName+'/'+row.jobName;
-        $http.delete(deleteModelUrl).success(function(){
+        $http.delete(deleteModelUrl).then(function successCallback(){
 
           var index = $scope.rowCollection.indexOf(row);
           $scope.rowCollection.splice(index, 1);
@@ -107,8 +108,11 @@ define(['./module'], function (controllers) {
 
           $('#deleteJobConfirmation').modal('hide');
 
-        }).error(function(data, status){
-          toaster.pop('error', 'Error when deleting record', data);
+        // }).error(function(data, status){
+        //   toaster.pop('error', 'Error when deleting record', data);
+        // });
+      },function errorCallback(response) {
+          toaster.pop('error', 'Error when deleting record', response.message);
         });
       }
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/metrics-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/metrics-ctrl.js b/ui/js/controllers/metrics-ctrl.js
index 4637358..820e496 100644
--- a/ui/js/controllers/metrics-ctrl.js
+++ b/ui/js/controllers/metrics-ctrl.js
@@ -29,8 +29,9 @@ define(['./module'], function(controllers) {
           var url_dashboard = $config.uri.dashboard ;
           var url_organization = $config.uri.organization;
 
-          $http.get(url_organization).success(function(res){
+          $http.get(url_organization).then(function successCallback(res){
                var orgNode = null;
+               res = res.data;
                angular.forEach(res, function(value,key) {
                     orgNode = new Object();
                     $scope.orgs.push(orgNode);
@@ -38,7 +39,9 @@ define(['./module'], function(controllers) {
                     orgNode.assetMap = value;
                });
                $scope.originalOrgs = angular.copy($scope.orgs);
-               $http.post(url_dashboard, {"query": {"match_all":{}},  "sort": [{"tmst": {"order": "asc"}}],"size":1000}).success(function(data) {
+//               $http.get(url_dashboard).then(function successCallback(data){
+                $http.post(url_dashboard, {"query": {"match_all":{}},  "sort": [{"tmst": {"order": "asc"}}],"size":1000}).then(function successCallback(data) {
+                    data = data.data;
                     angular.forEach(data.hits.hits, function(sys) {
                         var chartData = sys._source;
                         chartData.sort = function(a,b){
@@ -189,7 +192,8 @@ define(['./module'], function(controllers) {
 
         /*click the chart to be bigger*/
         $scope.showBig = function(t){
-            $rootScope.showBigChart($barkChart.getOptionBig(t));
+            // $rootScope.showBigChart($barkChart.getOptionBig(t));
+             window.location.href = '/#!/detailed/'+t.name;
         }
 
         $scope.getSample = function(item) {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/rule-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/rule-ctrl.js b/ui/js/controllers/rule-ctrl.js
index 0242528..682e364 100644
--- a/ui/js/controllers/rule-ctrl.js
+++ b/ui/js/controllers/rule-ctrl.js
@@ -37,12 +37,12 @@ define(['./module'], function (controllers) {
         number = tableState.pagination.number || 10;
 
         if(start == 0 && !$scope.rowCollection){
-         $http.get(allModels).success(function(data) {
-           data.sort(function(a,b){
+         $http.get(allModels).then(function successCallback(data) {
+           data.data.sort(function(a,b){
              return -(a.createDate - b.createDate);
            });
-           originalRowCollection = angular.copy(data);
-           $scope.rowCollection = angular.copy(data);
+           originalRowCollection = angular.copy(data.data);
+           $scope.rowCollection = angular.copy(data.data);
 
            $scope.displayed = $scope.rowCollection.slice(start, start+number);
            tableState.pagination.numberOfPages = Math.ceil($scope.rowCollection.length/number);
@@ -97,8 +97,8 @@ define(['./module'], function (controllers) {
 
       $scope.remove = function remove(row) {
         var getModelUrl = $config.uri.getModel + '/' +row.name;
-        $http.get(getModelUrl).success(function(data){
-  			  $scope.deletedRow = data;
+        $http.get(getModelUrl).then(function successCallback(data){
+  			  $scope.deletedRow = data.data;
               $scope.sourceTable = $scope.deletedRow.source.config["table.name"];
               $scope.targetTable = $scope.deletedRow.target.config["table.name"];
   		  });
@@ -110,18 +110,20 @@ define(['./module'], function (controllers) {
       $scope.confirmDelete = function(){
         var row =   $scope.deletedBriefRow;
         var deleteModelUrl = $config.uri.deleteModel + '/' + row.name;
-        $http.delete(deleteModelUrl).success(function(){
-
-          var index = $scope.rowCollection.indexOf(row);
-          $scope.rowCollection.splice(index, 1);
-
-          index = $scope.displayed.indexOf(row);
-          $scope.displayed.splice(index, 1);
-
+        $http.delete(deleteModelUrl).then(function successCallback(data){
+          if(data.data=="DELETE_MEASURE_BY_NAME_SUCCESS"){
+              var index = $scope.rowCollection.indexOf(row);
+              $scope.rowCollection.splice(index, 1);
+              index = $scope.displayed.indexOf(row);
+              $scope.displayed.splice(index, 1);
+          }
+          else {
+              toaster.pop('error', 'Error when deleting measure', data.data);
+          }
           $('#deleteConfirmation').modal('hide');
 
-        }).error(function(data, status){
-          toaster.pop('error', 'Error when deleting record', data);
+          },function errorCallback(response) {
+          toaster.pop('error', 'Error when deleting measure', response.message);
         });
       }
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/sidebar-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/sidebar-ctrl.js b/ui/js/controllers/sidebar-ctrl.js
index e64c6ea..68f67a0 100644
--- a/ui/js/controllers/sidebar-ctrl.js
+++ b/ui/js/controllers/sidebar-ctrl.js
@@ -52,7 +52,7 @@ define(['./module'], function(controllers) {
 
             $('#'+chartId).unbind('click');
             $('#'+chartId).click(function(e) {
-              window.location.href = '/#/detailed/'+$scope.finalData[parentIndex].metrics[index].name;
+              window.location.href = '/#!/detailed/'+$scope.finalData[parentIndex].metrics[index].name;
             });
 
         };
@@ -62,11 +62,11 @@ define(['./module'], function(controllers) {
         }
 
         function sideBarList(sysName){
-            var url_organization = $config.uri.organization;
-            // var url_organization = 'org.json';
-            $http.get(url_organization).success(function(res){
+             var url_organization = $config.uri.organization;
+//            var url_organization = 'org.json';
+            $http.get(url_organization).then(function successCallback(res){
                var orgNode = null;
-               angular.forEach(res, function(value,key) {
+               angular.forEach(res.data, function(value,key) {
                orgNode = new Object();
                $scope.orgs.push(orgNode);
                orgNode.name = key;
@@ -74,15 +74,15 @@ define(['./module'], function(controllers) {
                });
                $scope.originalOrg = angular.copy($scope.orgs);
                var url_briefmetrics = $config.uri.dashboard;
-               $http.post(url_briefmetrics, {"query": {"match_all":{}},  "sort": [{"tmst": {"order": "asc"}}],"size":1000}).success(function(data) {
-               // $http.get('data.json').success(function(data){
-                   angular.forEach(data.hits.hits, function(sys) {
+                $http.post(url_briefmetrics, {"query": {"match_all":{}},  "sort": [{"tmst": {"order": "asc"}}],"size":1000}).then(function successCallback(data) {
+//               $http.get('data.json').then(function successCallback(data){
+                   angular.forEach(data.data.hits.hits, function(sys) {
                         var chartData = sys._source;
                         chartData.sort = function(a,b){
                         return a.tmst - b.tmst;
                         }
                    });
-               $scope.originalData = angular.copy(data);
+               $scope.originalData = angular.copy(data.data);
                $scope.myData = angular.copy($scope.originalData.hits.hits);
                $scope.metricName = [];
                for(var i = 0;i<$scope.myData.length;i++){

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/controllers/viewrule-ctrl.js
----------------------------------------------------------------------
diff --git a/ui/js/controllers/viewrule-ctrl.js b/ui/js/controllers/viewrule-ctrl.js
index dfc3fcc..76582ff 100644
--- a/ui/js/controllers/viewrule-ctrl.js
+++ b/ui/js/controllers/viewrule-ctrl.js
@@ -25,8 +25,9 @@ define(['./module'], function (controllers) {
         $scope.$emit('initReq');
 
         var getModelUrl = $config.uri.getModel+"/"+$routeParams.modelname;
-        $http.get(getModelUrl).success(function(data){
-          $scope.ruleData = data;
+        console.log(getModelUrl);
+        $http.get(getModelUrl).then(function successCallback(data){
+          $scope.ruleData = data.data;
           $scope.sourceLength = $scope.ruleData.evaluateRule.rules.split('AND').length;
           console.log($scope.sourceLength);
 
@@ -42,9 +43,12 @@ define(['./module'], function (controllers) {
 //          $scope.targetLength = $scope.ruleData.evaluateRule.rules.split(';').length;
 
           $scope.getNumber = function(n){return new Array(n);}
-        }).error(function(data){
-          // errorMessage(0, 'Save model failed, please try again!');
-          toaster.pop('error', data.message);
+        // }).error(function(data){
+        //   // errorMessage(0, 'Save model failed, please try again!');
+        //   toaster.pop('error', data.message);
+        // });
+         },function errorCallback(response) {
+          toaster.pop('error', 'Error when deleting record', response.message);
         });
 
         $scope.anTypes = ['', 'History Trend Detection', 'Bollinger Bands Detection', 'Deviation Detection'];
@@ -71,7 +75,7 @@ define(['./module'], function (controllers) {
         var answer = confirm('Are you sure you want to deploy this model to production?')
 
         if(answer){
-          $http.get(deployModelUrl).success(function(){
+          $http.get(deployModelUrl).then(function successCallback(){
             $scope.ruleData.basic.status = 2;
             toaster.pop('info', 'Your model has been deployed to prduction!');
           });

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/services/bark-chart.js
----------------------------------------------------------------------
diff --git a/ui/js/services/bark-chart.js b/ui/js/services/bark-chart.js
index c63cb5b..192125a 100644
--- a/ui/js/services/bark-chart.js
+++ b/ui/js/services/bark-chart.js
@@ -203,7 +203,7 @@ define(['./module'], function (services) {
     var option = {
       title: {
         text:  metric.name,
-        link: '/#/viewrule/' + metric.name,
+        link: '/#!/viewrule/' + metric.name,
         target: 'self',
         left: 'center',
         textStyle: {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/js/services/services.js
----------------------------------------------------------------------
diff --git a/ui/js/services/services.js b/ui/js/services/services.js
index 3981b8f..d806b79 100644
--- a/ui/js/services/services.js
+++ b/ui/js/services/services.js
@@ -22,8 +22,8 @@ define(['./module'], function (services) {
 
 
 //    var BACKEND_SERVER = 'http://10.149.247.156:38080';
-//      var BACKEND_SERVER = 'http://localhost:8080';
-      var BACKEND_SERVER = '';
+//     var BACKEND_SERVER = 'http://localhost:8080';
+       var BACKEND_SERVER = '';
       var API_ROOT_PATH = '/api/v1';
 
 //      var ES_SERVER = 'http://10.149.247.156:59200';

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/pages/dataassets/dataassets.html
----------------------------------------------------------------------
diff --git a/ui/pages/dataassets/dataassets.html b/ui/pages/dataassets/dataassets.html
index 0cb05a5..ee9cb65 100644
--- a/ui/pages/dataassets/dataassets.html
+++ b/ui/pages/dataassets/dataassets.html
@@ -37,7 +37,7 @@ limitations under the License.
 		</tbody>
 	  	<tbody ng-repeat="row in displayed" style="word-break:break-all;">
 	    	<tr>
-	    		<td ng-class="{accordion:true}" ng-click="row.showDetail=!(row.showDetail)">
+	    		<td ng-class="{accordion:true}" ng-click="row.showDetail=!(row.showDetail)" style="cursor: pointer;">
                     <i ng-show="!row.showDetail" class="fa fa-chevron-circle-right blue"></i>
                     <i ng-show="row.showDetail" class="fa fa-chevron-circle-down blue"></i>
                     {{row.tableName}}</td>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/pages/jobs/createjob-ac.html
----------------------------------------------------------------------
diff --git a/ui/pages/jobs/createjob-ac.html b/ui/pages/jobs/createjob-ac.html
index 789e3b5..5c05e08 100644
--- a/ui/pages/jobs/createjob-ac.html
+++ b/ui/pages/jobs/createjob-ac.html
@@ -38,8 +38,10 @@ limitations under the License.
                                         </label>
 
                                         <div class="col-md-10 col-lg-10 col-sm-10 ">
-                                            <input type="text" class="form-control" ng-model="sourcePat" name="ruleName" placeholder="Please input the source partition, such as 'YYYYMMdd-HH'." required ng-pattern="'([0-9a-zA-Z\\_\\-])+'">
-                                            <span class="error text-small block " ng-if="Form.ruleName.$dirty && Form.ruleName.$error.pattern">Only letter, number, "-" and "_" are allowed</span>
+                                            <input type="text" class="form-control" ng-model="sourcePat" name="ruleName" placeholder="Please input the source partition, such as 'YYYYMMdd-HH'." required 
+                                            ng-pattern="/YYYYMMdd-HH/i"
+                                            ng-maxlength='11'>
+                                            <span class="error text-small block " ng-if="Form.ruleName.$dirty && Form.ruleName.$error.pattern">Please input partition like 'YYYYMMdd-HH'</span>
                                         </div>
                                     </div>
                                 </div>
@@ -50,7 +52,7 @@ limitations under the License.
                                         </label>
 
                                         <div class="col-md-10 col-lg-10 col-sm-10 ">
-                                            <input type="text" class="form-control" ng-model="targetPat" placeholder="Please input target partition of your job, such as 'YYYYMMdd-HH'.">
+                                            <input type="text" class="form-control" ng-model="targetPat" placeholder="Please input target partition of your job, such as 'YYYYMMdd-HH'." ng-pattern="/YYYYMMdd-HH/i" ng-maxlength='11'>
                                         </div>
                                     </div>
                                 </div>
@@ -86,7 +88,9 @@ limitations under the License.
                                         </label>
 
                                         <div class="col-md-5 col-lg-5 col-sm-5 ">
-                                            <input type="text" id="systemSelector" class="form-control" ng-model="periodTime"  required placeholder="How often it works">
+                                            <input type="text" id="systemSelector" class="form-control" ng-model="periodTime"  required placeholder="How often it works"  
+                                            onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" 
+                                            onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}">
                                         </div>
                                         <div class="col-md-5 col-lg-5 col-sm-5 ">
                                             <select id="timeSelector" class="form-control" ng-model="timeType" required>
@@ -102,7 +106,7 @@ limitations under the License.
 
                             <div style="color:#b2c831">
                                 <p>
-                                    <i class="fa fa-info-circle"></i> After submitted, please go to "<a class="bark-link" href="#/jobs">Jobs</a>" to check the job status
+                                    <i class="fa fa-info-circle"></i> After submitted, please go to "<a class="bark-link" href="#!/jobs">Jobs</a>" to check the job status
                                 </p>
                             </div>
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/pages/jobs/jobs.html
----------------------------------------------------------------------
diff --git a/ui/pages/jobs/jobs.html b/ui/pages/jobs/jobs.html
index 016a53d..1fa5e7e 100644
--- a/ui/pages/jobs/jobs.html
+++ b/ui/pages/jobs/jobs.html
@@ -16,7 +16,7 @@ limitations under the License.
 
 <div >
     <p>
-        <a class="btn btn-primary btn-o btn-wide" href="#/createjob-ac"><i class="fa fa-plus"></i> Create Job</a>
+        <a class="btn btn-primary btn-o btn-wide" href="#!/createjob-ac"><i class="fa fa-plus"></i> Create Job</a>
     </p>
 
     <div id="modelContainer">

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/pages/measures/measures.html
----------------------------------------------------------------------
diff --git a/ui/pages/measures/measures.html b/ui/pages/measures/measures.html
index 9831cb0..9465abd 100644
--- a/ui/pages/measures/measures.html
+++ b/ui/pages/measures/measures.html
@@ -15,7 +15,7 @@ limitations under the License.
 -->
 <div >
     <p>
-        <a class="btn btn-primary btn-o btn-wide" href="#/createrule0"><i class="fa fa-plus"></i> Create Measure</a>
+        <a class="btn btn-primary btn-o btn-wide" href="#!/createrule0"><i class="fa fa-plus"></i> Create Measure</a>
     </p>
 
     <div id="modelContainer">
@@ -43,7 +43,7 @@ limitations under the License.
                 <td colspan="7" style="text-align:center">No content!</td>
             </tr>
             <tr ng-repeat="row in displayed">
-                <td><a href="#/viewrule/{{row.name}}">{{row.name}}</a></td>
+                <td><a href="#!/viewrule/{{row.name}}">{{row.name}}</a></td>
                 <!--<td>{{row.system|strmap:'modelsystem'}}</td>-->
                 <td>{{row.type|strmap:'modeltype'}}</td>
                 <td>{{row.description}}</td>
@@ -56,7 +56,7 @@ limitations under the License.
                         <i class="fa fa-trash-o"></i>
                     </a>
                     &nbsp;
-                    <a href="#/viewrule/{{row.name}}" title="subscribe">
+                    <a href="#!/viewrule/{{row.name}}" title="subscribe">
                         <i class="fa fa-eye"></i>
                     </a>
                 </td>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/3daf27b8/ui/sidebar.html
----------------------------------------------------------------------
diff --git a/ui/sidebar.html b/ui/sidebar.html
index 777b5d1..5f7b97f 100644
--- a/ui/sidebar.html
+++ b/ui/sidebar.html
@@ -25,12 +25,12 @@ limitations under the License.
 
                 <div class="sidebar-stat-center">
                     <img src="/img/sidebar1.png" >
-                    <span><a class="bark-link" href="#/dataassets">{{datasets}}&nbsp;Data Assets</a></span>
+                    <span><a class="bark-link" href="#!/dataassets">{{datasets}}&nbsp;Data Assets</a></span>
                 </div>
 
                 <div class="sidebar-stat-center">
                     <img src="/img/sidebar2.png">
-                    <span><a class="bark-link" href="#/metrics">{{metrics}}&nbsp;DQ Metrics</a></span>
+                    <span><a class="bark-link" href="#!/metrics">{{metrics}}&nbsp;DQ Metrics</a></span>
                 </div>
 
             </div>
@@ -47,9 +47,9 @@ limitations under the License.
         <div ng-repeat="outerItems in finalData">
             <div class="well" style="padding:0px;background:transparent;border:0px;position:relative; ">
                 <!-- <img class="bullseye" src="/img/bullseye.png" title="image1" > -->
-                <div class="col-sm-4 col-lg-4 col-md-4 "><h4 ><a href="#/metrics/{{outerItems.name}}"> {{outerItems.name}}</a></h4></div>
+                <div class="col-sm-4 col-lg-4 col-md-4 "><h4 ><a href="#!/metrics/{{outerItems.name}}"> {{outerItems.name}}</a></h4></div>
                 <div class="col-sm-3 col-lg-3 col-md-3 " style="display: flex;justify-content: center;height:46px;"><div ng-class="outerItems.dq >=90 ? 'led-green':'led-yellow'" style="align-self: center;"></div></div>
-                <div class="col-sm-5 col-lg-5 col-md-5 " style="display: flex;justify-content: center;height:46px;"><a style="align-self: center;" class="btn btn-primary" href="https://github.com/eBay/DQSolution/issues" target="_blank">Report&nbsp;issue</a></div>
+                <!-- <div class="col-sm-5 col-lg-5 col-md-5 " style="display: flex;justify-content: center;height:46px;"><a style="align-self: center;" class="btn btn-primary" href="https://github.com/eBay/DQSolution/issues" target="_blank">Report&nbsp;issue</a></div> -->
             </div>
             <br/>
             <div class="well side-bar-scroll">