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 2018/08/20 14:34:38 UTC

[1/5] incubator-griffin git commit: make ui style consistent

Repository: incubator-griffin
Updated Branches:
  refs/heads/master e51245b92 -> b306d872c


http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/sidebar/truncate.pipe.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/sidebar/truncate.pipe.ts b/ui/angular/src/app/sidebar/truncate.pipe.ts
index a58b179..9ed0b68 100644
--- a/ui/angular/src/app/sidebar/truncate.pipe.ts
+++ b/ui/angular/src/app/sidebar/truncate.pipe.ts
@@ -22,8 +22,8 @@ import {Pipe, PipeTransform} from '@angular/core'
   name: 'truncate'
 })
 export class TruncatePipe {
-  transform(value: string, limit: number) : string {
+  transform(value: string, limit: number): string {
     let trail = '...';
     return value.length > limit ? value.substring(0, limit) + trail : value;
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/environments/environment.js
----------------------------------------------------------------------
diff --git a/ui/angular/src/environments/environment.js b/ui/angular/src/environments/environment.js
index d107811..80b8ae0 100644
--- a/ui/angular/src/environments/environment.js
+++ b/ui/angular/src/environments/environment.js
@@ -23,5 +23,5 @@ under the License.
 // The list of which env maps to which file can be found in `.angular-cli.json`.
 exports.__esModule = true;
 exports.environment = {
-    production: false
+  production: false
 };

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/index.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/index.html b/ui/angular/src/index.html
index df88763..31beb75 100644
--- a/ui/angular/src/index.html
+++ b/ui/angular/src/index.html
@@ -36,8 +36,8 @@ under the License.
 </head>
 <body>
 
-      
-      <app-root></app-root>
+
+<app-root></app-root>
 
 </body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/main.js
----------------------------------------------------------------------
diff --git a/ui/angular/src/main.js b/ui/angular/src/main.js
index 7000f8e..26b53f5 100644
--- a/ui/angular/src/main.js
+++ b/ui/angular/src/main.js
@@ -27,6 +27,6 @@ require("jquery");
 // import 'bootstrap/dist/css/bootstrap.css';
 require("bootstrap/dist/css/bootstrap.css");
 if (environment_1.environment.production) {
-    core_1.enableProdMode();
+  core_1.enableProdMode();
 }
 platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule);

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/main.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/main.ts b/ui/angular/src/main.ts
index 55c7b58..26d0669 100644
--- a/ui/angular/src/main.ts
+++ b/ui/angular/src/main.ts
@@ -16,11 +16,11 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { enableProdMode } from '@angular/core';
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-import { AppModule } from './app/app.module';
-import { environment } from './environments/environment';
-import { RouterModule, Routes } from '@angular/router';
+import {enableProdMode} from '@angular/core';
+import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
+import {AppModule} from './app/app.module';
+import {environment} from './environments/environment';
+import {RouterModule, Routes} from '@angular/router';
 import {HttpClientModule} from '@angular/common/http';
 import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/polyfills.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/polyfills.ts b/ui/angular/src/polyfills.ts
index 3ab322a..9fac014 100644
--- a/ui/angular/src/polyfills.ts
+++ b/ui/angular/src/polyfills.ts
@@ -67,14 +67,12 @@ import 'core-js/es7/reflect';
 // import 'web-animations-js';  // Run `npm install --save web-animations-js`.
 
 
-
 /***************************************************************************************************
  * Zone JS is required by Angular itself.
  */
 import 'zone.js/dist/zone';  // Included with Angular CLI.
 
 
-
 /***************************************************************************************************
  * APPLICATION IMPORTS
  */

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/styles.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/styles.css b/ui/angular/src/styles.css
index 3f9f559..4670fdf 100644
--- a/ui/angular/src/styles.css
+++ b/ui/angular/src/styles.css
@@ -17,100 +17,101 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../node_modules/bootstrap/dist/css/bootstrap.css');
 @import url('../node_modules/font-awesome/css/font-awesome.css');
 @import "~@angular/material/prebuilt-themes/indigo-pink.css";
 @import url('../node_modules/angular2-toaster/toaster.css');
 @import url('../node_modules/nouislider/distribute/nouislider.min.css');
 
-
 /*@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css');*/
 /**********BASE CONFIGURATIONS**********/
 body {
-  background:#1f1f1f;
-    font-family: 'Open Sans', sans-serif;
-    height: 100%;
-    overflow: hidden;
+  background: #1f1f1f;
+  font-family: 'Open Sans', sans-serif;
+  height: 100%;
+  overflow: hidden;
 }
 
-html{
+html {
   height: 100%;
 }
 
 h1 {
-font-family: 'Raleway', sans-serif;}
+  font-family: 'Raleway', sans-serif;
+}
 
-h3,h4 , h5 {
+h3, h4, h5 {
   font-family: 'Open Sans', sans-serif;
-  font-weight:lighter;
+  font-weight: lighter;
 }
 
-h2{
-  font-size:22px;
+h2 {
+  font-size: 22px;
 }
 
 h3 {
-  font-size:46px;
-  color:#b2c831
+  font-size: 46px;
+  color: #b2c831
 }
 
 h5 {
-  color:#b2c831;
-  margin-left:5px;
+  color: #b2c831;
+  margin-left: 5px;
   font-size: 20px;
 }
+
 label {
   font-weight: bold !important;
 }
+
 /***********BLOCKS & WRAPS***********/
 
 /*--- Dash Unit / Used in Dashboard page ---*/
 .dash-unit {
   margin-bottom: 30px;
-  padding-bottom:10px;
+  padding-bottom: 10px;
   border: 1px solid #383737;
   /*background-image:url('../img/sep-half.png');*/
   background-color: #3d3d3d;
-  color:white;
-  height:290px;
+  color: white;
+  height: 290px;
 }
 
 .dash-unit:hover {
   background-color: #4f4f4f;
-  -moz-box-shadow:    3px 3px 2px 0px #151515;
-    -webkit-box-shadow: 3px 3px 2px 0px #151515;
-    box-shadow:         3px 3px 2px 0px #151515;
+  -moz-box-shadow: 3px 3px 2px 0px #151515;
+  -webkit-box-shadow: 3px 3px 2px 0px #151515;
+  box-shadow: 3px 3px 2px 0px #151515;
 
 }
 
 .dash-unit dtitle {
-  font-size:11px;
-  text-transform:uppercase;
-  color:#ffffff;
-  margin:8px;
-  padding:0px;
-  height:inherit
-  }
+  font-size: 11px;
+  text-transform: uppercase;
+  color: #ffffff;
+  margin: 8px;
+  padding: 0px;
+  height: inherit
+}
 
 .dash-unit hr {
-    border: 0;
-    border-top: 1px solid #151515;
-    border-top-style: dashed;
-  margin-top:3px;
+  border: 0;
+  border-top: 1px solid #151515;
+  border-top-style: dashed;
+  margin-top: 3px;
 }
 
 .dash-unit h1 {
   font-family: 'Raleway', sans-serif;
-  font-weight:300;
+  font-weight: 300;
   font-size: 20px;
   line-height: 2px;
   letter-spacing: 0px;
   color: #ffffff;
-  padding-top:10px;
-  padding-left:5px;
-  margin-top:2px;
-  text-align:center;
+  padding-top: 10px;
+  padding-left: 5px;
+  margin-top: 2px;
+  text-align: center;
 }
 
 .dash-unit h2 {
@@ -120,54 +121,51 @@ label {
   line-height: 26px;
   letter-spacing: 0px;
   color: #ffffff;
-  padding-top:10px;
-  padding-left:5px;
-  margin-top:2px;
-  text-align:center;
+  padding-top: 10px;
+  padding-left: 5px;
+  margin-top: 2px;
+  text-align: center;
 }
 
-
 .dash-unit h3 {
-  font-weight:300;
+  font-weight: 300;
   font-size: 15px;
   line-height: 2px;
   letter-spacing: 0px;
   color: #b2c831;
-  padding-top:10px;
-  padding-left:5px;
-  margin-top:2px;
-  text-align:center;
+  padding-top: 10px;
+  padding-left: 5px;
+  margin-top: 2px;
+  text-align: center;
 }
 
-
 .dash-unit p {
   font-size: 14px;
   font-weight: 200;
   line-height: 16px;
   color: inherit;
   margin: 0 0 10px;
-  padding:5px;
- }
+  padding: 5px;
+}
 
 .dash-unit h4 {
-  padding-left:5px;
-  margin-top:2px;
+  padding-left: 5px;
+  margin-top: 2px;
   font-size: 13px;
-  font-weight:lighter;
+  font-weight: lighter;
   line-height: 1;
   letter-spacing: 0px;
   color: #fff;
 }
 
-.dash-unit bold{
+.dash-unit bold {
   font-family: 'Open Sans', sans-serif;
-  font-size:26px;
-  font-weight:bold;
-  color:#fff;
-  vertical-align:middle;
+  font-size: 26px;
+  font-weight: bold;
+  color: #fff;
+  vertical-align: middle;
 }
 
-
 /**********Half-Unit / Used in index.html**********/
 .half-unit {
   margin-bottom: 30px;
@@ -175,131 +173,132 @@ label {
   border: 1px solid #383737;
   /*background-image:url('../img/sep-half.png');*/
   background-color: #3d3d3d;
-  color:white;
-  height:130px;
+  color: white;
+  height: 130px;
 }
 
 .half-unit:hover {
   background-color: #4f4f4f;
-  -moz-box-shadow:    3px 3px 2px 0px #151515;
-    -webkit-box-shadow: 3px 3px 2px 0px #151515;
-    box-shadow:         3px 3px 2px 0px #151515;
+  -moz-box-shadow: 3px 3px 2px 0px #151515;
+  -webkit-box-shadow: 3px 3px 2px 0px #151515;
+  box-shadow: 3px 3px 2px 0px #151515;
 
 }
 
 .half-unit dtitle {
-  font-size:10px;
-  text-transform:uppercase;
-  color:#ffffff;
-  margin:8px;
-  padding:0px;
-  height:inherit
-  }
+  font-size: 10px;
+  text-transform: uppercase;
+  color: #ffffff;
+  margin: 8px;
+  padding: 0px;
+  height: inherit
+}
 
 .half-unit hr {
-    border: 0;
-    border-top: 1px solid #151515;
-    border-top-style: dashed;
-  margin-top:3px;
+  border: 0;
+  border-top: 1px solid #151515;
+  border-top-style: dashed;
+  margin-top: 3px;
 }
 
 .half-unit h1 {
   font-family: 'Raleway', sans-serif;
-  font-weight:300;
+  font-weight: 300;
   font-size: 20px;
   line-height: 1;
   letter-spacing: 0px;
   color: #ffffff;
-  padding-top:10px;
-  padding-left:5px;
-  margin-top:2px;
-  text-align:center;
+  padding-top: 10px;
+  padding-left: 5px;
+  margin-top: 2px;
+  text-align: center;
 }
 
 .half-unit h4 {
-  padding-left:5px;
-  margin-top:2px;
+  padding-left: 5px;
+  margin-top: 2px;
   font-size: 13px;
-  font-weight:lighter;
+  font-weight: lighter;
   line-height: 1;
   letter-spacing: 0px;
   color: #fff;
 }
 
-
-.half-unit bold{
+.half-unit bold {
   font-family: 'Open Sans', sans-serif;
-  font-size:26px;
-  font-weight:bold;
-  color:#fff;
-  vertical-align:middle;
+  font-size: 26px;
+  font-weight: bold;
+  color: #fff;
+  vertical-align: middle;
 }
 
 /**********Styling Elements**********/
 .cont {
-  text-align:center;
-  margin-top:30px;
+  text-align: center;
+  margin-top: 30px;
 }
 
 .cont ok {
-  color:#b2c831;
+  color: #b2c831;
 }
 
 .cont bad {
-  color:#fa1d2d;
+  color: #fa1d2d;
 }
 
 .cont2 {
-  text-align:center;
-  margin-top:-15px;
-  font-size:12px;
-  line-height:7px;
+  text-align: center;
+  margin-top: -15px;
+  font-size: 12px;
+  line-height: 7px;
 }
 
-.cont2 bold{
-  font-size:10px;
-  font-weight:bold;
-  color:#b2c831
+.cont2 bold {
+  font-size: 10px;
+  font-weight: bold;
+  color: #b2c831
 }
 
 .text p {
   font-family: 'Open Sans', sans-serif;
-  margin-left:8px;
-  font-size:14px;
-  line-height:18px;
+  margin-left: 8px;
+  font-size: 14px;
+  line-height: 18px;
 }
 
 .text grey {
-  font-size:11px;
-  color:silver
+  font-size: 11px;
+  color: silver
 }
 
-
 /***********Bootstrap Default Modifications***********/
 
 .thumbnail {
-  border:0px;
-  text-align:center;
+  border: 0px;
+  text-align: center;
   -webkit-box-shadow: 0px;
-     -moz-box-shadow: 0px;
-          box-shadow: 0px;
-    background: none;
-    text-align: center;
+  -moz-box-shadow: 0px;
+  box-shadow: 0px;
+  background: none;
+  text-align: center;
 
 }
+
 .modal {
-  background: rgba(0,0,0,0.6);
+  background: rgba(0, 0, 0, 0.6);
 }
 
 .modal-header {
   /*background-image:url('../img/sep-half.png');*/
   background-color: #4f4f4f;
-  color:#fff;
+  color: #fff;
 }
-.modal-body{
+
+.modal-body {
   background-color: #1f1f1f;
 }
-.modal-footer{
+
+.modal-footer {
   background-color: #1f1f1f;
 
 }
@@ -312,14 +311,14 @@ label {
   line-height: 1.33;
   border-radius: 15px 15px 15px 15px;
 
-  border-width:2px;
-  border-color:#2A9FD6;
-  cursor:pointer;
+  border-width: 2px;
+  border-color: #2A9FD6;
+  cursor: pointer;
 }
 
-.btn-circle:hover{
-    /*background: #b2c831;
-    color:#000;*/
+.btn-circle:hover {
+  /*background: #b2c831;
+  color:#000;*/
 }
 
 /*input[type=submit] {
@@ -352,42 +351,47 @@ textarea {
   width: 100%;
   text-indent: 0;
 }
-.textarea-container { margin: 0 18px; }
-.textarea-container textarea { margin-left: -18px; }
-#contact textarea { width: 100%; height: 45px; }
-
 
-.progress-bar {
-  background-color: #b2c831;
+.textarea-container {
+  margin: 0 18px;
 }
 
+.textarea-container textarea {
+  margin-left: -18px;
+}
 
+#contact textarea {
+  width: 100%;
+  height: 45px;
+}
 
+.progress-bar {
+  background-color: #b2c831;
+}
 
 /***********LineIcons Styles***********/
 
-
 .info-user {
-  text-align:center;
+  text-align: center;
   font-size: 24px;
   color: #b2c831;
-  }
+}
 
 .fs1 {
-  padding:5px 5px 5px 5px;
-  position:relative;
+  padding: 5px 5px 5px 5px;
+  position: relative;
 }
 
 .fs1:hover {
-  position:relative;
+  position: relative;
   color: #fff;
-  cursor:pointer
+  cursor: pointer
 }
 
 .fs2 {
-  padding:5px 5px 5px 5px;
-  position:relative;
-  font-size:35px;
+  padding: 5px 5px 5px 5px;
+  position: relative;
+  font-size: 35px;
   vertical-align: text-bottom
 }
 
@@ -402,126 +406,144 @@ digiclock {
 }
 
 .clockcenter {
-  text-align:center;
+  text-align: center;
 }
 
-
 /**********Mail Style Configuration**********/
 
 .framemail {
-    cursor: default;
+  cursor: default;
 }
+
 .framemail .window {
-    font-size: 0;
-    margin-top: -1px;
-    overflow: hidden;
-    margin-left: -18px;
+  font-size: 0;
+  margin-top: -1px;
+  overflow: hidden;
+  margin-left: -18px;
 }
+
 .framemail .window .mail li {
-    background-color:#3d3d3d;
-    background-image: -webkit-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05));
-    background-image:    -moz-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05));
-    background-image:     -ms-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05));
-    background-image:      -o-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05));
-    background-image:         linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.05));
-    border-top: 1px solid #888;
-    position: relative;
-    margin-left:-18px;
+  background-color: #3d3d3d;
+  background-image: -webkit-linear-gradient(hsla(0, 0%, 100%, .05), hsla(0, 0%, 0%, .05));
+  background-image: -moz-linear-gradient(hsla(0, 0%, 100%, .05), hsla(0, 0%, 0%, .05));
+  background-image: -ms-linear-gradient(hsla(0, 0%, 100%, .05), hsla(0, 0%, 0%, .05));
+  background-image: -o-linear-gradient(hsla(0, 0%, 100%, .05), hsla(0, 0%, 0%, .05));
+  background-image: linear-gradient(hsla(0, 0%, 100%, .05), hsla(0, 0%, 0%, .05));
+  border-top: 1px solid #888;
+  position: relative;
+  margin-left: -18px;
 }
+
 .framemail .window .mail li:first-child {
-    border-top: none;
+  border-top: none;
 }
+
 .framemail .window .mail li:hover {
-    background-color: #5d5b5b;
+  background-color: #5d5b5b;
 }
+
 .framemail .window .mail li:after,
 .framemail .window .mail li:before {
-    border-left: 8px solid transparent;
-    border-top: 8px solid #df6;
-    content: '';
-    height: 0;
-    position: absolute;
-    right: 0;
-    top: 0;
-    width: 0;
+  border-left: 8px solid transparent;
+  border-top: 8px solid #df6;
+  content: '';
+  height: 0;
+  position: absolute;
+  right: 0;
+  top: 0;
+  width: 0;
 }
+
 .framemail .window .mail li:before {
-    border-top-color: #bbb;
-    border-width: 9px;
+  border-top-color: #bbb;
+  border-width: 9px;
 }
+
 .framemail .window .mail li:nth-child(1):after,
 .framemail .window .mail li:nth-child(1):before {
-    border: none;
+  border: none;
 }
+
 .framemail .window .mail li:nth-child(2):after {
-    border-top-color: #fa1d2d;
+  border-top-color: #fa1d2d;
 }
+
 .framemail .window .mail li i {
-    display: inline-block;
-    height: 48px;
-    width: 6px;
+  display: inline-block;
+  height: 48px;
+  width: 6px;
 }
+
 .framemail .window .mail li .read {
-    background-color: #ddd;
+  background-color: #ddd;
 }
+
 .framemail .window .mail li .unread {
-    background: #b2c831;
+  background: #b2c831;
 }
+
 .framemail .window .mail li img {
-    background: #819da2;
-    border-radius: 2px;
-    height: 36px;
-    left: 12px;
-    position: absolute;
-    top: 6px;
-    width: 36px;
+  background: #819da2;
+  border-radius: 2px;
+  height: 36px;
+  left: 12px;
+  position: absolute;
+  top: 6px;
+  width: 36px;
 }
+
 .framemail .window .mail li p {
-    font: 13px/24px sans-serif;
-    left: 56px;
-    position: absolute;
-    top: 3px;
+  font: 13px/24px sans-serif;
+  left: 56px;
+  position: absolute;
+  top: 3px;
 }
+
 .framemail .window .mail li .sender {
-    color: #e9e8e8;
-    font-weight: bold;
-    text-shadow: 0 1px 1px hsla(0,0%,100%,.5);
+  color: #e9e8e8;
+  font-weight: bold;
+  text-shadow: 0 1px 1px hsla(0, 0%, 100%, .5);
 }
+
 .framemail .window .mail li .message {
-    color: #999;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    top: 21px;
-    white-space: nowrap;
+  color: #999;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  top: 21px;
+  white-space: nowrap;
 }
+
 .framemail .window .mail li .message strong {
-    color: #999;
+  color: #999;
 }
+
 .framemail .window .mail li .actions {
-    height: 16px;
-    position: absolute;
-    right: 19px;
-    text-align: right;
-    top: 0;
-    width: 96px;
+  height: 16px;
+  position: absolute;
+  right: 19px;
+  text-align: right;
+  top: 0;
+  width: 96px;
 }
+
 .framemail .window .mail li .actions img {
-    background: none;
-    display: inline-block;
-    height: 16px;
-    margin-left: 6px;
-    opacity: .1;
-    position: relative;
-    width: 16px;
+  background: none;
+  display: inline-block;
+  height: 16px;
+  margin-left: 6px;
+  opacity: .1;
+  position: relative;
+  width: 16px;
 }
+
 .framemail .window .mail li:hover .actions img {
-    opacity: .25;
+  opacity: .25;
 }
+
 .framemail .window .mail li .actions img:hover {
-    opacity: .75;
+  opacity: .75;
 }
 
-
 /**********DONUT CHARTS STYLES**********/
 #load {
   width: 11.313em;
@@ -530,7 +552,7 @@ digiclock {
   border-radius: 5px;
   margin-bottom: 1.063em;
   background-position: center center;
-  margin:auto;
+  margin: auto;
 }
 
 #space {
@@ -540,10 +562,9 @@ digiclock {
   border-radius: 5px;
   margin-bottom: 1.063em;
   background-position: center center;
-  margin:auto;
+  margin: auto;
 }
 
-
 /**********LINE AND BARS**********/
 
 .section-graph {
@@ -551,8 +572,9 @@ digiclock {
   height: 130px;
   color: #fff;
   background-image: linear-gradient(color-stops(#b2c831, #b2c831 50%, #b2c831 50%));
-  margin-bottom:20px;
+  margin-bottom: 20px;
 }
+
 .section-graph .graph-info {
   z-index: 99;
   position: absolute;
@@ -561,6 +583,7 @@ digiclock {
   margin-left: 21px;
   width: 100px;
 }
+
 .section-graph .graph-info .graph-arrow {
   width: 0;
   height: 0;
@@ -570,11 +593,13 @@ digiclock {
   border-bottom: 4px solid white;
   float: left;
 }
+
 .section-graph .graph-info .graph-info-big {
   font-size: 24px;
   float: left;
   margin-left: 3px;
 }
+
 .section-graph .graph-info .graph-info-small {
   margin-left: 3px;
   font-size: 12px;
@@ -583,6 +608,7 @@ digiclock {
   clear: left;
   margin-left: 8px;
 }
+
 /*
  * Info Section
  */
@@ -590,10 +616,12 @@ digiclock {
   text-align: center;
 
 }
+
 .info-aapl ul {
-  margin-left:30%;
+  margin-left: 30%;
 
 }
+
 .info-aapl li {
   margin: 0;
   display: block;
@@ -601,9 +629,10 @@ digiclock {
   height: 40px;
   margin-right: 6px;
   background-color: #f5f0ec;
-  float:left;
+  float: left;
   position: relative;
 }
+
 .info-aapl li span {
   display: block;
   width: 9px;
@@ -611,33 +640,35 @@ digiclock {
   position: absolute;
   bottom: 0;
 }
+
 .info-aapl li span.orange {
   background-color: #fa1d2d;
 }
+
 .info-aapl li span.green {
   background-color: #b2c831;
 }
 
 /**********TWITTER WIDGET **********/
-#jstwitter ul li{
-  color:#bdbdbd;
-  padding:.5em .75em;
+#jstwitter ul li {
+  color: #bdbdbd;
+  padding: .5em .75em;
 }
 
-#jstwitter ul{
-  margin-left:0;
-  list-style:none
+#jstwitter ul {
+  margin-left: 0;
+  list-style: none
 }
 
-#jstwitter:first-child{
-  border-top:0
+#jstwitter:first-child {
+  border-top: 0
 }
 
-ul#jstwitter li a{
-  font-size:10px;
-  font-style:italic;
-  color:#666;
-  text-decoration:none
+ul#jstwitter li a {
+  font-size: 10px;
+  font-style: italic;
+  color: #666;
+  text-decoration: none
 }
 
 /********** CUSTOMIZED BUTTON **********/
@@ -648,22 +679,22 @@ ul#jstwitter li a{
   border-top: 0 none #707070;
   border-bottom: 0 none #707070;
   display: inline;
-    padding: 4px 12px;
-    margin-bottom: 0;
+  padding: 4px 12px;
+  margin-bottom: 0;
   *margin-left: .3em;
-    font-size: 14px;
-    line-height: 20px;
-    color: #b2c831;
-    text-align: center;
-    vertical-align: middle;
-    cursor: pointer;
+  font-size: 14px;
+  line-height: 20px;
+  color: #b2c831;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
   background-color: #5a5a5a;
   *background-color: #5a5a5a;
-    background-repeat: repeat-x;
+  background-repeat: repeat-x;
   *-webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-    zoom: 1;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  zoom: 1;
   -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
   -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
   box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
@@ -694,6 +725,7 @@ ul#jstwitter li a{
   text-shadow: 0 1px 1px rgba(0, 0, 0, 0.45);
   cursor: pointer;
 }
+
 .switch-label:active {
   font-weight: bold;
 }
@@ -715,6 +747,7 @@ ul#jstwitter li a{
 .switch-input {
   display: none;
 }
+
 .switch-input:checked + .switch-label {
   font-weight: bold;
   color: rgba(0, 0, 0, 0.65);
@@ -724,6 +757,7 @@ ul#jstwitter li a{
   -o-transition: 0.15s ease-out;
   transition: 0.15s ease-out;
 }
+
 .switch-input:checked + .switch-label-on ~ .switch-selection {
   left: 60px;
   /* Note: left: 50% doesn't transition in WebKit */
@@ -750,6 +784,7 @@ ul#jstwitter li a{
   -o-transition: left 0.15s ease-out;
   transition: left 0.15s ease-out;
 }
+
 .switch-blue .switch-selection {
   background: #3aa2d0;
   background-image: -webkit-linear-gradient(top, #4fc9ee, #3aa2d0);
@@ -757,6 +792,7 @@ ul#jstwitter li a{
   background-image: -o-linear-gradient(top, #4fc9ee, #3aa2d0);
   background-image: linear-gradient(to bottom, #4fc9ee, #3aa2d0);
 }
+
 .switch-yellow .switch-selection {
   background: #fa1d2d;
   background-image: -webkit-linear-gradient(top, #f93e4b, #fa1d2d);
@@ -765,7 +801,6 @@ ul#jstwitter li a{
   background-image: linear-gradient(to bottom, #f93e4b, #fa1d2d);
 }
 
-
 /**********Gauge Chart**********/
 #canvas {
   display: block;
@@ -778,14 +813,15 @@ ul#jstwitter li a{
 .accordion-group {
   border: 1px solid #222;
 }
+
 .accordion-heading {
   background-color: #5a5a5a;
   *background-color: #5a5a5a;
-    background-repeat: repeat-x;
+  background-repeat: repeat-x;
   *-webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-    zoom: 1;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+  zoom: 1;
   -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
   -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
   box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
@@ -814,108 +850,108 @@ a:hover {
 }
 
 /**navigation bar**/
-.docs-search{
-  margin:10px 0;
-  border-radius:20px;
-  background:#626262;
-  vertical-align:middle;
-  padding:4px 0 4px 10px;
+.docs-search {
+  margin: 10px 0;
+  border-radius: 20px;
+  background: #626262;
+  vertical-align: middle;
+  padding: 4px 0 4px 10px;
 }
 
-.docs-search input{
-  background:#626262;
-  border:0
+.docs-search input {
+  background: #626262;
+  border: 0
 }
 
-.docs-search input:focus{
-  outline:none;
-  color:#fff;
+.docs-search input:focus {
+  outline: none;
+  color: #fff;
 }
 
 .navbar-search {
-    position: relative;
-    float: left;
-    margin-top: 14px;
-    margin-bottom: 0;
+  position: relative;
+  float: left;
+  margin-top: 14px;
+  margin-bottom: 0;
 }
 
 .navbar-search .search-query {
-    padding: 4px 9px;
-    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
-    font-size: 13px;
-    font-weight: normal;
-    line-height: 1;
-    color: #ffffff;
-    background-color: #848484;
-    border: 1px solid #151515;
-    border-radius:14px;
-    -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);
-    -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);
-    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);
-    -webkit-transition: none;
-    -moz-transition: none;
-    -ms-transition: none;
-    -o-transition: none;
-    transition: none;
-}
-
-.navbar-search .search-query:disabled{
-    background-color: #626262;
-    cursor: not-allowed;
+  padding: 4px 9px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1;
+  color: #ffffff;
+  background-color: #848484;
+  border: 1px solid #151515;
+  border-radius: 14px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
+  -webkit-transition: none;
+  -moz-transition: none;
+  -ms-transition: none;
+  -o-transition: none;
+  transition: none;
+}
+
+.navbar-search .search-query:disabled {
+  background-color: #626262;
+  cursor: not-allowed;
 }
 
 .navbar-search .search-query:-moz-placeholder {
-    color: #cccccc;
+  color: #cccccc;
 }
+
 .navbar-search .search-query::-webkit-input-placeholder {
-    color: #cccccc;
+  color: #cccccc;
 }
-.navbar-search .search-query:focus,.navbar-search .search-query.focused {
-    padding: 5px 10px;
-    color: #333333;
-    text-shadow: 0 1px 0 #ffffff;
-    background-color: #ffffff;
-    border: 0;
-    -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-    -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-    box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-    outline: 0;
-}
-
 
+.navbar-search .search-query:focus, .navbar-search .search-query.focused {
+  padding: 5px 10px;
+  color: #333333;
+  text-shadow: 0 1px 0 #ffffff;
+  background-color: #ffffff;
+  border: 0;
+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+  outline: 0;
+}
 
 /**********FooterWrap Section**********/
 @media (min-width: 992px) {
-    #footerwrap {
-      width: 75%;
-    }
+  #footerwrap {
+    width: 75%;
+  }
 }
 
 @media (max-width: 991px) {
-    #footerwrap {
-      width: 100%
-    }
+  #footerwrap {
+    width: 100%
+  }
 }
 
 #footerwrap {
-    padding-left: 30px;
-    /*height: 90px;*/
-    height: 20px;
-    background:#1f1f1f;
-    padding-top:10px;
-    padding-bottom: 10px;
-    border-top-style: solid;
-    border-top-width:8px;
-    border-top-color:#1d1d1d;
-    /*overflow-y:auto;*/
-    z-index:200;
+  padding-left: 30px;
+  /*height: 90px;*/
+  height: 20px;
+  background: #1f1f1f;
+  padding-top: 10px;
+  padding-bottom: 10px;
+  border-top-style: solid;
+  border-top-width: 8px;
+  border-top-color: #1d1d1d;
+  /*overflow-y:auto;*/
+  z-index: 200;
 
 }
 
 #footerwrap p {
-  color:white;
-  font-size:12px;
-  margin:0;
+  color: white;
+  font-size: 12px;
+  margin: 0;
 }
 
 /*#footerwrap>.container-fluid{
@@ -935,24 +971,23 @@ a:hover {
  }
 }*/
 
-
 /***********FULLCALENDAR STYLE***********/
 
 #external-events {
   padding: 0 10px;
   border: 1px solid #8b8b8a;
-    background-color: #8b8b8a;
-    -webkit-border-radius: 4px;
-       -moz-border-radius: 4px;
-            border-radius: 4px;
+  background-color: #8b8b8a;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
   text-align: left;
-  }
+}
 
 #external-events h4 {
   font-size: 16px;
   margin-top: 0;
   padding-top: 1em;
-  }
+}
 
 .external-event { /* try to mimick the look of a real event */
   margin: 10px 0;
@@ -961,82 +996,91 @@ a:hover {
   color: #fff;
   font-size: .85em;
   cursor: pointer;
-  }
+}
 
 #external-events p {
   margin: 1.5em 0;
   font-size: 11px;
   color: #b2c831;
-  }
+}
 
 #external-events p input {
   margin: 0;
   vertical-align: middle;
-  }
+}
 
 #calendar {
-  width:100%;
-  }
+  width: 100%;
+}
 
 .symbol.required:before {
-    content: "*";
-    display: inline;
-    color: #E6674A;
+  content: "*";
+  display: inline;
+  color: #E6674A;
 }
 
 .has-success .symbol:before {
-    content: "\f00c";
-    display: inline;
-    font-family: FontAwesome;
-    color: #468847
+  content: "\f00c";
+  display: inline;
+  font-family: FontAwesome;
+  color: #468847
 }
 
 .has-error .symbol:before {
-    content: "\f00d";
-    display: inline;
-    font-family: FontAwesome;
-    color: #C82E29
+  content: "\f00d";
+  display: inline;
+  font-family: FontAwesome;
+  color: #C82E29
 }
 
 .text-small {
-    font-size: 12px!important
+  font-size: 12px !important
 }
 
 .has-error .error {
-    color: #a94442;
+  color: #a94442;
 }
 
 /**********Media Styles**********/
 
-@media (max-width: 360px){
-/*Calendar Adsjustments*/
-.fc-header {margin-top:15px;}
-.fc-header-title h2{font-size:10px; }
-.fc-header-right {display:none}
+@media (max-width: 360px) {
+  /*Calendar Adsjustments*/
+  .fc-header {
+    margin-top: 15px;
+  }
+
+  .fc-header-title h2 {
+    font-size: 10px;
+  }
+
+  .fc-header-right {
+    display: none
+  }
 }
+
 /* portrait tablet */
 @media (min-width: 767px) and (max-width: 768px) {
   .info-aapl ul {
-      margin-left:10px;
-      float:left;
-}
+    margin-left: 10px;
+    float: left;
+  }
 
-#load {
-  margin-left:5px;
-  margin-right:10px;
-}
+  #load {
+    margin-left: 5px;
+    margin-right: 10px;
+  }
 
-#space {
-  margin-left:5px;
-  margin-right:10px;
-}
+  #space {
+    margin-left: 5px;
+    margin-right: 10px;
+  }
 
 }
 
 /* Landscape iphone 5 and samsung galaxy */
 @media (min-width: 560px) and (max-width: 685px) {
   .info-aapl ul {
-      margin-left:40%;
+    margin-left: 40%;
   }
 
 }
@@ -1052,12 +1096,11 @@ a:hover {
 }
 
 tbody {
-  word-break:break-all;
+  word-break: break-all;
 }
 
-
 /*style of job*/
-.page{
+.page {
   cursor: pointer;
   float: left;
   border-bottom-left-radius: 4px;
@@ -1066,35 +1109,35 @@ tbody {
   text-decoration: underline;
 }
 
-.page-active{
+.page-active {
   background-color: #2a9fd6;
   border-color: transparent;
   cursor: default;
 }
 
-.normal{
+.normal {
   background-color: #00C853;
   border-radius: 5px;
-  padding:3px 4px;
+  padding: 3px 4px;
   display: inline-block;
   width: 70px;
   text-align: center;
 }
 
-.unnormal{
+.unnormal {
   background-color: #EF5350;
   border-radius: 5px;
-  padding:3px 4px;
+  padding: 3px 4px;
   display: inline-block;
   width: 70px;
   text-align: center;
 }
 
-#timePopup{
+#timePopup {
   position: absolute;
-  z-index:1;
-  height:100px;
-  background-color:white;
+  z-index: 1;
+  height: 100px;
+  background-color: white;
   /*width:80%;*/
   text-align: center;
   border: 5px solid #c5c5c5;
@@ -1102,85 +1145,84 @@ tbody {
   color: #999;
 }
 
-#hourSelector{
+#hourSelector {
   width: 20%;
   height: 100%;
   display: inline-block;
 }
 
-#minuteSelector{
-  width:20%;
-  height:100%;
+#minuteSelector {
+  width: 20%;
+  height: 100%;
   display: inline-block;
 
 }
 
-
-#daySelector{
-  width:20%;
-  height:100%;
+#daySelector {
+  width: 20%;
+  height: 100%;
   display: inline-block;
 
 }
 
-#pmam{
-  width:30%;
-  height:100%;
+#pmam {
+  width: 30%;
+  height: 100%;
   display: inline-block;
 }
 
-.division{
+.division {
   display: inline-block;
-  width:10%;
-  height:100%;
-  position:relative;
+  width: 10%;
+  height: 100%;
+  position: relative;
   top: -30px;
 }
 
-.mask{
-  width:100%;
-  height:100%;
-  position:fixed;
-  top:0;
-  left:0;
-  z-index:1;
+.mask {
+  width: 100%;
+  height: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1;
 }
 
-.selected-list .c-list .c-token{
+.selected-list .c-list .c-token {
   margin-top: 4px;
 }
 
-.myclass * .c-token{
+.myclass * .c-token {
   background: #518dab !important;
 }
 
-.myclass * div.selected-list .c-btn , .myclass * ul ,.myclass * div.list-area, .list-filter input{
+.myclass * div.selected-list .c-btn, .myclass * ul, .myclass * div.list-area, .list-filter input {
   background: #dcdad6;
 }
 
-.myclass * div.arrow-up{
+.myclass * div.arrow-up {
   border-bottom: 15px solid #dcdad6;
 }
 
-.myclass * div .list-grp h4{
+.myclass * div .list-grp h4 {
   color: #518dab;
 }
 
-input{
+input {
   color: #888;
 }
 
-.table > tbody > tr > td,.table > thead > tr > th{
-   border: 1px solid transparent;
- }
+.table > tbody > tr > td, .table > thead > tr > th {
+  border: 1px solid transparent;
+}
 
- .toggle-children{
-    background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAApUlEQVQ4T8XULQ7CQBCG4fcTWBJuVodEcAEEBtcbcAU0Bq7ATQgKi0PQTAOhzdD0b7aC9fPs7O43K+AEbIArCUtmZpLepRdgFYU+QLXxFzoD2dhmfgAHFcABWA9BrUAE6gUa0BbYNzsaBTjoAeQeCgFtUBLgoPt/AEn1XYQ68IX1MXwSu0Ij6Qnsws8ozQp49SayI8oLg/kRbstQlJOHadI4T/1QSjKSYdGc5u4/AAAAAElFTkSuQmCC') !important;
- }
+.toggle-children {
+  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAApUlEQVQ4T8XULQ7CQBCG4fcTWBJuVodEcAEEBtcbcAU0Bq7ATQgKi0PQTAOhzdD0b7aC9fPs7O43K+AEbIArCUtmZpLepRdgFYU+QLXxFzoD2dhmfgAHFcABWA9BrUAE6gUa0BbYNzsaBTjoAeQeCgFtUBLgoPt/AEn1XYQ68IX1MXwSu0Ij6Qnsws8ozQp49SayI8oLg/kRbstQlJOHadI4T/1QSjKSYdGc5u4/AAAAAElFTkSuQmCC') !important;
+}
 
- .myclass {
-    position: relative;
-    z-index: 9999;
+.myclass {
+  position: relative;
+  z-index: 9999;
 }
 
 /*#mainWindow {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/test.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/test.ts b/ui/angular/src/test.ts
index da41e46..3bb7e65 100644
--- a/ui/angular/src/test.ts
+++ b/ui/angular/src/test.ts
@@ -24,7 +24,7 @@ import 'zone.js/dist/sync-test';
 import 'zone.js/dist/jasmine-patch';
 import 'zone.js/dist/async-test';
 import 'zone.js/dist/fake-async-test';
-import { getTestBed } from '@angular/core/testing';
+import {getTestBed} from '@angular/core/testing';
 import {
   BrowserDynamicTestingModule,
   platformBrowserDynamicTesting
@@ -35,7 +35,8 @@ declare const __karma__: any;
 declare const require: any;
 
 // Prevent Karma from running prematurely.
-__karma__.loaded = function () {};
+__karma__.loaded = function () {
+};
 
 // First, initialize the Angular testing environment.
 getTestBed().initTestEnvironment(

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/typings.d.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/typings.d.ts b/ui/angular/src/typings.d.ts
index b0f9eed..5c98776 100644
--- a/ui/angular/src/typings.d.ts
+++ b/ui/angular/src/typings.d.ts
@@ -18,6 +18,7 @@ under the License.
 */
 /* SystemJS module definition */
 declare var module: NodeModule;
+
 interface NodeModule {
   id: string;
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/vendor.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/vendor.ts b/ui/angular/src/vendor.ts
index c777916..e41ac70 100644
--- a/ui/angular/src/vendor.ts
+++ b/ui/angular/src/vendor.ts
@@ -24,10 +24,9 @@ import '@angular/http';
 import '@angular/router';
 
 
-
 // RxJS
 import 'rxjs';
 
 import 'jquery';
 import 'bootstrap/dist/js/bootstrap';
-import 'bootstrap-loader';
\ No newline at end of file
+import 'bootstrap-loader';

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/webpack.config.js
----------------------------------------------------------------------
diff --git a/ui/angular/webpack.config.js b/ui/angular/webpack.config.js
index ad230c1..e999544 100644
--- a/ui/angular/webpack.config.js
+++ b/ui/angular/webpack.config.js
@@ -20,63 +20,63 @@ var webpack = require('webpack');
 var HtmlWebpackPlugin = require('html-webpack-plugin');
 module.exports = {
 
-    entry: {
-        'app':'./src/main.ts',
-        'vendor':'./src/vendor.ts',
-        'polyfills':'./src/polyfills.ts'
-    },
-    output: {
-        // path: '/dist',
-        filename: '[name].js'
-    },
-    module: {
-        rules: [
-          {
-            test: /\.ts$/,
-            loader: 'ts-loader'
-          },
-          {
-            test: /\.html$/,
-            loader: 'html-loader'
-          },
-          {
-            test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
-            loader: 'file-loader?name=assets/[name].[hash].[ext]'
-          },
-          {
-            test: /\.css$/,
-            loaders: 'style-loader!css-loader' 
-          },
-          {
-            test: /\.css$/,
-            loader: 'raw-loader'
-          }
-        ]
-    },
+  entry: {
+    'app': './src/main.ts',
+    'vendor': './src/vendor.ts',
+    'polyfills': './src/polyfills.ts'
+  },
+  output: {
+    // path: '/dist',
+    filename: '[name].js'
+  },
+  module: {
+    rules: [
+      {
+        test: /\.ts$/,
+        loader: 'ts-loader'
+      },
+      {
+        test: /\.html$/,
+        loader: 'html-loader'
+      },
+      {
+        test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
+        loader: 'file-loader?name=assets/[name].[hash].[ext]'
+      },
+      {
+        test: /\.css$/,
+        loaders: 'style-loader!css-loader'
+      },
+      {
+        test: /\.css$/,
+        loader: 'raw-loader'
+      }
+    ]
+  },
 
-    resolve: {
-        extensions: ['.js', '.ts']
-    },
-    plugins: [
-        new webpack.optimize.CommonsChunkPlugin({
-          name: ['app', 'vendor', 'polyfills','vendor.js']
-        }),
-    
-        new HtmlWebpackPlugin({
-          template: 'src/index.html'
-        }),
+  resolve: {
+    extensions: ['.js', '.ts']
+  },
+  plugins: [
+    new webpack.optimize.CommonsChunkPlugin({
+      name: ['app', 'vendor', 'polyfills', 'vendor.js']
+    }),
+
+    new HtmlWebpackPlugin({
+      template: 'src/index.html'
+    }),
+
+    new webpack.ProvidePlugin({
+      $: 'jquery',
+      jQuery: 'jquery',
+      'window.jQuery': 'jquery',
+      jquery: 'jquery',
+      Popper: ['popper.js', 'default'],
+      // In case you imported plugins individually, you must also require them here:
+      Util: "exports-loader?Util!bootstrap/js/dist/util",
+      Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
+      echarts: "echarts"
+    })
+  ],
 
-        new webpack.ProvidePlugin({
-        $: 'jquery',
-        jQuery: 'jquery',
-        'window.jQuery': 'jquery',
-        jquery :'jquery',
-        Popper: ['popper.js', 'default'],
-        // In case you imported plugins individually, you must also require them here:
-        Util: "exports-loader?Util!bootstrap/js/dist/util",
-        Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
-        echarts: "echarts"
-      })
-    ],
-    
 };

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/pom.xml
----------------------------------------------------------------------
diff --git a/ui/pom.xml b/ui/pom.xml
index 707f7c1..f1dece3 100644
--- a/ui/pom.xml
+++ b/ui/pom.xml
@@ -18,133 +18,132 @@ specific language governing permissions and limitations
 under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.apache.griffin</groupId>
         <artifactId>griffin</artifactId>
         <version>0.2.0-incubating-SNAPSHOT</version>
     </parent>
-  <artifactId>ui</artifactId>
-  <packaging>pom</packaging>
+    <artifactId>ui</artifactId>
+    <packaging>pom</packaging>
 
-  <name>Apache Griffin :: UI :: Default UI</name>
-  <url>http://maven.apache.org</url>
+    <name>Apache Griffin :: UI :: Default UI</name>
+    <url>http://maven.apache.org</url>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <java.version>1.8</java.version>
-    <node.version>v6.11.3</node.version>
-    <npm.version>3.10.10</npm.version>
-  </properties>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
+        <node.version>v6.11.3</node.version>
+        <npm.version>3.10.10</npm.version>
+    </properties>
 
 
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>com.github.eirslett</groupId>
+                <artifactId>frontend-maven-plugin</artifactId>
+                <version>1.6</version>
+                <configuration>
+                    <workingDirectory>angular</workingDirectory>
+                    <installDirectory>.tmp</installDirectory>
+                </configuration>
+                <executions>
+                    <!-- It will install nodejs and npm -->
+                    <execution>
+                        <id>install node and npm</id>
+                        <goals>
+                            <goal>install-node-and-npm</goal>
+                        </goals>
+                        <configuration>
+                            <nodeVersion>${node.version}</nodeVersion>
+                            <npmVersion>${npm.version}</npmVersion>
+                        </configuration>
+                    </execution>
 
+                    <!-- It will execute command "npm install" inside "/angular" directory -->
+                    <execution>
+                        <id>npm install</id>
+                        <goals>
+                            <goal>npm</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>install</arguments>
+                        </configuration>
+                    </execution>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>com.github.eirslett</groupId>
-        <artifactId>frontend-maven-plugin</artifactId>
-        <version>1.6</version>
-        <configuration>
-          <workingDirectory>angular</workingDirectory>
-          <installDirectory>.tmp</installDirectory>
-        </configuration>
-        <executions>
-          <!-- It will install nodejs and npm -->
-          <execution>
-            <id>install node and npm</id>
-            <goals>
-              <goal>install-node-and-npm</goal>
-            </goals>
-            <configuration>
-              <nodeVersion>${node.version}</nodeVersion>
-              <npmVersion>${npm.version}</npmVersion>
-            </configuration>
-          </execution>
-
-          <!-- It will execute command "npm install" inside "/angular" directory -->
-          <execution>
-            <id>npm install</id>
-            <goals>
-              <goal>npm</goal>
-            </goals>
-            <configuration>
-              <arguments>install</arguments>
-            </configuration>
-          </execution>
-
-          <!-- It will execute command "npm build" inside "/angular" directory to clean and create "/.tmp" directory-->
-          <execution>
-            <id>npm build</id>
-            <goals>
-              <goal>npm</goal>
-            </goals>
-            <configuration>
-              <arguments>run build</arguments>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>3.0.2</version>
-        <executions>
-          <execution>
-            <id>copy-resources</id>
-            <!-- here the phase you need -->
-            <phase>verify</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${basedir}/../service/src/main/resources/public</outputDirectory>
-              <nonFilteredFileExtensions>
-                <nonFilteredFileExtension>otf</nonFilteredFileExtension>
-                <nonFilteredFileExtension>eot</nonFilteredFileExtension>
-                <nonFilteredFileExtension>svg</nonFilteredFileExtension>
-                <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
-                <nonFilteredFileExtension>woff</nonFilteredFileExtension>
-                <nonFilteredFileExtension>woff.bak</nonFilteredFileExtension>
-                <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
-              </nonFilteredFileExtensions>
-              <resources>
-                <resource>
-                  <directory>${basedir}/angular/dist</directory>
-                  <excludes>
-                    <exclude>src/**</exclude>
-                    <exclude>target/**</exclude>
-                    <exclude>pom.xml</exclude>
-                    <exclude>.DS_Store</exclude>
-                  </excludes>
-                  <filtering>true</filtering>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.6.1</version>
-        <configuration>
-          <source>1.8</source>
-          <target>1.8</target>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+                    <!-- It will execute command "npm build" inside "/angular" directory to clean and create "/.tmp" directory-->
+                    <execution>
+                        <id>npm build</id>
+                        <goals>
+                            <goal>npm</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>run build</arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>3.0.2</version>
+                <executions>
+                    <execution>
+                        <id>copy-resources</id>
+                        <!-- here the phase you need -->
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${basedir}/../service/src/main/resources/public</outputDirectory>
+                            <nonFilteredFileExtensions>
+                                <nonFilteredFileExtension>otf</nonFilteredFileExtension>
+                                <nonFilteredFileExtension>eot</nonFilteredFileExtension>
+                                <nonFilteredFileExtension>svg</nonFilteredFileExtension>
+                                <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
+                                <nonFilteredFileExtension>woff</nonFilteredFileExtension>
+                                <nonFilteredFileExtension>woff.bak</nonFilteredFileExtension>
+                                <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
+                            </nonFilteredFileExtensions>
+                            <resources>
+                                <resource>
+                                    <directory>${basedir}/angular/dist</directory>
+                                    <excludes>
+                                        <exclude>src/**</exclude>
+                                        <exclude>target/**</exclude>
+                                        <exclude>pom.xml</exclude>
+                                        <exclude>.DS_Store</exclude>
+                                    </excludes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.6.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>


[2/5] incubator-griffin git commit: make ui style consistent

Posted by gu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pub/pub.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pub/pub.component.css b/ui/angular/src/app/measure/create-measure/pub/pub.component.css
index 194a251..22a9156 100644
--- a/ui/angular/src/app/measure/create-measure/pub/pub.component.css
+++ b/ui/angular/src/app/measure/create-measure/pub/pub.component.css
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../../../../node_modules/angular2-toaster/toaster.css');
 /* @import url('../../measure.component.css'); */
 
@@ -53,19 +52,19 @@ div.tree div.tree-children::before {
   left: 5px
 }
 
-div.tree treenode>div>.node-wrapper {
+div.tree treenode > div > .node-wrapper {
   margin-left: 24px
 }
 
-div.tree treenode>div>.node-wrapper>.node-content-wrapper {
+div.tree treenode > div > .node-wrapper > .node-content-wrapper {
   margin-left: 4px
 }
 
-div.tree treenode>div.tree-node-leaf>.node-wrapper {
+div.tree treenode > div.tree-node-leaf > .node-wrapper {
   margin-left: 0
 }
 
-div.tree treenode>div::before {
+div.tree treenode > div::before {
   content: "";
   position: absolute;
   border-bottom: 1px dotted #23527c;
@@ -74,7 +73,7 @@ div.tree treenode>div::before {
   left: 7px
 }
 
-div.tree treenode>div .toggle-children-wrapper {
+div.tree treenode > div .toggle-children-wrapper {
   width: 13px;
   height: 13px;
   border: 1px solid #23527c;
@@ -87,7 +86,7 @@ div.tree treenode>div .toggle-children-wrapper {
   z-index: 1
 }
 
-div.tree treenode>div .toggle-children-wrapper::before {
+div.tree treenode > div .toggle-children-wrapper::before {
   content: "";
   display: inline-block;
   width: 7px;
@@ -97,7 +96,7 @@ div.tree treenode>div .toggle-children-wrapper::before {
   left: 2px
 }
 
-div.tree treenode>div .toggle-children-wrapper.toggle-children-wrapper-collapsed::after {
+div.tree treenode > div .toggle-children-wrapper.toggle-children-wrapper-collapsed::after {
   content: "";
   display: inline-block;
   height: 7px;
@@ -107,19 +106,19 @@ div.tree treenode>div .toggle-children-wrapper.toggle-children-wrapper-collapsed
   left: 5px
 }
 
-div.tree treenode>div .toggle-children-wrapper .toggle-children {
+div.tree treenode > div .toggle-children-wrapper .toggle-children {
   display: none
 }
 
-div.tree treenode>div .node-content-wrapper {
+div.tree treenode > div .node-content-wrapper {
   margin-left: 4px
 }
 
-div.tree>treenode>div::before {
+div.tree > treenode > div::before {
   left: 14px
 }
 
-div.tree>treenode>div>.node-wrapper>treenodeexpander>.toggle-children-wrapper {
+div.tree > treenode > div > .node-wrapper > treenodeexpander > .toggle-children-wrapper {
   left: 22px
 }
 
@@ -151,11 +150,11 @@ specific language governing permissions and limitations
 under the License.
 */
 
-.table-striped>tbody>tr:nth-of-type(even) {
+.table-striped > tbody > tr:nth-of-type(even) {
   background-color: #1f1f1f;
 }
 
-.table-striped>tbody>tr:nth-of-type(odd) {
+.table-striped > tbody > tr:nth-of-type(odd) {
   background-color: #080808;
 }
 
@@ -182,11 +181,11 @@ under the License.
   background-color: #7D95CC;
 }
 
-.pagination>li>a {
+.pagination > li > a {
   cursor: pointer;
 }
 
-.swMain>ul {
+.swMain > ul {
   display: table;
   list-style: none;
   margin: 0 0 20px;
@@ -204,13 +203,13 @@ under the License.
   /*height:800px;*/
 }
 
-.swMain>ul li {
+.swMain > ul li {
   display: table-cell;
   text-align: center;
   width: 1%
 }
 
-.swMain>ul li>a:before {
+.swMain > ul li > a:before {
   border-top: 4px solid #c8c7cc;
   /* content: ""; */
   display: block;
@@ -229,7 +228,7 @@ under the License.
   width: 100% !important;
 }
 
-.swMain>ul .stepNumber {
+.swMain > ul .stepNumber {
   background-color: #fff;
   border: 5px solid #c8c7cc;
   border-radius: 100%;
@@ -244,18 +243,18 @@ under the License.
   z-index: 2
 }
 
-.swMain>ul li>a.selected .stepNumber {
+.swMain > ul li > a.selected .stepNumber {
   border-color: #007AFF
 }
 
-.swMain ul li>a.done .stepNumber {
+.swMain ul li > a.done .stepNumber {
   border-color: #007AFF;
   background-color: #007AFF;
   color: #fff;
   text-indent: -9999px
 }
 
-.swMain ul li>a.done .stepNumber:before {
+.swMain ul li > a.done .stepNumber:before {
   content: "\f00c";
   display: inline;
   float: right;
@@ -267,17 +266,17 @@ under the License.
   text-indent: 0
 }
 
-.swMain ul li>a.done.wait .stepNumber {
-  background-color: #F6F6F6!important;
-  color: #CCC!important;
-  text-indent: 0!important
+.swMain ul li > a.done.wait .stepNumber {
+  background-color: #F6F6F6 !important;
+  color: #CCC !important;
+  text-indent: 0 !important
 }
 
-.swMain ul li>a.done.wait .stepNumber:before {
-  content: ""!important
+.swMain ul li > a.done.wait .stepNumber:before {
+  content: "" !important
 }
 
-.swMain>ul li .stepDesc {
+.swMain > ul li .stepDesc {
   color: #8e8e93;
   display: block;
   font-size: 14px;
@@ -289,13 +288,13 @@ under the License.
   z-index: 104
 }
 
-.swMain li>a.done .stepDesc,
-.swMain>ul li>a.selected .stepDesc {
+.swMain li > a.done .stepDesc,
+.swMain > ul li > a.selected .stepDesc {
   /*color: #2B3D53*/
   color: #007AFF
 }
 
-.swMain>ul li>a.disabled {
+.swMain > ul li > a.disabled {
   cursor: default
 }
 
@@ -304,7 +303,7 @@ under the License.
 }
 
 .swMain .stepContainer {
-  height: auto!important
+  height: auto !important
 }
 
 .swMain .y-scrollable {
@@ -331,12 +330,12 @@ fieldset legend {
   top: -12px;
   color: #fff;
   font-weight: 400;
-  width: auto!important;
-  border: none!important;
+  width: auto !important;
+  border: none !important;
 }
 
 .btn-o {
-  background: 0 0!important;
+  background: 0 0 !important;
 }
 
 .btn-wide {
@@ -357,11 +356,11 @@ fieldset legend {
   color: #fff;
 }
 
-.formStep>.stepDesc {
+.formStep > .stepDesc {
   color: #b2c831;
 }
 
-.formStep>.container-fluid {
+.formStep > .container-fluid {
   /*position:relative;*/
 }
 
@@ -375,18 +374,17 @@ fieldset legend {
   border-color: #B9D3DF;
 }
 
-.panel-disabled>.panel-heading {
+.panel-disabled > .panel-heading {
   background-color: #B9D3DF;
   border-color: #B9D3DF;
 }
 
-.panel-body>ul {
+.panel-body > ul {
   border-radius: 0;
   background: none;
   margin: 0;
 }
 
-
 .panel-green {
   border-color: #5cb85c;
 }
@@ -447,11 +445,11 @@ fieldset legend {
   padding: 10px;
 }
 
-.ruletypes>.panel {
+.ruletypes > .panel {
   cursor: pointer
 }
 
-.ruletypes>.panel:hover {
+.ruletypes > .panel:hover {
   box-shadow: 3px 3px 5px 6px #ccc;
   /* Opera 10.5, IE 9, Firefox 4+, Chrome 6+, iOS 5 */
   -webkit-box-shadow: 3px 3px 5px 6px #ccc;
@@ -465,7 +463,6 @@ fieldset legend {
   padding-top: 10px;
 }
 
-
 ::-webkit-scrollbar {
   width: 6px;
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pub/pub.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pub/pub.component.html b/ui/angular/src/app/measure/create-measure/pub/pub.component.html
index 7fd8950..916ede6 100644
--- a/ui/angular/src/app/measure/create-measure/pub/pub.component.html
+++ b/ui/angular/src/app/measure/create-measure/pub/pub.component.html
@@ -23,7 +23,7 @@ under the License.
   <div class="row">
     <form name="Form" id="form" #prForm="ngForm" novalidate>
       <div id="wizard" class="swMain">
-        <ul> 
+        <ul>
           <li>
             <a class="selected">
               <div class="stepNumber">
@@ -33,8 +33,8 @@ under the License.
             </a>
           </li>
         </ul>
-      </div>  
-      <div id="step-4"  class="formStep">
+      </div>
+      <div id="step-4" class="formStep">
         <label class="stepDesc">Please setup the measure required information</label>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
@@ -44,39 +44,47 @@ under the License.
               </legend>
               <div class="y-scrollable">
                 <div class="col-md-12 col-lg-12 col-sm-12" style="margin-top:30px;">
-                  <div class="form-group" [ngClass]="{'has-error':prName.dirty&&prName.invalid, 'has-success':prName.valid}">
+                  <div class="form-group"
+                       [ngClass]="{'has-error':prName.dirty&&prName.invalid, 'has-success':prName.valid}">
                     <label class="col-md-2 col-lg-2 col-sm-2 control-label">
                       Measure Name<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <input type="text" class="form-control" [(ngModel)]="newMeasure.name" #prName="ngModel" name="prName" placeholder="Please input the measure name" required pattern="^[a-zA-Z0-9_-]*$">
+                      <input type="text" class="form-control" [(ngModel)]="newMeasure.name" #prName="ngModel"
+                             name="prName" placeholder="Please input the measure name" required
+                             pattern="^[a-zA-Z0-9_-]*$">
                       <span class="error text-small block " *ngIf="prName.dirty && (prName.errors?.required)">Measure Name is required</span>
                       <span class="error text-small block " *ngIf="prName.dirty && (prName.errors?.pattern)">Only letter, number, "-" and "_" are allowed</span>
                     </div>
                   </div>
                 </div>
-                <div class="col-md-12 col-lg-12 col-sm-12" >
-                  <div class="form-group" [ngClass]="{'has-error':mName.dirty&&mName.invalid, 'has-success':mName.valid}">
+                <div class="col-md-12 col-lg-12 col-sm-12">
+                  <div class="form-group"
+                       [ngClass]="{'has-error':mName.dirty&&mName.invalid, 'has-success':mName.valid}">
                     <label class="col-md-2 col-lg-2 col-sm-2 control-label">
                       Metric Name<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <input type="text" class="form-control" [(ngModel)]="newMeasure.metricName" #mName="ngModel" name="mName" placeholder="Please input the metric name" required pattern="^[a-zA-Z0-9_-]*$">
+                      <input type="text" class="form-control" [(ngModel)]="newMeasure.metricName" #mName="ngModel"
+                             name="mName" placeholder="Please input the metric name" required
+                             pattern="^[a-zA-Z0-9_-]*$">
                       <span class="error text-small block " *ngIf="mName.dirty && (mName.errors?.required)">Metric Name is required</span>
                       <span class="error text-small block " *ngIf="mName.dirty && (mName.errors?.pattern)">Only letter, number, "-" and "_" are allowed</span>
                     </div>
                   </div>
                 </div>
-                <div class="col-md-12 col-lg-12 col-sm-12" >
-                  <div class="form-group" [ngClass]="{'has-error':mName.dirty&&mName.invalid, 'has-success':mName.valid}">
+                <div class="col-md-12 col-lg-12 col-sm-12">
+                  <div class="form-group"
+                       [ngClass]="{'has-error':mName.dirty&&mName.invalid, 'has-success':mName.valid}">
                     <label class="col-md-2 col-lg-2 col-sm-2 control-label">
                       Dq Type<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <select [(ngModel)]="newMeasure.dqType" name="dqTypeOptions[{{i}}]"  class="form-control input-sm" placeholder="Visual Type" required>
-                       <option *ngFor="let t of dqTypeOptions" value="{{t}}">{{t}}</option>
-                      </select>  
-                      <span class="error text-small block " *ngIf="mName.dirty && (mName.errors?.required)">Metric Name is required</span>                     
+                      <select [(ngModel)]="newMeasure.dqType" name="dqTypeOptions[{{i}}]" class="form-control input-sm"
+                              placeholder="Visual Type" required>
+                        <option *ngFor="let t of dqTypeOptions" value="{{t}}">{{t}}</option>
+                      </select>
+                      <span class="error text-small block " *ngIf="mName.dirty && (mName.errors?.required)">Metric Name is required</span>
                     </div>
                   </div>
                 </div>
@@ -86,7 +94,8 @@ under the License.
                       Measure Description:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <input type="text" class="form-control" [(ngModel)]="newMeasure.description" placeholder="Please input detailed description of your measure" name="desc">
+                      <input type="text" class="form-control" [(ngModel)]="newMeasure.description"
+                             placeholder="Please input detailed description of your measure" name="desc">
                     </div>
                   </div>
                 </div>
@@ -96,12 +105,13 @@ under the License.
                       Measure Type:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <select id="typeSelector" class="form-control" [(ngModel)]="newMeasure.measureType" disabled required name="type">
+                      <select id="typeSelector" class="form-control" [(ngModel)]="newMeasure.measureType" disabled
+                              required name="type">
                         <option>{{newMeasure.measureType}}</option>
                       </select>
                     </div>
                   </div>
-                </div> 
+                </div>
                 <div class="col-md-12 col-lg-12 col-sm-12">
                   <div class="form-group">
                     <label class="col-md-2 col-lg-2 col-sm-2 control-label">
@@ -115,7 +125,9 @@ under the License.
               </div>
               <div style="color:#b2c831">
                 <p>
-                  <i class="fa fa-info-circle"></i> After submitted, please go to "<a class="bark-link" routerLink="/measures">Measures</a>" to check the measure status
+                  <i class="fa fa-info-circle"></i> After submitted, please go to "<a class="bark-link"
+                                                                                      routerLink="/measures">Measures</a>"
+                  to check the measure status
                 </p>
               </div>
             </fieldset>
@@ -128,7 +140,9 @@ under the License.
           </div>
         </div>
       </div>
-      <div class="modal fade" id="confirm" role="dialog" #modal tabindex="-1" [ngClass]="{'in': visibleAnimate}" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}" (click)="onContainerClicked($event)">
+      <div class="modal fade" id="confirm" role="dialog" #modal tabindex="-1" [ngClass]="{'in': visibleAnimate}"
+           [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}"
+           (click)="onContainerClicked($event)">
         <div class="modal-dialog modal-xg modal-lg">
           <div class="modal-content">
             <div class="modal-header">
@@ -182,7 +196,7 @@ under the License.
                         <div class="col-md-8 col-lg-8 col-sm-8 ">
                           {{newMeasure.measureType}}
                         </div>
-                      </div> 
+                      </div>
                       <div class="row">
                         <label class="col-md-4 col-lg-4 col-sm-4">
                           Owner:
@@ -193,7 +207,7 @@ under the License.
                       </div>
                     </div>
                   </div>
-                </div>                
+                </div>
               </div>
             </div>
             <div class="modal-footer">

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pub/pub.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pub/pub.component.spec.ts b/ui/angular/src/app/measure/create-measure/pub/pub.component.spec.ts
index 0b74802..aa54581 100644
--- a/ui/angular/src/app/measure/create-measure/pub/pub.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/pub/pub.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { PubComponent } from './pub.component';
+import {PubComponent} from './pub.component';
 
 describe('PrComponent', () => {
   let component: PubComponent;
@@ -26,9 +26,9 @@ describe('PrComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PubComponent ]
+      declarations: [PubComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pub/pub.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pub/pub.component.ts b/ui/angular/src/app/measure/create-measure/pub/pub.component.ts
index e103817..fd01bbd 100644
--- a/ui/angular/src/app/measure/create-measure/pub/pub.component.ts
+++ b/ui/angular/src/app/measure/create-measure/pub/pub.component.ts
@@ -16,20 +16,20 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { FormControl } from "@angular/forms";
-import { FormsModule } from "@angular/forms";
-import { ServiceService } from "../../../service/service.service";
-import { TREE_ACTIONS, KEYS, IActionMapping, ITreeOptions } from "angular-tree-component";
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { ToasterModule, ToasterService, ToasterContainerComponent } from "angular2-toaster";
+import {Component, OnInit} from "@angular/core";
+import {FormControl} from "@angular/forms";
+import {FormsModule} from "@angular/forms";
+import {ServiceService} from "../../../service/service.service";
+import {TREE_ACTIONS, KEYS, IActionMapping, ITreeOptions} from "angular-tree-component";
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {ToasterModule, ToasterService, ToasterContainerComponent} from "angular2-toaster";
 import * as $ from "jquery";
-import { HttpClient } from "@angular/common/http";
-import { Router } from "@angular/router";
-import { DataTableModule } from "angular2-datatable";
-import { AfterViewChecked, ElementRef } from "@angular/core";
-import { AngularMultiSelectModule } from "angular2-multiselect-dropdown/angular2-multiselect-dropdown";
-import { ConfigurationComponent } from "../configuration/configuration.component";
+import {HttpClient} from "@angular/common/http";
+import {Router} from "@angular/router";
+import {DataTableModule} from "angular2-datatable";
+import {AfterViewChecked, ElementRef} from "@angular/core";
+import {AngularMultiSelectModule} from "angular2-multiselect-dropdown/angular2-multiselect-dropdown";
+import {ConfigurationComponent} from "../configuration/configuration.component";
 
 interface pubMeasure {
   name: string;
@@ -39,12 +39,13 @@ interface pubMeasure {
   dqType: string;
   owner: string
 }
+
 export function createPubMeasure(name: string,
-  metricName: string,
-  description: string,
-  measureType: string,
-  dqType: string,
-  owner: string) {
+                                 metricName: string,
+                                 description: string,
+                                 measureType: string,
+                                 dqType: string,
+                                 owner: string) {
   return {
     name,
     metricName,
@@ -54,15 +55,16 @@ export function createPubMeasure(name: string,
     owner
   }
 }
+
 @Component({
   selector: "app-pub",
   templateUrl: "./pub.component.html",
   providers: [ServiceService],
   styleUrls: ["./pub.component.css"]
 })
-export class PubComponent implements AfterViewChecked, OnInit {    
-  newMeasure = createPubMeasure("", "", "","external","ACCURACY","test"); 
-  dqTypeOptions =["accuracy"];
+export class PubComponent implements AfterViewChecked, OnInit {
+  newMeasure = createPubMeasure("", "", "", "external", "ACCURACY", "test");
+  dqTypeOptions = ["accuracy"];
   createResult: any;
   private toasterService: ToasterService;
   public visible = false;
@@ -91,9 +93,9 @@ export class PubComponent implements AfterViewChecked, OnInit {
     });
     $("fieldset").height(
       $(stepSelection).height() -
-        $(stepSelection + ">.stepDesc").height() -
-        $(".btn-container").height() -
-        130
+      $(stepSelection + ">.stepDesc").height() -
+      $(".btn-container").height() -
+      130
     );
     $(".y-scrollable").css({
       height: $("fieldset").height()
@@ -101,7 +103,7 @@ export class PubComponent implements AfterViewChecked, OnInit {
   }
 
 
-  formValidation = function(step) {
+  formValidation = function (step) {
     if (step == undefined) {
       step = this.currentStep;
     }
@@ -138,16 +140,15 @@ export class PubComponent implements AfterViewChecked, OnInit {
     setTimeout(() => (this.visibleAnimate = true), 100);
   }
 
-  
 
-  save() {     
-    var measure2Save ={
-      name:this.newMeasure.name,
+  save() {
+    var measure2Save = {
+      name: this.newMeasure.name,
       "metric.name": this.newMeasure.metricName,
-      "measure.type":this.newMeasure.measureType,
-      description:this.newMeasure.description,
-      "dq.type":this.newMeasure.dqType.toUpperCase(),
-      owner:this.newMeasure.owner
+      "measure.type": this.newMeasure.measureType,
+      description: this.newMeasure.description,
+      "dq.type": this.newMeasure.dqType.toUpperCase(),
+      owner: this.newMeasure.owner
     }
     console.log(measure2Save);
     var addModels = this.serviceService.config.uri.addModels;
@@ -160,7 +161,7 @@ export class PubComponent implements AfterViewChecked, OnInit {
       },
       err => {
         let response = JSON.parse(err.error);
-        if(response.code === '40901'){
+        if (response.code === '40901') {
           this.toasterService.pop("error", "Error!", "Measure name already exists!");
         } else {
           this.toasterService.pop("error", "Error!", "Error when creating measure");
@@ -178,11 +179,11 @@ export class PubComponent implements AfterViewChecked, OnInit {
       mouse: {
         click: (tree, node, $event) => {
           if (node.hasChildren) {
-            
+
             TREE_ACTIONS.TOGGLE_EXPANDED(tree, node, $event);
           } else if (node.data.cols) {
-           
-            
+
+
           }
         }
       }
@@ -209,10 +210,11 @@ export class PubComponent implements AfterViewChecked, OnInit {
     var allDataassets = this.serviceService.config.uri.dataassetlist;
     this.http.get(allDataassets).subscribe(data => {
       this.nodeList = new Array();
-      
+
     });
-    
+
   }
+
   ngAfterViewChecked() {
     this.resizeWindow();
   }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/measure-detail/measure-detail.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/measure-detail/measure-detail.component.html b/ui/angular/src/app/measure/measure-detail/measure-detail.component.html
index fc7d1df..dcf78fa 100644
--- a/ui/angular/src/app/measure/measure-detail/measure-detail.component.html
+++ b/ui/angular/src/app/measure/measure-detail/measure-detail.component.html
@@ -171,7 +171,9 @@ under the License.
           </div>
           <div class="" style="text-align:center;display:block;float:left;margin:0 10px 0 10px">
             <div class="formula-text-up" style="border-bottom:1px solid;">
-              Total Count of Matched records between <span class="badge">{{sourceLength}}</span> <span style="color:green;">{{targetTable}}</span> and <span class="badge">{{sourceLength}}</span> <span style="color:green;">{{sourceTable}}</span> fields
+              Total Count of Matched records between <span class="badge">{{sourceLength}}</span> <span
+              style="color:green;">{{targetTable}}</span> and <span class="badge">{{sourceLength}}</span> <span
+              style="color:green;">{{sourceTable}}</span> fields
             </div>
             <div class="">
               Total Count of records in <span style="color:green;font-weight:bold;">{{targetDB}}&nbsp;&nbsp;{{targetTable}}</span>
@@ -184,7 +186,7 @@ under the License.
       </div>
     </div>
     <div *ngIf="ruleData.type=='profiling'" class="">
-      <div *ngFor="let index of ruleDes;" >
+      <div *ngFor="let index of ruleDes;">
         {{index.name}}&nbsp;:&nbsp;{{index.infos}}
       </div>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/measure-detail/measure-detail.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/measure-detail/measure-detail.component.spec.ts b/ui/angular/src/app/measure/measure-detail/measure-detail.component.spec.ts
index 4a5d8a2..8a8ac40 100644
--- a/ui/angular/src/app/measure/measure-detail/measure-detail.component.spec.ts
+++ b/ui/angular/src/app/measure/measure-detail/measure-detail.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { MeasureDetailComponent } from './measure-detail.component';
+import {MeasureDetailComponent} from './measure-detail.component';
 
 describe('MeasureDetailComponent', () => {
   let component: MeasureDetailComponent;
@@ -26,9 +26,9 @@ describe('MeasureDetailComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ MeasureDetailComponent ]
+      declarations: [MeasureDetailComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/measure-detail/measure-detail.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/measure-detail/measure-detail.component.ts b/ui/angular/src/app/measure/measure-detail/measure-detail.component.ts
index 409c79c..b19636b 100644
--- a/ui/angular/src/app/measure/measure-detail/measure-detail.component.ts
+++ b/ui/angular/src/app/measure/measure-detail/measure-detail.component.ts
@@ -16,11 +16,11 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { Router, ActivatedRoute, ParamMap } from "@angular/router";
+import {Component, OnInit} from "@angular/core";
+import {Router, ActivatedRoute, ParamMap} from "@angular/router";
 import "rxjs/add/operator/switchMap";
-import { HttpClient } from "@angular/common/http";
-import { ServiceService } from "../../service/service.service";
+import {HttpClient} from "@angular/common/http";
+import {ServiceService} from "../../service/service.service";
 
 @Component({
   selector: "app-measure-detail",
@@ -30,12 +30,15 @@ import { ServiceService } from "../../service/service.service";
 })
 export class MeasureDetailComponent implements OnInit {
   currentId: string;
+
   constructor(
     private route: ActivatedRoute,
     private router: Router,
     private http: HttpClient,
     public serviceService: ServiceService
-  ) {}
+  ) {
+  }
+
   ruleData: any;
   ruleDes = [];
   sourceLength: number;
@@ -86,10 +89,10 @@ export class MeasureDetailComponent implements OnInit {
         if (this.ruleData["measure.type"] === "external") {
           this.ruleData.type = this.ruleData["measure.type"].toLowerCase();
           this.ruleData.dqType = this.ruleData["dq.type"].toLowerCase();
-        } else{
+        } else {
           this.ruleData.type = this.ruleData["dq.type"].toLowerCase();
           this.currentrule = this.ruleData["evaluate.rule"].rules;
-          if(this.ruleData["rule.description"]){
+          if (this.ruleData["rule.description"]) {
             this.ruleDes = this.ruleData["rule.description"].details
           }
           this.fetchData("source", 0);
@@ -107,4 +110,4 @@ export class MeasureDetailComponent implements OnInit {
       }
     );
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/measure.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/measure.component.css b/ui/angular/src/app/measure/measure.component.css
index 0483912..3d1d82f 100644
--- a/ui/angular/src/app/measure/measure.component.css
+++ b/ui/angular/src/app/measure/measure.component.css
@@ -17,11 +17,11 @@ specific language governing permissions and limitations
 under the License.
 */
 
-.table-striped>tbody>tr:nth-of-type(even) {
+.table-striped > tbody > tr:nth-of-type(even) {
   background-color: #1f1f1f;
 }
 
-.table-striped>tbody>tr:nth-of-type(odd) {
+.table-striped > tbody > tr:nth-of-type(odd) {
   background-color: #080808;
 }
 
@@ -48,11 +48,11 @@ under the License.
   background-color: #7D95CC;
 }
 
-.pagination>li>a {
+.pagination > li > a {
   cursor: pointer;
 }
 
-.swMain>ul {
+.swMain > ul {
   display: table;
   list-style: none;
   margin: 0 30px 20px 30px;
@@ -69,13 +69,13 @@ under the License.
   /*height:800px;*/
 }
 
-.swMain>ul li {
+.swMain > ul li {
   display: table-cell;
   text-align: center;
   width: 1%
 }
 
-.swMain>ul li>a:before {
+.swMain > ul li > a:before {
   border-top: 4px solid #c8c7cc;
   content: "";
   display: block;
@@ -88,18 +88,18 @@ under the License.
   z-index: 1
 }
 
-.swMain>ul li:first-child>a:before {
+.swMain > ul li:first-child > a:before {
   left: 50%;
   max-width: 51%
 }
 
-.swMain>ul li:last-child>a:before {
+.swMain > ul li:last-child > a:before {
   max-width: 50%;
   width: 50%
 }
 
-.swMain li>a.done:before,
-.swMain>ul li>a.selected:before {
+.swMain li > a.done:before,
+.swMain > ul li > a.selected:before {
   border-color: #007AFF
 }
 
@@ -109,7 +109,7 @@ under the License.
   width: 100% !important;
 }
 
-.swMain>ul .stepNumber {
+.swMain > ul .stepNumber {
   background-color: #fff;
   border: 5px solid #c8c7cc;
   border-radius: 100%;
@@ -124,18 +124,18 @@ under the License.
   z-index: 2
 }
 
-.swMain>ul li>a.selected .stepNumber {
+.swMain > ul li > a.selected .stepNumber {
   border-color: #007AFF
 }
 
-.swMain ul li>a.done .stepNumber {
+.swMain ul li > a.done .stepNumber {
   border-color: #007AFF;
   background-color: #007AFF;
   color: #fff;
   text-indent: -9999px
 }
 
-.swMain ul li>a.done .stepNumber:before {
+.swMain ul li > a.done .stepNumber:before {
   content: "\f00c";
   display: inline;
   float: right;
@@ -147,17 +147,17 @@ under the License.
   text-indent: 0
 }
 
-.swMain ul li>a.done.wait .stepNumber {
-  background-color: #F6F6F6!important;
-  color: #CCC!important;
-  text-indent: 0!important
+.swMain ul li > a.done.wait .stepNumber {
+  background-color: #F6F6F6 !important;
+  color: #CCC !important;
+  text-indent: 0 !important
 }
 
-.swMain ul li>a.done.wait .stepNumber:before {
-  content: ""!important
+.swMain ul li > a.done.wait .stepNumber:before {
+  content: "" !important
 }
 
-.swMain>ul li .stepDesc {
+.swMain > ul li .stepDesc {
   color: #8e8e93;
   display: block;
   font-size: 14px;
@@ -169,13 +169,13 @@ under the License.
   z-index: 104
 }
 
-.swMain li>a.done .stepDesc,
-.swMain>ul li>a.selected .stepDesc {
+.swMain li > a.done .stepDesc,
+.swMain > ul li > a.selected .stepDesc {
   /*color: #2B3D53*/
   color: #007AFF
 }
 
-.swMain>ul li>a.disabled {
+.swMain > ul li > a.disabled {
   cursor: default
 }
 
@@ -184,7 +184,7 @@ under the License.
 }
 
 .swMain .stepContainer {
-  height: auto!important
+  height: auto !important
 }
 
 .swMain .y-scrollable {
@@ -210,12 +210,12 @@ fieldset legend {
   top: -12px;
   color: #fff;
   font-weight: 400;
-  width: auto!important;
-  border: none!important;
+  width: auto !important;
+  border: none !important;
 }
 
 .btn-o {
-  background: 0 0!important;
+  background: 0 0 !important;
 }
 
 .btn-wide {
@@ -236,11 +236,11 @@ fieldset legend {
   color: #fff;
 }
 
-.formStep>.stepDesc {
+.formStep > .stepDesc {
   color: #b2c831;
 }
 
-.formStep>.container-fluid {
+.formStep > .container-fluid {
   /*position:relative;*/
 }
 
@@ -254,18 +254,17 @@ fieldset legend {
   border-color: #B9D3DF;
 }
 
-.panel-disabled>.panel-heading {
+.panel-disabled > .panel-heading {
   background-color: #B9D3DF;
   border-color: #B9D3DF;
 }
 
-.panel-body>ul {
+.panel-body > ul {
   border-radius: 0;
   background: none;
   margin: 0;
 }
 
-
 .panel-green {
   border-color: #5cb85c;
 }
@@ -326,11 +325,11 @@ fieldset legend {
   padding: 10px;
 }
 
-.ruletypes>.panel {
+.ruletypes > .panel {
   cursor: pointer
 }
 
-.ruletypes>.panel:hover {
+.ruletypes > .panel:hover {
   box-shadow: 3px 3px 5px 6px #ccc;
   /* Opera 10.5, IE 9, Firefox 4+, Chrome 6+, iOS 5 */
   -webkit-box-shadow: 3px 3px 5px 6px #ccc;
@@ -344,7 +343,6 @@ fieldset legend {
   padding-top: 10px;
 }
 
-
 ::-webkit-scrollbar {
   width: 6px;
 }
@@ -384,14 +382,16 @@ a {
   color: white;
 }
 
-.swMain li>div.done .stepDesc,
-.swMain>ul li>div.selected1child .stepDesc {
+.swMain li > div.done .stepDesc,
+.swMain > ul li > div.selected1child .stepDesc {
   color: #007AFF
 }
-.swMain li>div.done:before,
-.swMain>ul li>div.selected1child:before {
+
+.swMain li > div.done:before,
+.swMain > ul li > div.selected1child:before {
   border-color: #007AFF
 }
-.swMain>ul li>div.selected1child .stepNumber {
+
+.swMain > ul li > div.selected1child .stepNumber {
   border-color: #007AFF
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/measure.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/measure.component.html b/ui/angular/src/app/measure/measure.component.html
index 09991e7..5541b87 100644
--- a/ui/angular/src/app/measure/measure.component.html
+++ b/ui/angular/src/app/measure/measure.component.html
@@ -19,53 +19,55 @@ under the License.
 <div>
   <p>
     <a routerLink="/createmeasure" style="background-color: #337ab7;" class="btn btn-primary  btn-wide">
-      <i class="fa fa-plus"></i> 
+      <i class="fa fa-plus"></i>
       Create Measure
     </a>
   </p>
   <div id="modelContainer">
     <table class="table table-striped" [mfData]="results" #mf="mfDataTable" [mfRowsOnPage]="10">
       <thead>
-        <tr style="background-color:#7D95CC">
-          <th st-ratio="15">Measure Name</th>
-          <th st-ratio="15">Measure Type</th>
-          <th st-ratio="20">Description</th>
-          <!-- <th st-ratio="5">Group</th> -->
-          <th st-ratio="5">Action</th>
-        </tr>
+      <tr style="background-color:#7D95CC">
+        <th st-ratio="15">Measure Name</th>
+        <th st-ratio="15">Measure Type</th>
+        <th st-ratio="20">Description</th>
+        <!-- <th st-ratio="5">Group</th> -->
+        <th st-ratio="5">Action</th>
+      </tr>
       </thead>
       <tbody>
-        <tr *ngIf="!results">
-          <td colspan="7" style="text-align:center;display:none">No content!</td>
-          <!-- <td class="icon" style="border-top-style:none">
-            <span class="fa fa-spinner fa-spin fa-3x fa-fw"></span>
-          </td> -->
-        </tr>
-        <tr *ngFor="let row of mf.data">
-          <td><a routerLink="/measure/{{row.id}}">{{row.name}}</a></td>
-          <td>{{row["dq.type"].toLowerCase()}}</td>
-          <td>{{row.description}}</td>
-          <td>
-            &nbsp;
-            <a (click)="remove(row)" title="delete" style="text-decoration:none">
-              <i class="fa fa-trash-o po"></i>
-            </a> &nbsp;
-            <a routerLink="/measure/{{row.id}}" title="subscribe">
-              <i class="fa fa-eye"></i>
-            </a>
-          </td>
-        </tr>
+      <tr *ngIf="!results">
+        <td colspan="7" style="text-align:center;display:none">No content!</td>
+        <!-- <td class="icon" style="border-top-style:none">
+          <span class="fa fa-spinner fa-spin fa-3x fa-fw"></span>
+        </td> -->
+      </tr>
+      <tr *ngFor="let row of mf.data">
+        <td><a routerLink="/measure/{{row.id}}">{{row.name}}</a></td>
+        <td>{{row["dq.type"].toLowerCase()}}</td>
+        <td>{{row.description}}</td>
+        <td>
+          &nbsp;
+          <a (click)="remove(row)" title="delete" style="text-decoration:none">
+            <i class="fa fa-trash-o po"></i>
+          </a> &nbsp;
+          <a routerLink="/measure/{{row.id}}" title="subscribe">
+            <i class="fa fa-eye"></i>
+          </a>
+        </td>
+      </tr>
       </tbody>
       <tfoot>
-        <tr>
-          <td colspan="8" class="text-right">
-            <mfBootstrapPaginator></mfBootstrapPaginator>
-          </td>
-        </tr>
+      <tr>
+        <td colspan="8" class="text-right">
+          <mfBootstrapPaginator></mfBootstrapPaginator>
+        </td>
+      </tr>
       </tfoot>
     </table>
   </div>
-  <div class="modal fade" id="deleteConfirmation" role="dialog" #modal tabindex="-1" [ngClass]="{'in': visibleAnimate}" *ngIf="deletedRow" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}" (click)="onContainerClicked($event)">
+  <div class="modal fade" id="deleteConfirmation" role="dialog" #modal tabindex="-1" [ngClass]="{'in': visibleAnimate}"
+       *ngIf="deletedRow" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}"
+       (click)="onContainerClicked($event)">
     <div class="modal-dialog modal-xg modal-lg">
       <div class="modal-content">
         <div class="modal-header">
@@ -128,7 +130,8 @@ under the License.
           </div>
         </div>
         <div class="modal-footer">
-          <p class="delete-alert">If you delete this measure, your running jobs on this measure will also be deleted, please be careful!</p>
+          <p class="delete-alert">If you delete this measure, your running jobs on this measure will also be deleted,
+            please be careful!</p>
           <button type="button" id="save" class="btn btn-default" (click)="confirmDelete()">Yes</button>
           <button type="button" class="btn btn-primary" (click)="hide()">No</button>
         </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/measure.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/measure.component.spec.ts b/ui/angular/src/app/measure/measure.component.spec.ts
index c615b4f..f6cf3fa 100644
--- a/ui/angular/src/app/measure/measure.component.spec.ts
+++ b/ui/angular/src/app/measure/measure.component.spec.ts
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { MeasureComponent } from './measure.component';
+import {MeasureComponent} from './measure.component';
 
 describe('MeasureComponent', () => {
   let component: MeasureComponent;
@@ -27,9 +27,9 @@ describe('MeasureComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ MeasureComponent ]
+      declarations: [MeasureComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/measure.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/measure.component.ts b/ui/angular/src/app/measure/measure.component.ts
index 19ea70f..23f7a15 100644
--- a/ui/angular/src/app/measure/measure.component.ts
+++ b/ui/angular/src/app/measure/measure.component.ts
@@ -16,15 +16,15 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { HttpClient } from "@angular/common/http";
-import { DataTableModule } from "angular2-datatable";
-import { Router } from "@angular/router";
-import { FormControl } from "@angular/forms";
-import { FormsModule } from "@angular/forms";
-import { ServiceService } from "../service/service.service";
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { ToasterModule, ToasterService } from "angular2-toaster";
+import {Component, OnInit} from "@angular/core";
+import {HttpClient} from "@angular/common/http";
+import {DataTableModule} from "angular2-datatable";
+import {Router} from "@angular/router";
+import {FormControl} from "@angular/forms";
+import {FormsModule} from "@angular/forms";
+import {ServiceService} from "../service/service.service";
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {ToasterModule, ToasterService} from "angular2-toaster";
 import * as $ from "jquery";
 
 @Component({
@@ -71,7 +71,7 @@ export class MeasureComponent implements OnInit {
     this.deleteIndex = this.results.indexOf(row);
     this.deletedRow = row;
     $("#save").removeAttr("disabled");
-    if(this.deletedRow["measure.type"]!=="external"){
+    if (this.deletedRow["measure.type"] !== "external") {
       var sourcedata = this.deletedRow["data.sources"][0].connectors[0].config;
       this.sourceTable = sourcedata["table.name"];
     }
@@ -90,7 +90,7 @@ export class MeasureComponent implements OnInit {
     this.http.delete(deleteUrl).subscribe(
       data => {
         var self = this;
-        setTimeout(function() {
+        setTimeout(function () {
           self.results.splice(self.deleteIndex, 1);
           self.hide();
         }, 200);
@@ -113,7 +113,7 @@ export class MeasureComponent implements OnInit {
       //     data[measure].type = '';
       //   }
       // }
-      let trans = Object.keys(data).map(function(index) {
+      let trans = Object.keys(data).map(function (index) {
         let measure = data[index];
         if (measure["measure.type"] === "external") {
           measure["dq.type"] = "external";
@@ -125,7 +125,7 @@ export class MeasureComponent implements OnInit {
         return measure;
       });
       // this.results = Object.assign([],trans).reverse();
-      this.results = Object.assign([],trans).sort(function(a,b){
+      this.results = Object.assign([], trans).sort(function (a, b) {
         return b.id - a.id;
       });
     });

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/metric/detail-metric/detail-metric.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/metric/detail-metric/detail-metric.component.css b/ui/angular/src/app/metric/detail-metric/detail-metric.component.css
index 924c34a..ee1b824 100644
--- a/ui/angular/src/app/metric/detail-metric/detail-metric.component.css
+++ b/ui/angular/src/app/metric/detail-metric/detail-metric.component.css
@@ -45,11 +45,11 @@ under the License.
   vertical-align: top;
 }
 
-.main-table>tbody>tr:nth-of-type(even) {
+.main-table > tbody > tr:nth-of-type(even) {
   background-color: #1f1f1f;
 }
 
-.main-table>tbody>tr:nth-of-type(odd) {
+.main-table > tbody > tr:nth-of-type(odd) {
   background-color: #080808;
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/metric/detail-metric/detail-metric.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/metric/detail-metric/detail-metric.component.html b/ui/angular/src/app/metric/detail-metric/detail-metric.component.html
index f99e5fe..66c9d8d 100644
--- a/ui/angular/src/app/metric/detail-metric/detail-metric.component.html
+++ b/ui/angular/src/app/metric/detail-metric/detail-metric.component.html
@@ -20,7 +20,8 @@ under the License.
   <b>No content</b>
 </div>
 
-<div *ngIf="!noresults" id="bigChartContainer" class="big-chart-container" (window:resize)="onResize($event)" style="display:none;">
+<div *ngIf="!noresults" id="bigChartContainer" class="big-chart-container" (window:resize)="onResize($event)"
+     style="display:none;">
   <div id="bigChartShow" class="big-chart-content">
     <div class="container-fluid">
       <div class="row">
@@ -37,31 +38,34 @@ under the License.
   <div class="table-wrap">
     <table class="main-table y-scrollable" [mfData]="prodata" #mf="mfDataTable" [mfRowsOnPage]="18">
       <thead>
-        <tr style="background-color:#7D95CC">
-          <th class="fixed-side" scope="col" style="background-color:#7D95CC">Time</th>
-          <th class="cover" scope="col">Time</th>
-          <th scope="col" *ngFor="let name of this.columnname" style="text-align: center;">{{name}}</th>
-        </tr>
+      <tr style="background-color:#7D95CC">
+        <th class="fixed-side" scope="col" style="background-color:#7D95CC">Time</th>
+        <th class="cover" scope="col">Time</th>
+        <th scope="col" *ngFor="let name of this.columnname" style="text-align: center;">{{name}}</th>
+      </tr>
       </thead>
       <tbody>
-        <tr *ngFor="let item of mf.data">
-          <th class="fixed-side">{{(item.tmst | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }}</th>
-          <th class="cover">{{(item.tmst | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }}</th>
-          <td *ngFor="let key of objectKeys(item.value)">{{item.value[key]}}</td>
-        </tr>
+      <tr *ngFor="let item of mf.data">
+        <th class="fixed-side">{{(item.tmst | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }}</th>
+        <th class="cover">{{(item.tmst | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }}</th>
+        <td *ngFor="let key of objectKeys(item.value)">{{item.value[key]}}</td>
+      </tr>
       </tbody>
       <tfoot>
-        <tr>
-          <td class="text-center" colspan="8" style="background-color:#1f1f1f;position: fixed;margin-left: 30%;" id="pagination">
-            <mfBootstrapPaginator></mfBootstrapPaginator>
-          </td>
-        </tr>
+      <tr>
+        <td class="text-center" colspan="8" style="background-color:#1f1f1f;position: fixed;margin-left: 30%;"
+            id="pagination">
+          <mfBootstrapPaginator></mfBootstrapPaginator>
+        </td>
+      </tr>
       </tfoot>
     </table>
   </div>
 </div>
 
-<div class="modal fade" id="downloadSampleModal" role="dialog" tabindex="-1" [ngClass]="{'in': visibleAnimate}" *ngIf="missRecordList" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}" (click)="onContainerClicked($event)">
+<div class="modal fade" id="downloadSampleModal" role="dialog" tabindex="-1" [ngClass]="{'in': visibleAnimate}"
+     *ngIf="missRecordList" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}"
+     (click)="onContainerClicked($event)">
   <div class="modal-dialog modal-md modal-md">
     <div class="modal-content">
       <div class="modal-header">
@@ -71,24 +75,25 @@ under the License.
       </div>
       <div class="modal-body">
         <div class="container-fluid" id="dowloadContent" style="overflow:auto;">
-          <tr  >
+          <tr>
             <td colspan="7" style="padding:20px 30px 10px 30px;">
               <table class="table table-striped" [mfData]="missRecordList" #mf2="mfDataTable" [mfRowsOnPage]="10">
 
                 <tbody>
-                  <tr *ngIf="!missRecordList">
-                    <td colspan="7" style="text-align:center">No content.</td>
-                  </tr>
-                  <tr *ngFor="let item of mf2.data">
-                    <td style="background-color:black;"><a (click)="downloadSample(item)" >{{item.tmst}}  {{item.tmst | date: 'yyyy/MM/dd HH:mm:ss'}}</a>  </td>
-                  </tr>
+                <tr *ngIf="!missRecordList">
+                  <td colspan="7" style="text-align:center">No content.</td>
+                </tr>
+                <tr *ngFor="let item of mf2.data">
+                  <td style="background-color:black;"><a (click)="downloadSample(item)">{{item.tmst}} {{item.tmst |
+                    date: 'yyyy/MM/dd HH:mm:ss'}}</a></td>
+                </tr>
                 </tbody>
                 <tfoot>
-                  <tr>
-                    <td class="text-center" colspan="8" style="background-color:#1f1f1f;" id="paginationdownlad">
-                      <mfBootstrapPaginator></mfBootstrapPaginator>
-                    </td>
-                  </tr>
+                <tr>
+                  <td class="text-center" colspan="8" style="background-color:#1f1f1f;" id="paginationdownlad">
+                    <mfBootstrapPaginator></mfBootstrapPaginator>
+                  </td>
+                </tr>
                 </tfoot>
               </table>
             </td>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/metric/detail-metric/detail-metric.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/metric/detail-metric/detail-metric.component.spec.ts b/ui/angular/src/app/metric/detail-metric/detail-metric.component.spec.ts
index 2eb668d..42a922e 100644
--- a/ui/angular/src/app/metric/detail-metric/detail-metric.component.spec.ts
+++ b/ui/angular/src/app/metric/detail-metric/detail-metric.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { DetailMetricComponent } from './detail-metric.component';
+import {DetailMetricComponent} from './detail-metric.component';
 
 describe('DetailMetricComponent', () => {
   let component: DetailMetricComponent;
@@ -26,9 +26,9 @@ describe('DetailMetricComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ DetailMetricComponent ]
+      declarations: [DetailMetricComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/metric/detail-metric/detail-metric.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/metric/detail-metric/detail-metric.component.ts b/ui/angular/src/app/metric/detail-metric/detail-metric.component.ts
index 5279f93..9294641 100644
--- a/ui/angular/src/app/metric/detail-metric/detail-metric.component.ts
+++ b/ui/angular/src/app/metric/detail-metric/detail-metric.component.ts
@@ -16,14 +16,23 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit, OnChanges, SimpleChanges, OnDestroy, AfterViewInit, AfterViewChecked, NgZone } from "@angular/core";
-import { ChartService } from "../../service/chart.service";
-import { ServiceService } from "../../service/service.service";
-import { Router, ActivatedRoute, ParamMap } from "@angular/router";
+import {
+  Component,
+  OnInit,
+  OnChanges,
+  SimpleChanges,
+  OnDestroy,
+  AfterViewInit,
+  AfterViewChecked,
+  NgZone
+} from "@angular/core";
+import {ChartService} from "../../service/chart.service";
+import {ServiceService} from "../../service/service.service";
+import {Router, ActivatedRoute, ParamMap} from "@angular/router";
 import "rxjs/add/operator/switchMap";
-import { HttpClient } from "@angular/common/http";
+import {HttpClient} from "@angular/common/http";
 import * as $ from "jquery";
-import { DataTableModule } from "angular2-datatable";
+import {DataTableModule} from "angular2-datatable";
 
 @Component({
   selector: "app-detail-metric",
@@ -33,6 +42,7 @@ import { DataTableModule } from "angular2-datatable";
 })
 export class DetailMetricComponent implements AfterViewChecked, OnInit {
   objectKeys = Object.keys;
+
   constructor(
     public chartService: ChartService,
     private route: ActivatedRoute,
@@ -40,7 +50,9 @@ export class DetailMetricComponent implements AfterViewChecked, OnInit {
     private http: HttpClient,
     private zone: NgZone,
     public serviceService: ServiceService
-  ) {}
+  ) {
+  }
+
   selectedMeasure: string;
   chartOption: {};
   data: any;
@@ -73,10 +85,10 @@ export class DetailMetricComponent implements AfterViewChecked, OnInit {
     this.http.get(metricDetailUrl).subscribe(
       data => {
         this.data = data;
-        if(this.data.length == 0){
+        if (this.data.length == 0) {
           this.noresults = true;
         }
-        if(this.data.length != 0 && this.data[0].value.matched != undefined){
+        if (this.data.length != 0 && this.data[0].value.matched != undefined) {
           var metric = {
             name: "",
             timestamp: 0,
@@ -87,27 +99,27 @@ export class DetailMetricComponent implements AfterViewChecked, OnInit {
           metric.timestamp = this.data[0].tmst;
           metric.dq =
             this.data[0].value.matched / this.data[0].value.total * 100;
-            metric.details = JSON.parse(JSON.stringify(this.data));
+          metric.details = JSON.parse(JSON.stringify(this.data));
           this.chartOption = this.chartService.getOptionBig(metric);
-          this.missRecordList = metric.details.filter(val => val.value.missed!== 0);
+          this.missRecordList = metric.details.filter(val => val.value.missed !== 0);
           $("#bigChartDiv").height(window.innerHeight - 120 + "px");
           $("#bigChartDiv").width(window.innerWidth - 400 + "px");
           $("#bigChartContainer").show();
-        }else if(this.data.length != 0){
+        } else if (this.data.length != 0) {
           this.prodata = this.data;
           this.profiling = true;
-          for(let item of this.prodata){
-            for(let key in item.value){
-              if(typeof(item.value[key]) != "object"){
+          for (let item of this.prodata) {
+            for (let key in item.value) {
+              if (typeof(item.value[key]) != "object") {
                 item.value[key].toString();
-              }else{
+              } else {
                 let keysplit = key.split('-');
-                let records ='';
+                let records = '';
                 let record;
-                for(let i in item.value[key]){
-                  let name,count;
-                  for(let category in item.value[key][i]){
-                    if(category != "count"){
+                for (let i in item.value[key]) {
+                  let name, count;
+                  for (let category in item.value[key][i]) {
+                    if (category != "count") {
                       name = item.value[key][i][category];
                       count = item.value[key][i].count;
                     }
@@ -138,7 +150,7 @@ export class DetailMetricComponent implements AfterViewChecked, OnInit {
               }
             }
           }
-          for(let key in this.data[0].value){
+          for (let key in this.data[0].value) {
             this.columnname.push(key);
           }
         }
@@ -158,7 +170,8 @@ export class DetailMetricComponent implements AfterViewChecked, OnInit {
     $("#bigChartDiv").width($("#mainWindow").width());
   }
 
-  getData(metricName) {}
+  getData(metricName) {
+  }
 
   ngAfterViewChecked() {
     $(".main-table").addClass('clone');
@@ -173,20 +186,21 @@ export class DetailMetricComponent implements AfterViewChecked, OnInit {
     this.visibleAnimate = false;
     setTimeout(() => (this.visible = false), 300);
   }
+
   public onContainerClicked(event: MouseEvent): void {
     if ((<HTMLElement>event.target).classList.contains("close")) {
       this.hide();
     }
   }
-  
-  downloadSample(row){
+
+  downloadSample(row) {
     let urlDownload = this.serviceService.config.uri.missRecordDownload + "?jobName=" + row.name + "&ts=" + row.tmst;
     this.http
       .get(urlDownload,
-      { responseType: 'blob', observe: 'response' })
+        {responseType: 'blob', observe: 'response'})
       .map(res => {
         return {
-          filename: row.name+"_"+row.tmst+'_missRecordSample.json',
+          filename: row.name + "_" + row.tmst + '_missRecordSample.json',
           data: res.body
         };
       })
@@ -206,5 +220,5 @@ export class DetailMetricComponent implements AfterViewChecked, OnInit {
       }, () => {
         console.log('Completed file download.')
       });
-    }
   }
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/metric/metric.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/metric/metric.component.html b/ui/angular/src/app/metric/metric.component.html
index 01e0080..fd7927d 100644
--- a/ui/angular/src/app/metric/metric.component.html
+++ b/ui/angular/src/app/metric/metric.component.html
@@ -22,7 +22,8 @@ under the License.
       <div class="form-group">
         <span style="padding-left:30px;">
 	      <label>Measure: </label>
-	        <select class="form-control"  (change)="changeMeasure()" [(ngModel)]="selectedMeasureIndex" id="measureSelector">
+	        <select class="form-control" (change)="changeMeasure()" [(ngModel)]="selectedMeasureIndex"
+                  id="measureSelector">
               <option value="0"> -- All -- </option>
               <option *ngFor="let key of measureOptions;let n = index" value="{{n+1}}">{{key}}</option>
 	        </select>
@@ -31,18 +32,20 @@ under the License.
     </div>
     <!-- <div class="col-sm-5 chartItem"  *ngFor="let outerItems of finalData;let parent=index" style="margin-bottom:30px;margin-right:15px;"> -->
     <div *ngFor="let outerItems of finalData;let parent=index">
-      <!-- <div class="row">      
+      <!-- <div class="row">
         <div style="text-align: center;" >
           <h4>{{outerItems.name}}</h4>
         </div>
       </div> -->
       <!-- <div class="row"> -->
-        <div class="col-sm-6 col-md-4 col-xs-12 col-lg-3 chartItem" *ngFor="let items of outerItems.metrics;let i=index;" style="margin-bottom:30px;">
-          <!-- <div *ngFor="let items of outerItems.metrics;let i=index;"> -->
-          <div class="row-fluid" style="cursor: pointer;">
-            <div id="thumbnail{{parent}}-{{i}}" class="thumb-chart" style="border: 2px solid;" echarts [options]="getOption(parent,i)" (click)="goTo(parent,i)"></div>
-          </div>
+      <div class="col-sm-6 col-md-4 col-xs-12 col-lg-3 chartItem" *ngFor="let items of outerItems.metrics;let i=index;"
+           style="margin-bottom:30px;">
+        <!-- <div *ngFor="let items of outerItems.metrics;let i=index;"> -->
+        <div class="row-fluid" style="cursor: pointer;">
+          <div id="thumbnail{{parent}}-{{i}}" class="thumb-chart" style="border: 2px solid;" echarts
+               [options]="getOption(parent,i)" (click)="goTo(parent,i)"></div>
         </div>
+      </div>
       <!-- </div> -->
     </div>
   </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/metric/metric.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/metric/metric.component.spec.ts b/ui/angular/src/app/metric/metric.component.spec.ts
index e93d618..5ac910b 100644
--- a/ui/angular/src/app/metric/metric.component.spec.ts
+++ b/ui/angular/src/app/metric/metric.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { MetricComponent } from './metric.component';
+import {MetricComponent} from './metric.component';
 
 describe('MetricComponent', () => {
   let component: MetricComponent;
@@ -26,9 +26,9 @@ describe('MetricComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ MetricComponent ]
+      declarations: [MetricComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/metric/metric.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/metric/metric.component.ts b/ui/angular/src/app/metric/metric.component.ts
index 1fce6c5..4b52086 100644
--- a/ui/angular/src/app/metric/metric.component.ts
+++ b/ui/angular/src/app/metric/metric.component.ts
@@ -16,11 +16,11 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { HttpClient } from "@angular/common/http";
-import { Router } from "@angular/router";
-import { ChartService } from "../service/chart.service";
-import { ServiceService } from "../service/service.service";
+import {Component, OnInit} from "@angular/core";
+import {HttpClient} from "@angular/common/http";
+import {Router} from "@angular/router";
+import {ChartService} from "../service/chart.service";
+import {ServiceService} from "../service/service.service";
 import * as $ from "jquery";
 
 @Component({
@@ -35,7 +35,9 @@ export class MetricComponent implements OnInit {
     public serviceService: ServiceService,
     private http: HttpClient,
     private router: Router
-  ) {}
+  ) {
+  }
+
   data: any;
   finalData = [];
   chartOption = new Map();
@@ -50,7 +52,7 @@ export class MetricComponent implements OnInit {
     this.renderData();
   }
 
-  checkvalue(job){
+  checkvalue(job) {
     return job.metricValues.length === 0;
   }
 
@@ -58,9 +60,9 @@ export class MetricComponent implements OnInit {
     let url_dashboard = this.serviceService.config.uri.dashboard;
     this.http.get(url_dashboard).subscribe(data => {
       this.mesWithJob = JSON.parse(JSON.stringify(data));
-      for(let i=0;i<this.mesWithJob.length;i++) {
-        if(this.mesWithJob[i].some(this.checkvalue)){
-          this.mesWithJob[i].splice(i,1);
+      for (let i = 0; i < this.mesWithJob.length; i++) {
+        if (this.mesWithJob[i].some(this.checkvalue)) {
+          this.mesWithJob[i].splice(i, 1);
         }
       }
       for (let mesName in this.mesWithJob) {
@@ -77,7 +79,7 @@ export class MetricComponent implements OnInit {
           node.type = "ACCURACY";
           for (let i = 0; i < jobs.length; i++) {
             if (jobs[i].metricValues.length != 0) {
-              var someMetrics = jobs[i].metricValues.slice(0,30);
+              var someMetrics = jobs[i].metricValues.slice(0, 30);
               jobs[i].metricValues = JSON.parse(
                 JSON.stringify(someMetrics)
               );
@@ -162,7 +164,7 @@ export class MetricComponent implements OnInit {
       }
     }
     var self = this;
-    setTimeout(function() {
+    setTimeout(function () {
       self.redraw(self.finalData);
     }, 0);
   }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/mydashboard/mydashboard.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/mydashboard/mydashboard.component.spec.ts b/ui/angular/src/app/mydashboard/mydashboard.component.spec.ts
index 7306847..abbb512 100644
--- a/ui/angular/src/app/mydashboard/mydashboard.component.spec.ts
+++ b/ui/angular/src/app/mydashboard/mydashboard.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { MydashboardComponent } from './mydashboard.component';
+import {MydashboardComponent} from './mydashboard.component';
 
 describe('MydashboardComponent', () => {
   let component: MydashboardComponent;
@@ -26,9 +26,9 @@ describe('MydashboardComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ MydashboardComponent ]
+      declarations: [MydashboardComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/mydashboard/mydashboard.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/mydashboard/mydashboard.component.ts b/ui/angular/src/app/mydashboard/mydashboard.component.ts
index 11573d2..848d877 100644
--- a/ui/angular/src/app/mydashboard/mydashboard.component.ts
+++ b/ui/angular/src/app/mydashboard/mydashboard.component.ts
@@ -16,8 +16,8 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from '@angular/core';
-import { Router } from '@angular/router';
+import {Component, OnInit} from '@angular/core';
+import {Router} from '@angular/router';
 
 @Component({
   selector: 'app-mydashboard',
@@ -26,7 +26,8 @@ import { Router } from '@angular/router';
 })
 export class MydashboardComponent implements OnInit {
 
-  constructor(public router: Router) { }
+  constructor(public router: Router) {
+  }
 
   ngOnInit() {
   }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/service/chart.service.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/service/chart.service.spec.ts b/ui/angular/src/app/service/chart.service.spec.ts
index a6a06af..c72bc03 100644
--- a/ui/angular/src/app/service/chart.service.spec.ts
+++ b/ui/angular/src/app/service/chart.service.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { TestBed, inject } from '@angular/core/testing';
+import {TestBed, inject} from '@angular/core/testing';
 
-import { ChartService } from './chart.service';
+import {ChartService} from './chart.service';
 
 describe('ChartService', () => {
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/service/chart.service.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/service/chart.service.ts b/ui/angular/src/app/service/chart.service.ts
index c1a41bf..5b5a12c 100644
--- a/ui/angular/src/app/service/chart.service.ts
+++ b/ui/angular/src/app/service/chart.service.ts
@@ -16,11 +16,12 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Injectable } from "@angular/core";
+import {Injectable} from "@angular/core";
 
 @Injectable()
 export class ChartService {
-  constructor() {}
+  constructor() {
+  }
 
   formatter_value(value, index) {
     if (value < 1000) {
@@ -83,7 +84,7 @@ export class ChartService {
           ]);
       }
     }
-    data.sort(function(a, b) {
+    data.sort(function (a, b) {
       return a[0] - b[0];
     });
     return data;
@@ -106,7 +107,7 @@ export class ChartService {
       },
       tooltip: {
         trigger: "axis",
-        formatter: function(params) {
+        formatter: function (params) {
           return self.getTooltip(params);
         }
       },
@@ -208,10 +209,10 @@ export class ChartService {
       },
       tooltip: {
         trigger: "axis",
-        formatter: function(params) {
+        formatter: function (params) {
           return self.getTooltip(params);
         },
-        position: function(point, params, dom) {
+        position: function (point, params, dom) {
           return self.getTooltipPosition(point, params, dom);
         }
       },
@@ -297,7 +298,7 @@ export class ChartService {
       ],
       tooltip: {
         trigger: "axis",
-        formatter: function(params) {
+        formatter: function (params) {
           return self.getTooltip(params);
         }
       },

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/service/http.service.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/service/http.service.spec.ts b/ui/angular/src/app/service/http.service.spec.ts
index ddbe59b..69c1860 100644
--- a/ui/angular/src/app/service/http.service.spec.ts
+++ b/ui/angular/src/app/service/http.service.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { TestBed, inject } from '@angular/core/testing';
+import {TestBed, inject} from '@angular/core/testing';
 
-import { HttpService } from './http.service';
+import {HttpService} from './http.service';
 
 describe('ServiceService', () => {
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/service/http.service.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/service/http.service.ts b/ui/angular/src/app/service/http.service.ts
index 52ce666..c21bd7d 100644
--- a/ui/angular/src/app/service/http.service.ts
+++ b/ui/angular/src/app/service/http.service.ts
@@ -16,35 +16,35 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Injectable } from '@angular/core';
-import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from "@angular/common/http";
-import { Observable } from "rxjs/Observable";
+import {Injectable} from '@angular/core';
+import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from "@angular/common/http";
+import {Observable} from "rxjs/Observable";
 import 'rxjs/add/operator/do';
-import { LoaderService } from "./../loader/loader.service";
+import {LoaderService} from "./../loader/loader.service";
 
 @Injectable()
 export class HttpService implements HttpInterceptor {
 
-    constructor(private loaderService: LoaderService) {
-    }
-
-    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {  
-        this.showLoading();
-        return next.handle(req).do((event: HttpEvent<any>) => {           
-            if (event instanceof HttpResponse) {               
-                this.hideLoading();
-            }
-        }, (err: any) => {            
-            this.hideLoading();
-        });
-    }
-
-    private showLoading(): void {
-        this.loaderService.show();
-    }
-
-    private hideLoading(): void {
-        this.loaderService.hide();
-    }
-
-}
\ No newline at end of file
+  constructor(private loaderService: LoaderService) {
+  }
+
+  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
+    this.showLoading();
+    return next.handle(req).do((event: HttpEvent<any>) => {
+      if (event instanceof HttpResponse) {
+        this.hideLoading();
+      }
+    }, (err: any) => {
+      this.hideLoading();
+    });
+  }
+
+  private showLoading(): void {
+    this.loaderService.show();
+  }
+
+  private hideLoading(): void {
+    this.loaderService.hide();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/service/service.service.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/service/service.service.spec.ts b/ui/angular/src/app/service/service.service.spec.ts
index 32edfd7..acc57f9 100644
--- a/ui/angular/src/app/service/service.service.spec.ts
+++ b/ui/angular/src/app/service/service.service.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { TestBed, inject } from '@angular/core/testing';
+import {TestBed, inject} from '@angular/core/testing';
 
-import { ServiceService } from './service.service';
+import {ServiceService} from './service.service';
 
 describe('ServiceService', () => {
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/service/service.service.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/service/service.service.ts b/ui/angular/src/app/service/service.service.ts
index 3e35de5..d64c99c 100644
--- a/ui/angular/src/app/service/service.service.ts
+++ b/ui/angular/src/app/service/service.service.ts
@@ -16,11 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Injectable } from "@angular/core";
+import {Injectable} from "@angular/core";
 
 @Injectable()
 export class ServiceService {
-  constructor() {}
+  constructor() {
+  }
+
   // public BACKEND_SERVER = 'http://10.64.222.80:38080';
 //  public BACKEND_SERVER = 'http://localhost:8080';
   public BACKEND_SERVER = "";
@@ -33,15 +35,15 @@ export class ServiceService {
 
       login: this.BACKEND_SERVER + this.API_ROOT_PATH + "/login/authenticate",
       dbtree:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/metadata/hive/dbs/tables",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/metadata/hive/dbs/tables",
       dataassetlist:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/metadata/hive/dbs/tables",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/metadata/hive/dbs/tables",
 
       getdataasset: this.BACKEND_SERVER + this.API_ROOT_PATH + "/dataassets",
 
       //mydashboard
       getmydashboard:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics/mydashboard/",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics/mydashboard/",
       // getsubscribe: this.BACKEND_SERVER + this.API_ROOT_PATH + '/subscribe/',
       // newsubscribe: this.BACKEND_SERVER + this.API_ROOT_PATH + '/subscribe',
 
@@ -64,15 +66,15 @@ export class ServiceService {
       // organization:this.BACKEND_SERVER + this.API_ROOT_PATH + '/org/measure/jobs',
       dashboard: this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics",
       metricdetail:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics/values",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics/values",
 
       // dashboard:this.ES_SERVER+'/griffin/accuracy/_search?pretty&filter_path=hits.hits._source',
       metricsample:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics/sample",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics/sample",
       metricdownload:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics/download",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/metrics/download",
       missRecordDownload:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/jobs/download",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/jobs/download",
 
 
       //Models
@@ -81,7 +83,7 @@ export class ServiceService {
       deleteModel: this.BACKEND_SERVER + this.API_ROOT_PATH + "/measures",
       getModel: this.BACKEND_SERVER + this.API_ROOT_PATH + "/measures",
       enableModel:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/models/enableModel",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/models/enableModel",
 
       //Jobs
       allJobs: this.BACKEND_SERVER + this.API_ROOT_PATH + "/jobs",
@@ -89,10 +91,10 @@ export class ServiceService {
       modifyJobs: this.BACKEND_SERVER + this.API_ROOT_PATH + "/jobs",
       getJobById: this.BACKEND_SERVER + this.API_ROOT_PATH + "/jobs/config",
       getMeasuresByOwner:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/measures/owner/",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/measures/owner/",
       deleteJob: this.BACKEND_SERVER + this.API_ROOT_PATH + "/jobs",
       getInstances:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/jobs/instances",
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/jobs/instances",
 
       //              allJobs:'/jobs.json',
       newAccuracyModel: this.BACKEND_SERVER + this.API_ROOT_PATH + "/models",
@@ -110,7 +112,7 @@ export class ServiceService {
 
       //Notification
       getnotifications:
-        this.BACKEND_SERVER + this.API_ROOT_PATH + "/notifications"
+      this.BACKEND_SERVER + this.API_ROOT_PATH + "/notifications"
     }
   };
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/service/user.service.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/service/user.service.spec.ts b/ui/angular/src/app/service/user.service.spec.ts
index b26195c..97eafff 100644
--- a/ui/angular/src/app/service/user.service.spec.ts
+++ b/ui/angular/src/app/service/user.service.spec.ts
@@ -1,6 +1,6 @@
-import { TestBed, inject } from '@angular/core/testing';
+import {TestBed, inject} from '@angular/core/testing';
 
-import { UserService } from './user.service';
+import {UserService} from './user.service';
 
 describe('UserService', () => {
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/service/user.service.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/service/user.service.ts b/ui/angular/src/app/service/user.service.ts
index 47efa02..3ed105d 100644
--- a/ui/angular/src/app/service/user.service.ts
+++ b/ui/angular/src/app/service/user.service.ts
@@ -16,12 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Injectable } from "@angular/core";
+import {Injectable} from "@angular/core";
 
 @Injectable()
 export class UserService {
   ntAccount: string;
   timestamp: Date;
+
   setCookie(name, value, days) {
     let expires;
     if (days) {
@@ -38,4 +39,4 @@ export class UserService {
     var keyValue = document.cookie.match("(^|;) ?" + key + "=([^;]*)(;|$)");
     return keyValue ? keyValue[2] : null;
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/sidebar/sidebar.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/sidebar/sidebar.component.css b/ui/angular/src/app/sidebar/sidebar.component.css
index c9a5dbe..16482b7 100644
--- a/ui/angular/src/app/sidebar/sidebar.component.css
+++ b/ui/angular/src/app/sidebar/sidebar.component.css
@@ -23,12 +23,12 @@ under the License.
   align-items: center
 }
 
-.sidebar-stat-center>img {
+.sidebar-stat-center > img {
   max-width: 24px;
   margin-right: 5px;
 }
 
-.sidebar-stat-center>span {
+.sidebar-stat-center > span {
   font-size: 18px;
   color: #fff
 }
@@ -108,7 +108,7 @@ under the License.
   /*margin-left: 20px;*/
 }
 
-a>.side-name:hover {
+a > .side-name:hover {
   color: #b2c831;
   /*position: absolute;*/
   /*left: 210px;*/
@@ -146,10 +146,8 @@ a>.side-name:hover {
   float: none;
 }
 
-
 /*side-bar end*/
 
-
 /* led start */
 
 .led-red {
@@ -185,7 +183,6 @@ a>.side-name:hover {
   box-shadow: #000 0 -1px 7px 1px, inset #460 0 -1px 9px, #7D0 0 2px 12px;
 }
 
-
 /* led end   */
 
 @media (max-width: 1200px) {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/sidebar/sidebar.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/sidebar/sidebar.component.html b/ui/angular/src/app/sidebar/sidebar.component.html
index ab1195b..0a445a1 100644
--- a/ui/angular/src/app/sidebar/sidebar.component.html
+++ b/ui/angular/src/app/sidebar/sidebar.component.html
@@ -26,7 +26,7 @@ under the License.
         </div>
         <div class="sidebar-stat-center">
           <i class="fa fa-line-chart" style="color:#b2c831;" aria-hidden="true"></i>
-          <span><a routerLink="/metrics" >&nbsp;DQ Metrics</a></span>
+          <span><a routerLink="/metrics">&nbsp;DQ Metrics</a></span>
         </div>
       </div>
     </div>
@@ -40,7 +40,7 @@ under the License.
       <div class="well" *ngIf="outerItems.metrics.length != 0">
         <div class="col-sm-4 col-lg-4 col-md-4 ">
           <h4>
-                <!-- <a routerLink="/metrics/{{outerItems.name}}"> {{outerItems.name}}</a> -->
+            <!-- <a routerLink="/metrics/{{outerItems.name}}"> {{outerItems.name}}</a> -->
             <a> {{outerItems.name}}</a>
           </h4>
         </div>
@@ -55,15 +55,16 @@ under the License.
           <div class="panel panel-default">
             <div class="panel-heading" style="background:transparent;">
               <h4 class="panel-title side-metrics">
-                <a style="cursor: pointer;" (click)="draw(items,parent, i);items.tag=!items.tag;" >
-                  <i class="faChevron" [ngClass]="items.tag ? 'fa fa-caret-down':'fa fa-caret-right'" style="width:10px"></i>
+                <a style="cursor: pointer;" (click)="draw(items,parent, i);items.tag=!items.tag;">
+                  <i class="faChevron" [ngClass]="items.tag ? 'fa fa-caret-down':'fa fa-caret-right'"
+                     style="width:10px"></i>
                   <i class="fa fa-line-chart faArrows"></i>
                   <span class="side-date">{{items.timestamp | date:'short' }}</span>
-                    &nbsp;&nbsp;
+                  &nbsp;&nbsp;
                   <span class="side-name" title="{{items.name}}">{{items.name |truncate :13}}
                   </span>
                 </a>
-               </h4>
+              </h4>
             </div>
             <div id="side{{parent}}{{i}}" class="panel-collapse collapse">
               <div class="panel-body" style="cursor:pointer;padding:0px 15px;border-top-width: 0;">

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/sidebar/sidebar.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/sidebar/sidebar.component.spec.ts b/ui/angular/src/app/sidebar/sidebar.component.spec.ts
index 528bab2..a8c8134 100644
--- a/ui/angular/src/app/sidebar/sidebar.component.spec.ts
+++ b/ui/angular/src/app/sidebar/sidebar.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { SidebarComponent } from './sidebar.component';
+import {SidebarComponent} from './sidebar.component';
 
 describe('SidebarComponent', () => {
   let component: SidebarComponent;
@@ -26,9 +26,9 @@ describe('SidebarComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ SidebarComponent ]
+      declarations: [SidebarComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/sidebar/sidebar.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/sidebar/sidebar.component.ts b/ui/angular/src/app/sidebar/sidebar.component.ts
index a902cfa..01f1b40 100644
--- a/ui/angular/src/app/sidebar/sidebar.component.ts
+++ b/ui/angular/src/app/sidebar/sidebar.component.ts
@@ -16,13 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { HttpClient } from "@angular/common/http";
-import { Router } from "@angular/router";
-import { ChartService } from "../service/chart.service";
-import { DatePipe } from "@angular/common";
-import { ServiceService } from "../service/service.service";
-import { TruncatePipe } from "./truncate.pipe";
+import {Component, OnInit} from "@angular/core";
+import {HttpClient} from "@angular/common/http";
+import {Router} from "@angular/router";
+import {ChartService} from "../service/chart.service";
+import {DatePipe} from "@angular/common";
+import {ServiceService} from "../service/service.service";
+import {TruncatePipe} from "./truncate.pipe";
 import * as $ from "jquery";
 
 @Component({
@@ -37,7 +37,8 @@ export class SidebarComponent implements OnInit {
     private router: Router,
     public serviceService: ServiceService,
     public chartService: ChartService
-  ) {}
+  ) {
+  }
 
   finalData = [];
   chartOption = new Map();
@@ -50,7 +51,8 @@ export class SidebarComponent implements OnInit {
       data => {
         this.sideBarList(null);
       },
-      err => {}
+      err => {
+      }
     );
   }
 
@@ -66,7 +68,7 @@ export class SidebarComponent implements OnInit {
   resizeSideChart() {
     $("#side-bar-metrics").css({
       height:
-        $("#mainContent").height() - $("#side-bar-stats").outerHeight() + 70
+      $("#mainContent").height() - $("#side-bar-stats").outerHeight() + 70
     });
     for (let i = 0; i < this.finalData.length; i++) {
       for (let j = 0; j < this.finalData[i].metrics.length; j++) {
@@ -86,7 +88,7 @@ export class SidebarComponent implements OnInit {
     this.chartOption.set(chartId, this.chartService.getOptionSide(metric));
     var self = this;
     $("#" + chartId).unbind("click");
-    $("#" + chartId).click(function(e) {
+    $("#" + chartId).click(function (e) {
       self.router.navigate([
         "/detailed/" + self.finalData[parentIndex].metrics[index].name
       ]);
@@ -97,7 +99,7 @@ export class SidebarComponent implements OnInit {
     return this.chartOption.get("chart" + parent + "-" + i);
   }
 
-  checkvalue(job){
+  checkvalue(job) {
     return job.metricValues.length === 0;
   }
 
@@ -105,9 +107,9 @@ export class SidebarComponent implements OnInit {
     let url_dashboard = this.serviceService.config.uri.dashboard;
     this.http.get(url_dashboard).subscribe(data => {
       this.mesWithJob = JSON.parse(JSON.stringify(data));
-      for(let i=0;i<this.mesWithJob.length;i++) {
-        if(this.mesWithJob[i].some(this.checkvalue)){
-          this.mesWithJob[i].splice(i,1);
+      for (let i = 0; i < this.mesWithJob.length; i++) {
+        if (this.mesWithJob[i].some(this.checkvalue)) {
+          this.mesWithJob[i].splice(i, 1);
         }
       }
       for (let mesName in this.mesWithJob) {
@@ -124,7 +126,7 @@ export class SidebarComponent implements OnInit {
           node.type = "ACCURACY";
           for (let i = 0; i < jobs.length; i++) {
             if (jobs[i].metricValues.length != 0) {
-              var someMetrics = jobs[i].metricValues.slice(0,30);
+              var someMetrics = jobs[i].metricValues.slice(0, 30);
               jobs[i].metricValues = JSON.parse(
                 JSON.stringify(someMetrics)
               );



[3/5] incubator-griffin git commit: make ui style consistent

Posted by gu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/pr.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/pr.component.html b/ui/angular/src/app/measure/create-measure/pr/pr.component.html
index 22b1f4d..b9c28a1 100644
--- a/ui/angular/src/app/measure/create-measure/pr/pr.component.html
+++ b/ui/angular/src/app/measure/create-measure/pr/pr.component.html
@@ -57,19 +57,25 @@ under the License.
       </div>
 
       <div id="step-2" *ngIf="currentStep == 2" class="formStep">
-        <app-pr-step-2 [step1]='step1' [step2]='step2' (prevStep)='prev($event)' (nextStep)='updateStep2($event)'></app-pr-step-2>
+        <app-pr-step-2 [step1]='step1' [step2]='step2' (prevStep)='prev($event)'
+                       (nextStep)='updateStep2($event)'></app-pr-step-2>
       </div>
 
       <div id="step-3" *ngIf="currentStep == 3" class="formStep">
-        <app-pr-step-3 [step1]='step1' [step2]='step2' [step3]='step3' (prevStep)='prev($event)' (nextStep)='updateStep3($event)'></app-pr-step-3>
+        <app-pr-step-3 [step1]='step1' [step2]='step2' [step3]='step3' (prevStep)='prev($event)'
+                       (nextStep)='updateStep3($event)'></app-pr-step-3>
       </div>
 
       <div id="step-4" *ngIf="currentStep == 4" class="formStep">
-        <app-pr-step-4 [step1]='step1' [step2]='step2' [step3]='step3' [step4]='step4' (prevStep)='prev($event)' (submitMeasure)='submit($event)'></app-pr-step-4>
+        <app-pr-step-4 [step1]='step1' [step2]='step2' [step3]='step3' [step4]='step4' (prevStep)='prev($event)'
+                       (submitMeasure)='submit($event)'></app-pr-step-4>
       </div>
 
-      <div class="modal fade" id="confirm" role="dialog" #modal tabindex="-1" [ngClass]="{'in': visibleAnimate}" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}" (click)="onContainerClicked($event)">
-        <app-pr-confirm-modal [step1]='step1' [step2]='step2' [step3]='step3' [step4]='step4' (hide)='hide($event)' (saveMeasure)='save($event)'></app-pr-confirm-modal>
+      <div class="modal fade" id="confirm" role="dialog" #modal tabindex="-1" [ngClass]="{'in': visibleAnimate}"
+           [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}"
+           (click)="onContainerClicked($event)">
+        <app-pr-confirm-modal [step1]='step1' [step2]='step2' [step3]='step3' [step4]='step4' (hide)='hide($event)'
+                              (saveMeasure)='save($event)'></app-pr-confirm-modal>
       </div>
     </form>
   </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/pr.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/pr.component.spec.ts b/ui/angular/src/app/measure/create-measure/pr/pr.component.spec.ts
index dcc2d00..f818bdf 100644
--- a/ui/angular/src/app/measure/create-measure/pr/pr.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/pr.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { PrComponent } from './pr.component';
+import {PrComponent} from './pr.component';
 
 describe('PrComponent', () => {
   let component: PrComponent;
@@ -26,9 +26,9 @@ describe('PrComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PrComponent ]
+      declarations: [PrComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/pr.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/pr.component.ts b/ui/angular/src/app/measure/create-measure/pr/pr.component.ts
index fec1a2e..8bb2052 100644
--- a/ui/angular/src/app/measure/create-measure/pr/pr.component.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/pr.component.ts
@@ -16,13 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { ServiceService } from "../../../service/service.service";
-import { ToasterModule, ToasterService, ToasterContainerComponent } from "angular2-toaster";
-import { HttpClient } from "@angular/common/http";
-import { Router } from "@angular/router";
-import { AfterViewChecked, ElementRef } from "@angular/core";
-import { Col } from './step1/step1.component'
+import {Component, OnInit} from "@angular/core";
+import {ServiceService} from "../../../service/service.service";
+import {ToasterModule, ToasterService, ToasterContainerComponent} from "angular2-toaster";
+import {HttpClient} from "@angular/common/http";
+import {Router} from "@angular/router";
+import {AfterViewChecked, ElementRef} from "@angular/core";
+import {Col} from './step1/step1.component'
 import * as $ from "jquery";
 
 export class ProfilingStep1 {
@@ -109,17 +109,17 @@ export class PrComponent implements AfterViewChecked, OnInit {
     this.currentStep--;
   }
 
-  updateStep1(body:ProfilingStep1) {
+  updateStep1(body: ProfilingStep1) {
     this.step1 = body;
     this.next();
   }
 
-  updateStep2(body:ProfilingStep2) {
+  updateStep2(body: ProfilingStep2) {
     this.step2 = body;
     this.next();
   }
 
-  updateStep3(body:ProfilingStep3) {
+  updateStep3(body: ProfilingStep3) {
     this.step3 = body;
     this.next();
   }
@@ -158,7 +158,7 @@ export class PrComponent implements AfterViewChecked, OnInit {
   }
 
   getGrouprule() {
-    var selected = { name: "" };
+    var selected = {name: ""};
     var value = "";
     var nullvalue = "";
     var nullname = "";
@@ -331,7 +331,7 @@ export class PrComponent implements AfterViewChecked, OnInit {
     }
   }
 
-  submit(body:ProfilingStep4) {
+  submit(body: ProfilingStep4) {
     this.step4 = body;
 
     if (!this.formValidation(this.currentStep)) {
@@ -382,7 +382,7 @@ export class PrComponent implements AfterViewChecked, OnInit {
         }
       ],
       "evaluate.rule": {
-        "out.dataframe.name":"profiling",
+        "out.dataframe.name": "profiling",
         rules: []
       }
     };
@@ -411,7 +411,7 @@ export class PrComponent implements AfterViewChecked, OnInit {
       },
       err => {
         let response = JSON.parse(err.error);
-        if(response.code === '40901'){
+        if (response.code === '40901') {
           this.toasterService.pop("error", "Error!", "Measure name already exists!");
         } else {
           this.toasterService.pop("error", "Error!", "Error when creating measure");
@@ -428,5 +428,6 @@ export class PrComponent implements AfterViewChecked, OnInit {
     this.step4 = new ProfilingStep4();
   }
 
-  ngAfterViewChecked() {}
+  ngAfterViewChecked() {
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.css b/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.css
index 1fe05fe..31710d7 100644
--- a/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.css
+++ b/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.css
@@ -17,7 +17,7 @@ specific language governing permissions and limitations
 under the License.
 */
 
-.table>thead>tr.success>td {
+.table > thead > tr.success > td {
   background-color: #77b300;
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.html b/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.html
index eceb302..55414ca 100644
--- a/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.html
+++ b/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.html
@@ -23,38 +23,38 @@ under the License.
         <h5>Simple Statistics</h5>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
-            <input name="vaType" type="radio" [(ngModel)]="vaType" value="2" />
+            <input name="vaType" type="radio" [(ngModel)]="vaType" value="2"/>
             <label>Null Count</label>
           </div>
         </div>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
-            <input name="vaType" type="radio" [(ngModel)]="vaType" value="3" />
+            <input name="vaType" type="radio" [(ngModel)]="vaType" value="3"/>
             <label>Distinct Count</label>
           </div>
         </div>
         <h5>Summary Statistics</h5>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
-            <input name="vaType" type="radio" [(ngModel)]="vaType" value="4" />
+            <input name="vaType" type="radio" [(ngModel)]="vaType" value="4"/>
             <label>Total Count</label>
           </div>
         </div>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
-            <input name="vaType" type="radio" [(ngModel)]="vaType" value="5" />
+            <input name="vaType" type="radio" [(ngModel)]="vaType" value="5"/>
             <label>Maximum</label>
           </div>
         </div>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
-            <input name="vaType" type="radio" [(ngModel)]="vaType" value="6" />
+            <input name="vaType" type="radio" [(ngModel)]="vaType" value="6"/>
             <label>Minimum</label>
           </div>
         </div>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
-            <input name="vaType" type="radio" [(ngModel)]="vaType" value="7" />
+            <input name="vaType" type="radio" [(ngModel)]="vaType" value="7"/>
             <label>Average</label>
           </div>
         </div>
@@ -73,7 +73,7 @@ under the License.
         </div>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
-            <input name="vaType" type="radio" [(ngModel)]="vaType" value="10" />
+            <input name="vaType" type="radio" [(ngModel)]="vaType" value="10"/>
             <label>Enum Detection Count</label>
           </div>
         </div>
@@ -120,65 +120,65 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>ID</td>
-                      <td>FRISTNAME</td>
-                      <td>LASTNAME</td>
-                    </tr>
+                  <tr class="success">
+                    <td>ID</td>
+                    <td>FRISTNAME</td>
+                    <td>LASTNAME</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>1</td>
-                      <td>lei</td>
-                      <td>li</td>
-                    </tr>
-                    <tr>
-                      <td>2</td>
-                      <td>lei</td>
-                      <td>li</td>
-                    </tr>
-                    <tr>
-                      <td>3</td>
-                      <td>lei</td>
-                      <td>li</td>
-                    </tr>
-                    <tr>
-                      <td>4</td>
-                      <td>
-                        <abbr title="the value isn't necessary " class="initialism">
-                          <mark>null</mark>
-                        </abbr>
-                      </td>
-                      <td>stone</td>
-                    </tr>
-                    <tr>
-                      <td>5</td>
-                      <td>lei</td>
-                      <td>li</td>
-                    </tr>
-                    <tr>
-                      <td>6</td>
-                      <td>lei</td>
-                      <td>li</td>
-                    </tr>
-                    <tr>
-                      <td>7</td>
-                      <td>
-                        <abbr title="the value isn't necessary " class="initialism">
-                          <mark>null</mark>
-                        </abbr>
-                      </td>
-                      <td>stone</td>
-                    </tr>
-                    <tr>
-                      <td>8</td>
-                      <td>
-                        <abbr title="the value isn't necessary " class="initialism">
-                          <mark>null</mark>
-                        </abbr>
-                      </td>
-                      <td>zhang</td>
-                    </tr>
+                  <tr>
+                    <td>1</td>
+                    <td>lei</td>
+                    <td>li</td>
+                  </tr>
+                  <tr>
+                    <td>2</td>
+                    <td>lei</td>
+                    <td>li</td>
+                  </tr>
+                  <tr>
+                    <td>3</td>
+                    <td>lei</td>
+                    <td>li</td>
+                  </tr>
+                  <tr>
+                    <td>4</td>
+                    <td>
+                      <abbr title="the value isn't necessary " class="initialism">
+                        <mark>null</mark>
+                      </abbr>
+                    </td>
+                    <td>stone</td>
+                  </tr>
+                  <tr>
+                    <td>5</td>
+                    <td>lei</td>
+                    <td>li</td>
+                  </tr>
+                  <tr>
+                    <td>6</td>
+                    <td>lei</td>
+                    <td>li</td>
+                  </tr>
+                  <tr>
+                    <td>7</td>
+                    <td>
+                      <abbr title="the value isn't necessary " class="initialism">
+                        <mark>null</mark>
+                      </abbr>
+                    </td>
+                    <td>stone</td>
+                  </tr>
+                  <tr>
+                    <td>8</td>
+                    <td>
+                      <abbr title="the value isn't necessary " class="initialism">
+                        <mark>null</mark>
+                      </abbr>
+                    </td>
+                    <td>zhang</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -210,7 +210,8 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <label class="text-left">
-                  Suppose we have the below data table which has four attributes-ID, NAME, AGE and FAVOURITE FOOD. Then the Distinct Count is
+                  Suppose we have the below data table which has four attributes-ID, NAME, AGE and FAVOURITE FOOD. Then
+                  the Distinct Count is
                   <kbd style="font-size: 16px">2</kbd>
                 </label>
               </div>
@@ -222,62 +223,62 @@ under the License.
                     <col span="2" style="background-color:#064225">
                   </colgroup>
                   <thead>
-                    <tr class="success">
-                      <td>ID</td>
-                      <td>NAME</td>
-                      <td>AGE</td>
-                      <td>FAVOURITE FOOD</td>
-                    </tr>
+                  <tr class="success">
+                    <td>ID</td>
+                    <td>NAME</td>
+                    <td>AGE</td>
+                    <td>FAVOURITE FOOD</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>1</td>
-                      <td>Lily</td>
-                      <td>20</td>
-                      <td>APPLE</td>
-                    </tr>
-                    <tr>
-                      <td>2</td>
-                      <td>Lucy</td>
-                      <td>20</td>
-                      <td>APPLE</td>
-                    </tr>
-                    <tr>
-                      <td>3</td>
-                      <td>John</td>
-                      <td>20</td>
-                      <td>APPLE</td>
-                    </tr>
-                    <tr>
-                      <td>4</td>
-                      <td>David</td>
-                      <td>20</td>
-                      <td>APPLE</td>
-                    </tr>
-                    <tr>
-                      <td>5</td>
-                      <td>Sam</td>
-                      <td>35</td>
-                      <td>banana</td>
-                    </tr>
-                    <tr>
-                      <td>6</td>
-                      <td>Kaka</td>
-                      <td>35</td>
-                      <td>banana</td>
-                    </tr>
-                    <tr>
-                      <td>7</td>
-                      <td>stone</td>
-                      <td>35</td>
-                      <td>banana</td>
-                    </tr>
-                    <tr>
-                      <td>8</td>
-                      <td>Adison</td>
-                      <td>35</td>
-                      <td>banana</td>
-                    </tr>
+                  <tr>
+                    <td>1</td>
+                    <td>Lily</td>
+                    <td>20</td>
+                    <td>APPLE</td>
+                  </tr>
+                  <tr>
+                    <td>2</td>
+                    <td>Lucy</td>
+                    <td>20</td>
+                    <td>APPLE</td>
+                  </tr>
+                  <tr>
+                    <td>3</td>
+                    <td>John</td>
+                    <td>20</td>
+                    <td>APPLE</td>
+                  </tr>
+                  <tr>
+                    <td>4</td>
+                    <td>David</td>
+                    <td>20</td>
+                    <td>APPLE</td>
+                  </tr>
+                  <tr>
+                    <td>5</td>
+                    <td>Sam</td>
+                    <td>35</td>
+                    <td>banana</td>
+                  </tr>
+                  <tr>
+                    <td>6</td>
+                    <td>Kaka</td>
+                    <td>35</td>
+                    <td>banana</td>
+                  </tr>
+                  <tr>
+                    <td>7</td>
+                    <td>stone</td>
+                    <td>35</td>
+                    <td>banana</td>
+                  </tr>
+                  <tr>
+                    <td>8</td>
+                    <td>Adison</td>
+                    <td>35</td>
+                    <td>banana</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -317,53 +318,53 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>ID</td>
-                      <td>NAME</td>
-                      <td>AGE</td>
-                    </tr>
+                  <tr class="success">
+                    <td>ID</td>
+                    <td>NAME</td>
+                    <td>AGE</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>1</td>
-                      <td>lei</td>
-                      <td>17</td>
-                    </tr>
-                    <tr>
-                      <td>2</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>3</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>4</td>
-                      <td>lei</td>
-                      <td>21</td>
-                    </tr>
-                    <tr>
-                      <td>5</td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>6</td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>7</td>
-                      <td>lei</td>
-                      <td>24</td>
-                    </tr>
-                    <tr>
-                      <td>8</td>
-                      <td>lei</td>
-                      <td>26</td>
-                    </tr>
+                  <tr>
+                    <td>1</td>
+                    <td>lei</td>
+                    <td>17</td>
+                  </tr>
+                  <tr>
+                    <td>2</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>3</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>4</td>
+                    <td>lei</td>
+                    <td>21</td>
+                  </tr>
+                  <tr>
+                    <td>5</td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>6</td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>7</td>
+                    <td>lei</td>
+                    <td>24</td>
+                  </tr>
+                  <tr>
+                    <td>8</td>
+                    <td>lei</td>
+                    <td>26</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -402,57 +403,57 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>ID</td>
-                      <td>NAME</td>
-                      <td>AGE</td>
-                    </tr>
+                  <tr class="success">
+                    <td>ID</td>
+                    <td>NAME</td>
+                    <td>AGE</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>1</td>
-                      <td>lei</td>
-                      <td>17</td>
-                    </tr>
-                    <tr>
-                      <td>2</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>3</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>4</td>
-                      <td>lei</td>
-                      <td>21</td>
-                    </tr>
-                    <tr>
-                      <td>5</td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>6</td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>7</td>
-                      <td>lei</td>
-                      <td>24</td>
-                    </tr>
-                    <tr>
-                      <td>8</td>
-                      <td>lei</td>
-                      <td>
-                        <abbr title="the value is the biggest number " class="initialism">
-                          <mark>26</mark>
-                        </abbr>
-                      </td>
-                    </tr>
+                  <tr>
+                    <td>1</td>
+                    <td>lei</td>
+                    <td>17</td>
+                  </tr>
+                  <tr>
+                    <td>2</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>3</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>4</td>
+                    <td>lei</td>
+                    <td>21</td>
+                  </tr>
+                  <tr>
+                    <td>5</td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>6</td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>7</td>
+                    <td>lei</td>
+                    <td>24</td>
+                  </tr>
+                  <tr>
+                    <td>8</td>
+                    <td>lei</td>
+                    <td>
+                      <abbr title="the value is the biggest number " class="initialism">
+                        <mark>26</mark>
+                      </abbr>
+                    </td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -491,57 +492,57 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>ID</td>
-                      <td>NAME</td>
-                      <td>AGE</td>
-                    </tr>
+                  <tr class="success">
+                    <td>ID</td>
+                    <td>NAME</td>
+                    <td>AGE</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>1</td>
-                      <td>lei</td>
-                      <td>17</td>
-                    </tr>
-                    <tr>
-                      <td>2</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>3</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>4</td>
-                      <td>lei</td>
-                      <td>
-                        <abbr title="the value is the minimum number " class="initialism">
-                          <mark>14</mark>
-                        </abbr>
-                      </td>
-                    </tr>
-                    <tr>
-                      <td>5</td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>6</td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>7</td>
-                      <td>lei</td>
-                      <td>24</td>
-                    </tr>
-                    <tr>
-                      <td>8</td>
-                      <td>lei</td>
-                      <td>26</td>
-                    </tr>
+                  <tr>
+                    <td>1</td>
+                    <td>lei</td>
+                    <td>17</td>
+                  </tr>
+                  <tr>
+                    <td>2</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>3</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>4</td>
+                    <td>lei</td>
+                    <td>
+                      <abbr title="the value is the minimum number " class="initialism">
+                        <mark>14</mark>
+                      </abbr>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>5</td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>6</td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>7</td>
+                    <td>lei</td>
+                    <td>24</td>
+                  </tr>
+                  <tr>
+                    <td>8</td>
+                    <td>lei</td>
+                    <td>26</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -580,53 +581,53 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>ID</td>
-                      <td>NAME</td>
-                      <td>AGE</td>
-                    </tr>
+                  <tr class="success">
+                    <td>ID</td>
+                    <td>NAME</td>
+                    <td>AGE</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>1</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>2</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>3</td>
-                      <td>lei</td>
-                      <td>19</td>
-                    </tr>
-                    <tr>
-                      <td>4</td>
-                      <td>lei</td>
-                      <td>19</td>
-                    </tr>
-                    <tr>
-                      <td>5</td>
-                      <td>lei</td>
-                      <td>21</td>
-                    </tr>
-                    <tr>
-                      <td>6</td>
-                      <td>lei</td>
-                      <td>21</td>
-                    </tr>
-                    <tr>
-                      <td>7</td>
-                      <td>lei</td>
-                      <td>22</td>
-                    </tr>
-                    <tr>
-                      <td>8</td>
-                      <td>lei</td>
-                      <td>22</td>
-                    </tr>
+                  <tr>
+                    <td>1</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>2</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>3</td>
+                    <td>lei</td>
+                    <td>19</td>
+                  </tr>
+                  <tr>
+                    <td>4</td>
+                    <td>lei</td>
+                    <td>19</td>
+                  </tr>
+                  <tr>
+                    <td>5</td>
+                    <td>lei</td>
+                    <td>21</td>
+                  </tr>
+                  <tr>
+                    <td>6</td>
+                    <td>lei</td>
+                    <td>21</td>
+                  </tr>
+                  <tr>
+                    <td>7</td>
+                    <td>lei</td>
+                    <td>22</td>
+                  </tr>
+                  <tr>
+                    <td>8</td>
+                    <td>lei</td>
+                    <td>22</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -665,58 +666,58 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>ID</td>
-                      <td>NAME</td>
-                      <td>AGE</td>
-                    </tr>
+                  <tr class="success">
+                    <td>ID</td>
+                    <td>NAME</td>
+                    <td>AGE</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>1</td>
-                      <td>lei</td>
-                      <td>17</td>
-                    </tr>
-                    <tr>
-                      <td>2</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>3</td>
-                      <td>lei</td>
-                      <td>19</td>
-                    </tr>
-                    <tr>
-                      <td>4</td>
-                      <td>lei</td>
-                      <td>20</td>
-                    </tr>
-                    <tr>
-                      <td>5</td>
-                      <td>lei</td>
-                      <td>21</td>
-                    </tr>
-                    <tr>
-                      <td>6</td>
-                      <td>lei</td>
-                      <td>21</td>
-                    </tr>
-                    <tr>
-                      <td>7</td>
-                      <td>lei</td>
-                      <td>22</td>
-                    </tr>
-                    <tr>
-                      <td>8</td>
-                      <td>lei</td>
-                      <td>22</td>
-                    </tr>
-                    <tr>
-                      <td>9</td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
+                  <tr>
+                    <td>1</td>
+                    <td>lei</td>
+                    <td>17</td>
+                  </tr>
+                  <tr>
+                    <td>2</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>3</td>
+                    <td>lei</td>
+                    <td>19</td>
+                  </tr>
+                  <tr>
+                    <td>4</td>
+                    <td>lei</td>
+                    <td>20</td>
+                  </tr>
+                  <tr>
+                    <td>5</td>
+                    <td>lei</td>
+                    <td>21</td>
+                  </tr>
+                  <tr>
+                    <td>6</td>
+                    <td>lei</td>
+                    <td>21</td>
+                  </tr>
+                  <tr>
+                    <td>7</td>
+                    <td>lei</td>
+                    <td>22</td>
+                  </tr>
+                  <tr>
+                    <td>8</td>
+                    <td>lei</td>
+                    <td>22</td>
+                  </tr>
+                  <tr>
+                    <td>9</td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -734,7 +735,9 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <label class="text-left">
-                  In theoretical computer science and formal language theory, a regular expression (sometimes called a rational expression) is a sequence of characters that define a search pattern, mainly for use in pattern matching with strings, or string matching, i.e. "find and replace"-like operations.
+                  In theoretical computer science and formal language theory, a regular expression (sometimes called a
+                  rational expression) is a sequence of characters that define a search pattern, mainly for use in
+                  pattern matching with strings, or string matching, i.e. "find and replace"-like operations.
                 </label>
               </div>
             </div>
@@ -748,7 +751,8 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <label class="text-left">
-                  There is a series characters of in the column of IDENTIFIER in the following table, and we can use a kind of Regular Expression Matching to search it.
+                  There is a series characters of in the column of IDENTIFIER in the following table, and we can use a
+                  kind of Regular Expression Matching to search it.
                 </label>
               </div>
             </div>
@@ -756,61 +760,61 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>IDENTIFIER</td>
-                      <td>NAME</td>
-                      <td>AGE</td>
-                    </tr>
+                  <tr class="success">
+                    <td>IDENTIFIER</td>
+                    <td>NAME</td>
+                    <td>AGE</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>#1111</td>
-                      <td>lei</td>
-                      <td>17</td>
-                    </tr>
-                    <tr>
-                      <td>#1245</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>15245</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>87956</td>
-                      <td>lei</td>
-                      <td>21</td>
-                    </tr>
-                    <tr>
-                      <td>
-                        <abbr title="the value is the biggest number " class="initialism">
-                          <mark>monkey</mark>
-                        </abbr>
-                      </td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>
-                        <abbr title="the value is the biggest number " class="initialism">
-                          <mark>tiger</mark>
-                        </abbr>
-                      </td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>456</td>
-                      <td>lei</td>
-                      <td>24</td>
-                    </tr>
-                    <tr>
-                      <td>324</td>
-                      <td>lei</td>
-                      <td>26</td>
-                    </tr>
+                  <tr>
+                    <td>#1111</td>
+                    <td>lei</td>
+                    <td>17</td>
+                  </tr>
+                  <tr>
+                    <td>#1245</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>15245</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>87956</td>
+                    <td>lei</td>
+                    <td>21</td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <abbr title="the value is the biggest number " class="initialism">
+                        <mark>monkey</mark>
+                      </abbr>
+                    </td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <abbr title="the value is the biggest number " class="initialism">
+                        <mark>tiger</mark>
+                      </abbr>
+                    </td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>456</td>
+                    <td>lei</td>
+                    <td>24</td>
+                  </tr>
+                  <tr>
+                    <td>324</td>
+                    <td>lei</td>
+                    <td>26</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -829,7 +833,8 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <p class="text-left">
-                  <strong>The regular expression matching means :</strong> Matches a string consisting of 26 english letters
+                  <strong>The regular expression matching means :</strong> Matches a string consisting of 26 english
+                  letters
                 </p>
               </div>
             </div>
@@ -856,7 +861,8 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <label class="text-left">
-                  The Enum Detection Count is a statement of GROUP BY , which often used with aggregate functions (COUNT, MAX, MIN, SUM, AVG) to group the result-set by one or more columns.
+                  The Enum Detection Count is a statement of GROUP BY , which often used with aggregate functions
+                  (COUNT, MAX, MIN, SUM, AVG) to group the result-set by one or more columns.
                 </label>
               </div>
             </div>
@@ -870,7 +876,8 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <label class="text-left">
-                  We can use Enum Detection Count to search the lists the number of customers in each country in the following table:
+                  We can use Enum Detection Count to search the lists the number of customers in each country in the
+                  following table:
                 </label>
               </div>
             </div>
@@ -878,53 +885,53 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>CUSTOMERID</td>
-                      <td>NAME</td>
-                      <td>COUNTRY</td>
-                    </tr>
+                  <tr class="success">
+                    <td>CUSTOMERID</td>
+                    <td>NAME</td>
+                    <td>COUNTRY</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>1</td>
-                      <td>lei</td>
-                      <td>Germany</td>
-                    </tr>
-                    <tr>
-                      <td>2</td>
-                      <td>lei</td>
-                      <td>Mexico</td>
-                    </tr>
-                    <tr>
-                      <td>3</td>
-                      <td>lei</td>
-                      <td>Germany</td>
-                    </tr>
-                    <tr>
-                      <td>4</td>
-                      <td>lei</td>
-                      <td>Mexico</td>
-                    </tr>
-                    <tr>
-                      <td>5</td>
-                      <td>lei</td>
-                      <td>China</td>
-                    </tr>
-                    <tr>
-                      <td>6</td>
-                      <td>lei</td>
-                      <td>China</td>
-                    </tr>
-                    <tr>
-                      <td>7</td>
-                      <td>lei</td>
-                      <td>UK</td>
-                    </tr>
-                    <tr>
-                      <td>8</td>
-                      <td>lei</td>
-                      <td>Sweden</td>
-                    </tr>
+                  <tr>
+                    <td>1</td>
+                    <td>lei</td>
+                    <td>Germany</td>
+                  </tr>
+                  <tr>
+                    <td>2</td>
+                    <td>lei</td>
+                    <td>Mexico</td>
+                  </tr>
+                  <tr>
+                    <td>3</td>
+                    <td>lei</td>
+                    <td>Germany</td>
+                  </tr>
+                  <tr>
+                    <td>4</td>
+                    <td>lei</td>
+                    <td>Mexico</td>
+                  </tr>
+                  <tr>
+                    <td>5</td>
+                    <td>lei</td>
+                    <td>China</td>
+                  </tr>
+                  <tr>
+                    <td>6</td>
+                    <td>lei</td>
+                    <td>China</td>
+                  </tr>
+                  <tr>
+                    <td>7</td>
+                    <td>lei</td>
+                    <td>UK</td>
+                  </tr>
+                  <tr>
+                    <td>8</td>
+                    <td>lei</td>
+                    <td>Sweden</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -934,7 +941,8 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <p class="text-left">
-                  <strong>Suppose Enum Expression is :</strong> SELECT COUNT(CUSTORMERID), COUNTRY FROM Customers GROUP BY COUNTRY;
+                  <strong>Suppose Enum Expression is :</strong> SELECT COUNT(CUSTORMERID), COUNTRY FROM Customers GROUP
+                  BY COUNTRY;
                 </p>
               </div>
             </div>
@@ -967,7 +975,9 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <label class="text-left">
-                  In theoretical computer science and formal language theory, a regular expression (sometimes called a rational expression) is a sequence of characters that define a search pattern, mainly for use in pattern matching with strings, or string matching, i.e. "find and replace"-like operations.
+                  In theoretical computer science and formal language theory, a regular expression (sometimes called a
+                  rational expression) is a sequence of characters that define a search pattern, mainly for use in
+                  pattern matching with strings, or string matching, i.e. "find and replace"-like operations.
                 </label>
               </div>
             </div>
@@ -981,7 +991,8 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <label class="text-left">
-                  There is a series characters of in the column of IDENTIFIER in the following table, and we can use a kind of Regular Expression Matching to search it.
+                  There is a series characters of in the column of IDENTIFIER in the following table, and we can use a
+                  kind of Regular Expression Matching to search it.
                 </label>
               </div>
             </div>
@@ -989,61 +1000,61 @@ under the License.
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <table class="table table-bordered text-center">
                   <thead>
-                    <tr class="success">
-                      <td>IDENTIFIER</td>
-                      <td>NAME</td>
-                      <td>AGE</td>
-                    </tr>
+                  <tr class="success">
+                    <td>IDENTIFIER</td>
+                    <td>NAME</td>
+                    <td>AGE</td>
+                  </tr>
                   </thead>
                   <tbody>
-                    <tr>
-                      <td>#1111</td>
-                      <td>lei</td>
-                      <td>17</td>
-                    </tr>
-                    <tr>
-                      <td>#1245</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>15245</td>
-                      <td>lei</td>
-                      <td>18</td>
-                    </tr>
-                    <tr>
-                      <td>87956</td>
-                      <td>lei</td>
-                      <td>21</td>
-                    </tr>
-                    <tr>
-                      <td>
-                        <abbr title="the value is the biggest number " class="initialism">
-                          <mark>monkey</mark>
-                        </abbr>
-                      </td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>
-                        <abbr title="the value is the biggest number " class="initialism">
-                          <mark>tiger</mark>
-                        </abbr>
-                      </td>
-                      <td>lei</td>
-                      <td>23</td>
-                    </tr>
-                    <tr>
-                      <td>456</td>
-                      <td>lei</td>
-                      <td>24</td>
-                    </tr>
-                    <tr>
-                      <td>324</td>
-                      <td>lei</td>
-                      <td>26</td>
-                    </tr>
+                  <tr>
+                    <td>#1111</td>
+                    <td>lei</td>
+                    <td>17</td>
+                  </tr>
+                  <tr>
+                    <td>#1245</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>15245</td>
+                    <td>lei</td>
+                    <td>18</td>
+                  </tr>
+                  <tr>
+                    <td>87956</td>
+                    <td>lei</td>
+                    <td>21</td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <abbr title="the value is the biggest number " class="initialism">
+                        <mark>monkey</mark>
+                      </abbr>
+                    </td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <abbr title="the value is the biggest number " class="initialism">
+                        <mark>tiger</mark>
+                      </abbr>
+                    </td>
+                    <td>lei</td>
+                    <td>23</td>
+                  </tr>
+                  <tr>
+                    <td>456</td>
+                    <td>lei</td>
+                    <td>24</td>
+                  </tr>
+                  <tr>
+                    <td>324</td>
+                    <td>lei</td>
+                    <td>26</td>
+                  </tr>
                   </tbody>
                 </table>
               </div>
@@ -1062,7 +1073,8 @@ under the License.
             <div class="row">
               <div class="col-md-12 col-lg-12 col-sm-12">
                 <p class="text-left">
-                  <strong>The regular expression matching means :</strong> Matches a string consisting of 26 english letters
+                  <strong>The regular expression matching means :</strong> Matches a string consisting of 26 english
+                  letters
                 </p>
               </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.spec.ts b/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.spec.ts
index 33f32e5..fb4b869 100644
--- a/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { RuleComponent } from './rule.component';
+import {RuleComponent} from './rule.component';
 
 describe('RuleComponent', () => {
   let component: RuleComponent;
@@ -26,9 +26,9 @@ describe('RuleComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ RuleComponent ]
+      declarations: [RuleComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.ts b/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.ts
index 8db602b..6ab521c 100644
--- a/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/rule/rule.component.ts
@@ -16,7 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from '@angular/core';
+import {Component, OnInit} from '@angular/core';
 
 @Component({
   selector: 'app-rule',
@@ -24,11 +24,13 @@ import { Component, OnInit } from '@angular/core';
   styleUrls: ['./rule.component.css']
 })
 export class RuleComponent implements OnInit {
-  
-  vaType : string;
-  constructor() { }
+
+  vaType: string;
+
+  constructor() {
+  }
 
   ngOnInit() {
-  	this.vaType = '2';
+    this.vaType = '2';
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.css b/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.css
index fd725f8..da8dfb0 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.css
+++ b/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.css
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../../../../../node_modules/angular2-toaster/toaster.css');
 @import url('../../../measure.component.css');
 
@@ -65,19 +64,19 @@ div.tree div.tree-children::before {
   left: 5px
 }
 
-div.tree treenode>div>.node-wrapper {
+div.tree treenode > div > .node-wrapper {
   margin-left: 24px
 }
 
-div.tree treenode>div>.node-wrapper>.node-content-wrapper {
+div.tree treenode > div > .node-wrapper > .node-content-wrapper {
   margin-left: 4px
 }
 
-div.tree treenode>div.tree-node-leaf>.node-wrapper {
+div.tree treenode > div.tree-node-leaf > .node-wrapper {
   margin-left: 0
 }
 
-div.tree treenode>div::before {
+div.tree treenode > div::before {
   content: "";
   position: absolute;
   border-bottom: 1px dotted #23527c;
@@ -86,7 +85,7 @@ div.tree treenode>div::before {
   left: 7px
 }
 
-div.tree treenode>div .toggle-children-wrapper {
+div.tree treenode > div .toggle-children-wrapper {
   width: 13px;
   height: 13px;
   border: 1px solid #23527c;
@@ -99,7 +98,7 @@ div.tree treenode>div .toggle-children-wrapper {
   z-index: 1
 }
 
-div.tree treenode>div .toggle-children-wrapper::before {
+div.tree treenode > div .toggle-children-wrapper::before {
   content: "";
   display: inline-block;
   width: 7px;
@@ -109,7 +108,7 @@ div.tree treenode>div .toggle-children-wrapper::before {
   left: 2px
 }
 
-div.tree treenode>div .toggle-children-wrapper.toggle-children-wrapper-collapsed::after {
+div.tree treenode > div .toggle-children-wrapper.toggle-children-wrapper-collapsed::after {
   content: "";
   display: inline-block;
   height: 7px;
@@ -119,19 +118,19 @@ div.tree treenode>div .toggle-children-wrapper.toggle-children-wrapper-collapsed
   left: 5px
 }
 
-div.tree treenode>div .toggle-children-wrapper .toggle-children {
+div.tree treenode > div .toggle-children-wrapper .toggle-children {
   display: none
 }
 
-div.tree treenode>div .node-content-wrapper {
+div.tree treenode > div .node-content-wrapper {
   margin-left: 4px
 }
 
-div.tree>treenode>div::before {
+div.tree > treenode > div::before {
   left: 14px
 }
 
-div.tree>treenode>div>.node-wrapper>treenodeexpander>.toggle-children-wrapper {
+div.tree > treenode > div > .node-wrapper > treenodeexpander > .toggle-children-wrapper {
   left: 22px
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.html b/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.html
index 4c9eb99..3ec2a1e 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.html
+++ b/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.html
@@ -18,56 +18,58 @@ under the License.
 -->
 <div class="container-fluid">
   <form name="Form" id="form" #prForm="ngForm" novalidate>
-      <label class="stepDesc">This step lets you select the single source of truth for data quality comparision with a target source.</label>
-      <div class="container-fluid">
-        <div class="col-md-4 col-lg-4 col-sm-4">
-          <fieldset>
-            <legend>Please select schema</legend>
-            <tree-root [nodes]="step1.nodeList" [options]="options"></tree-root>
-          </fieldset>
-        </div>
-        <div class="col-md-8 col-lg-8 col-sm-8">
-          <fieldset>
-            <legend>
-              Select attributes
-            </legend>
-            <div class="y-scrollable">
-              <div style="margin-top:10px;">
-                <label>View schema:</label>
-                <i style="color:#fff;font-weight: bold;">{{step1.currentDBstr}}{{step1.currentTable}}
-                </i>
-              </div>
-              <div style="margin-top:5px;">
-                <table class="table table-striped no-border">
-                  <thead>
-                  <tr style="background-color:#7D95CC">
-                    <th>
-                      <input type="checkbox" (click)="toggleAll()" [checked]="selectedAll" />
-                    </th>
-                    <th>Column Name</th>
-                    <th>Type</th>
-                    <th>Comment</th>
-                  </tr>
-                  </thead>
-                  <tbody>
-                  <tr *ngIf="!step1.schemaCollection || step1.schemaCollection.length == 0">
-                    <td colspan="5" style="text-align:center;"><span class="highlight">Please select a schema from the left tree first</span></td>
-                  </tr>
-                  <tr *ngFor="let row of step1.schemaCollection">
-                    <td>
-                      <input type="checkbox" (click)='toggleSelection(row)' [checked]="row.selected" value={{row.name}} />
-                    </td>
-                    <td>{{row.name}}</td>
-                    <td>{{row.type}}</td>
-                    <td>{{row.comment}}</td>
-                  </tr>
-                  </tbody>
-                </table>
-              </div>
+    <label class="stepDesc">This step lets you select the single source of truth for data quality comparision with a
+      target source.</label>
+    <div class="container-fluid">
+      <div class="col-md-4 col-lg-4 col-sm-4">
+        <fieldset>
+          <legend>Please select schema</legend>
+          <tree-root [nodes]="step1.nodeList" [options]="options"></tree-root>
+        </fieldset>
+      </div>
+      <div class="col-md-8 col-lg-8 col-sm-8">
+        <fieldset>
+          <legend>
+            Select attributes
+          </legend>
+          <div class="y-scrollable">
+            <div style="margin-top:10px;">
+              <label>View schema:</label>
+              <i style="color:#fff;font-weight: bold;">{{step1.currentDBstr}}{{step1.currentTable}}
+              </i>
+            </div>
+            <div style="margin-top:5px;">
+              <table class="table table-striped no-border">
+                <thead>
+                <tr style="background-color:#7D95CC">
+                  <th>
+                    <input type="checkbox" (click)="toggleAll()" [checked]="selectedAll"/>
+                  </th>
+                  <th>Column Name</th>
+                  <th>Type</th>
+                  <th>Comment</th>
+                </tr>
+                </thead>
+                <tbody>
+                <tr *ngIf="!step1.schemaCollection || step1.schemaCollection.length == 0">
+                  <td colspan="5" style="text-align:center;"><span class="highlight">Please select a schema from the left tree first</span>
+                  </td>
+                </tr>
+                <tr *ngFor="let row of step1.schemaCollection">
+                  <td>
+                    <input type="checkbox" (click)='toggleSelection(row)' [checked]="row.selected" value={{row.name}}/>
+                  </td>
+                  <td>{{row.name}}</td>
+                  <td>{{row.type}}</td>
+                  <td>{{row.comment}}</td>
+                </tr>
+                </tbody>
+              </table>
             </div>
-          </fieldset>
-        </div>
+          </div>
+        </fieldset>
       </div>
+    </div>
   </form>
 
   <div class="form-group btn-container">

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.spec.ts b/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.spec.ts
index 13d47d4..4e9a602 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { PrStep1Component } from './step1.component';
+import {PrStep1Component} from './step1.component';
 
 describe('PrStep1Component', () => {
   let component: PrStep1Component;
@@ -26,7 +26,7 @@ describe('PrStep1Component', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PrStep1Component ]
+      declarations: [PrStep1Component]
     })
       .compileComponents();
   }));

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.ts b/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.ts
index 94e1d37..5c1a450 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/step1/step1.component.ts
@@ -16,12 +16,12 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit, Input, Output, EventEmitter } from "@angular/core";
-import { ServiceService } from "../../../../service/service.service";
-import { TREE_ACTIONS, ITreeOptions } from "angular-tree-component";
-import { HttpClient } from "@angular/common/http";
-import { AfterViewChecked, ElementRef } from "@angular/core";
-import { ProfilingStep1 } from "../pr.component";
+import {Component, OnInit, Input, Output, EventEmitter} from "@angular/core";
+import {ServiceService} from "../../../../service/service.service";
+import {TREE_ACTIONS, ITreeOptions} from "angular-tree-component";
+import {HttpClient} from "@angular/common/http";
+import {AfterViewChecked, ElementRef} from "@angular/core";
+import {ProfilingStep1} from "../pr.component";
 
 export class node {
   name: string;
@@ -48,6 +48,7 @@ export class Col {
   RE: string;
   rules: any;
   newRules: Rule[];
+
   constructor(name: string, type: string, comment: string, selected: boolean) {
     this.name = name;
     this.type = type;
@@ -145,25 +146,25 @@ export class PrStep1Component implements AfterViewChecked, OnInit {
       for (let item of this.step1.selection) {
         if (item.isNum == true) {
           this.step1.dropdownList[item.name] = [
-            { id: 1, itemName: "Null Count", category: "Simple Statistics" },
-            { id: 2, itemName: "Distinct Count", category: "Simple Statistics" },
-            { id: 3, itemName: "Total Count", category: "Summary Statistics" },
-            { id: 4, itemName: "Maximum", category: "Summary Statistics" },
-            { id: 5, itemName: "Minimum", category: "Summary Statistics" },
-            { id: 6, itemName: "Average", category: "Summary Statistics" },
+            {id: 1, itemName: "Null Count", category: "Simple Statistics"},
+            {id: 2, itemName: "Distinct Count", category: "Simple Statistics"},
+            {id: 3, itemName: "Total Count", category: "Summary Statistics"},
+            {id: 4, itemName: "Maximum", category: "Summary Statistics"},
+            {id: 5, itemName: "Minimum", category: "Summary Statistics"},
+            {id: 6, itemName: "Average", category: "Summary Statistics"},
             // {"id":7,"itemName":"Median","category": "Summary Statistics"},
             // {"id":8,"itemName":"Rule Detection Count","category": "Advanced Statistics"},
-            { id: 9, itemName: "Enum Detection Top5 Count", category: "Advanced Statistics" }
+            {id: 9, itemName: "Enum Detection Top5 Count", category: "Advanced Statistics"}
           ];
         } else {
           this.step1.dropdownList[item.name] = [
-            { id: 1, itemName: "Null Count", category: "Simple Statistics" },
-            { id: 2, itemName: "Distinct Count", category: "Simple Statistics" },
-            { id: 3, itemName: "Total Count", category: "Summary Statistics" },
+            {id: 1, itemName: "Null Count", category: "Simple Statistics"},
+            {id: 2, itemName: "Distinct Count", category: "Simple Statistics"},
+            {id: 3, itemName: "Total Count", category: "Summary Statistics"},
             // {"id":8,"itemName":"Rule Detection Count","category": "Advanced Statistics"},
-            { id: 9, itemName: "Enum Detection Top5 Count", category: "Advanced Statistics" },
-            { id: 10, itemName:"Regular Expression Detection Count", regex: "", category: "Advanced Statistics"},
-            { id: 11, itemName: "Empty Count", category: "Simple Statistics" }
+            {id: 9, itemName: "Enum Detection Top5 Count", category: "Advanced Statistics"},
+            {id: 10, itemName: "Regular Expression Detection Count", regex: "", category: "Advanced Statistics"},
+            {id: 11, itemName: "Empty Count", category: "Simple Statistics"}
           ];
         }
       }
@@ -187,7 +188,8 @@ export class PrStep1Component implements AfterViewChecked, OnInit {
     private elementRef: ElementRef,
     private http: HttpClient,
     public serviceService: ServiceService
-  ) {}
+  ) {
+  }
 
   ngOnInit() {
     if (this.step1.nodeList.length !== 0) return;
@@ -232,5 +234,6 @@ export class PrStep1Component implements AfterViewChecked, OnInit {
     this.nextStep.emit(this.step1);
   }
 
-  ngAfterViewChecked() {}
+  ngAfterViewChecked() {
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.css b/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.css
index af2cf72..7a24eb2 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.css
+++ b/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.css
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../../../../../node_modules/angular2-toaster/toaster.css');
 @import url('../../../measure.component.css');
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.html b/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.html
index 2be8e20..c3df300 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.html
+++ b/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.html
@@ -31,7 +31,10 @@ under the License.
               <tr style="background-color:#7D95CC">
                 <th>Column Name</th>
                 <th>Data Type</th>
-                <th>Rule&nbsp;&nbsp;&nbsp;&nbsp;<i style="color:#b2c831;" class="fa fa-question-circle fa-lg"></i><i style="font-family: 'Open Sans', sans-serif;">Click <a (click)="showRule()" class="bark-link po">here</a> to view the rule definition</i></th>
+                <th>Rule&nbsp;&nbsp;&nbsp;&nbsp;<i style="color:#b2c831;" class="fa fa-question-circle fa-lg"></i><i
+                  style="font-family: 'Open Sans', sans-serif;">Click <a (click)="showRule()"
+                                                                         class="bark-link po">here</a> to view the rule
+                  definition</i></th>
               </tr>
               </thead>
               <tbody>
@@ -39,7 +42,9 @@ under the License.
                 <td class="middle">{{item.name}}</td>
                 <td class="middle">{{item.type}}</td>
                 <td class="col-md-5 middle">
-                  <angular2-multiselect [data]="step1.dropdownList[item.name]" name="rules-{{item.name}}" [(ngModel)]="step2.selectedItems[item.name]" [settings]="dropdownSettings"></angular2-multiselect>
+                  <angular2-multiselect [data]="step1.dropdownList[item.name]" name="rules-{{item.name}}"
+                                        [(ngModel)]="step2.selectedItems[item.name]"
+                                        [settings]="dropdownSettings"></angular2-multiselect>
                   <div *ngIf="containsRegex(step2.selectedItems[item.name])" class="block">
                     <label class="regex-label">
                       Regular Expression:

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.spec.ts b/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.spec.ts
index ca2149a..17d0da0 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { PrStep2Component } from './step2.component';
+import {PrStep2Component} from './step2.component';
 
 describe('PrStep2Component', () => {
   let component: PrStep2Component;
@@ -26,7 +26,7 @@ describe('PrStep2Component', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PrStep2Component ]
+      declarations: [PrStep2Component]
     })
       .compileComponents();
   }));

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.ts b/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.ts
index cd5314a..f87aff1 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/step2/step2.component.ts
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 import {Component, EventEmitter, Input, OnInit, Output} from "@angular/core";
-import { AfterViewChecked } from "@angular/core";
-import { AngularMultiSelectModule } from "angular2-multiselect-dropdown/angular2-multiselect-dropdown";
-import { ProfilingStep1, ProfilingStep2 } from './../pr.component'
+import {AfterViewChecked} from "@angular/core";
+import {AngularMultiSelectModule} from "angular2-multiselect-dropdown/angular2-multiselect-dropdown";
+import {ProfilingStep1, ProfilingStep2} from './../pr.component'
 
 
 @Component({
@@ -35,7 +35,8 @@ export class PrStep2Component implements AfterViewChecked, OnInit {
   @Output() prevStep: EventEmitter<Object> = new EventEmitter<Object>();
   @Output() nextStep: EventEmitter<Object> = new EventEmitter<Object>();
 
-  constructor() {}
+  constructor() {
+  }
 
   showRule() {
     document.getElementById("showrule").style.display = "";
@@ -55,7 +56,7 @@ export class PrStep2Component implements AfterViewChecked, OnInit {
     this.prevStep.emit(this.step2);
   }
 
-  containsRegex(obj){
+  containsRegex(obj) {
     if (!obj) return false;
     return obj.some(rule =>
       rule.itemName == 'Regular Expression Detection Count'
@@ -73,5 +74,6 @@ export class PrStep2Component implements AfterViewChecked, OnInit {
     };
   }
 
-  ngAfterViewChecked() {}
+  ngAfterViewChecked() {
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.css b/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.css
index be33bcc..2bc1b7a 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.css
+++ b/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.css
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../../../../../node_modules/angular2-toaster/toaster.css');
 @import url('../../../measure.component.css');
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.html b/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.html
index b2ed563..2cbf083 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.html
+++ b/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.html
@@ -25,10 +25,11 @@ under the License.
           Required Information
         </legend>
         <div class="y-scrollable">
-            <div class="form-group" style="text-align:center">
-              Data Source:{{step1.currentDB}}.{{step1.currentTable}}
-            </div>
-            <app-configuration [data]="step3.config" [location]="srclocation" (event)="getData($event)"></app-configuration>
+          <div class="form-group" style="text-align:center">
+            Data Source:{{step1.currentDB}}.{{step1.currentTable}}
+          </div>
+          <app-configuration [data]="step3.config" [location]="srclocation"
+                             (event)="getData($event)"></app-configuration>
         </div>
       </fieldset>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.spec.ts b/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.spec.ts
index da5ab2e..a4ecae5 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { PrStep3Component } from './step3.component';
+import {PrStep3Component} from './step3.component';
 
 describe('PrStep3Component', () => {
   let component: PrStep3Component;
@@ -26,7 +26,7 @@ describe('PrStep3Component', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PrStep3Component ]
+      declarations: [PrStep3Component]
     })
       .compileComponents();
   }));

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.ts b/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.ts
index 79bf2d9..58e24ab 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/step3/step3.component.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core";
-import { AfterViewChecked } from "@angular/core";
-import { ProfilingStep1, ProfilingStep2, ProfilingStep3 } from './../pr.component'
+import {Component, EventEmitter, Input, OnInit, Output} from "@angular/core";
+import {AfterViewChecked} from "@angular/core";
+import {ProfilingStep1, ProfilingStep2, ProfilingStep3} from './../pr.component'
 
 @Component({
   selector: "app-pr-step-3",
@@ -33,7 +33,8 @@ export class PrStep3Component implements AfterViewChecked, OnInit {
   @Output() prevStep: EventEmitter<Object> = new EventEmitter<Object>();
   @Output() nextStep: EventEmitter<Object> = new EventEmitter<Object>();
 
-  constructor() {}
+  constructor() {
+  }
 
   getData(evt) {
     this.step3.config = evt;
@@ -52,6 +53,9 @@ export class PrStep3Component implements AfterViewChecked, OnInit {
     this.prevStep.emit(this.step3);
   }
 
-  ngOnInit() {}
-  ngAfterViewChecked() {}
+  ngOnInit() {
+  }
+
+  ngAfterViewChecked() {
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.css b/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.css
index 60d6e32..b0ef634 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.css
+++ b/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.css
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../../../../../node_modules/angular2-toaster/toaster.css');
 @import url('../../../measure.component.css');
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.html b/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.html
index 0efec50..a6ad60b 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.html
+++ b/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.html
@@ -31,7 +31,8 @@ under the License.
                 Measure Name<span class="symbol required"></span>:
               </label>
               <div class="col-md-10 col-lg-10 col-sm-10 ">
-                <input type="text" class="form-control" [(ngModel)]="step4.prName" #prName="ngModel" placeholder="Please input the measure name" required pattern="^[a-zA-Z0-9_-]*$">
+                <input type="text" class="form-control" [(ngModel)]="step4.prName" #prName="ngModel"
+                       placeholder="Please input the measure name" required pattern="^[a-zA-Z0-9_-]*$">
                 <span class="error text-small block " *ngIf="prName.dirty && (prName.errors?.required)">Measure Name is required</span>
                 <span class="error text-small block " *ngIf="prName.dirty && (prName.errors?.pattern)">Only letter, number, "-" and "_" are allowed</span>
               </div>
@@ -43,7 +44,8 @@ under the License.
                 Measure Description:
               </label>
               <div class="col-md-10 col-lg-10 col-sm-10">
-                <input type="text" class="form-control" [(ngModel)]="step4.desc" placeholder="Please input detailed description of your measure" name="desc">
+                <input type="text" class="form-control" [(ngModel)]="step4.desc"
+                       placeholder="Please input detailed description of your measure" name="desc">
               </div>
             </div>
           </div>
@@ -82,7 +84,9 @@ under the License.
         </div>
         <div style="color:#b2c831">
           <p>
-            <i class="fa fa-info-circle"></i> After submitted, please go to "<a class="bark-link" routerLink="/measures">Measures</a>" to check the measure status
+            <i class="fa fa-info-circle"></i> After submitted, please go to "<a class="bark-link"
+                                                                                routerLink="/measures">Measures</a>" to
+            check the measure status
           </p>
         </div>
       </fieldset>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.spec.ts b/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.spec.ts
index c0ba718..dddcd35 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { PrStep4Component } from './step4.component';
+import {PrStep4Component} from './step4.component';
 
 describe('PrStep4Component', () => {
   let component: PrStep4Component;
@@ -26,7 +26,7 @@ describe('PrStep4Component', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PrStep4Component ]
+      declarations: [PrStep4Component]
     })
       .compileComponents();
   }));

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.ts b/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.ts
index f3178af..2e63c3a 100644
--- a/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/step4/step4.component.ts
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 import {Component, EventEmitter, Input, OnInit, Output, ChangeDetectorRef, AfterViewInit} from "@angular/core";
-import { FormControl } from "@angular/forms";
-import { FormsModule } from "@angular/forms";
-import { AfterViewChecked, ElementRef } from "@angular/core";
+import {FormControl} from "@angular/forms";
+import {FormsModule} from "@angular/forms";
+import {AfterViewChecked, ElementRef} from "@angular/core";
 import {ProfilingStep1, ProfilingStep2, ProfilingStep3, ProfilingStep4} from "../pr.component";
 
 @Component({
@@ -38,7 +38,8 @@ export class PrStep4Component implements AfterViewChecked, OnInit, AfterViewInit
   @Output() prevStep: EventEmitter<Object> = new EventEmitter<Object>();
   @Output() submitMeasure: EventEmitter<Object> = new EventEmitter<Object>();
 
-  constructor(private cdr: ChangeDetectorRef) {}
+  constructor(private cdr: ChangeDetectorRef) {
+  }
 
   prevChildStep() {
     this.prevStep.emit(this.step4);
@@ -49,11 +50,13 @@ export class PrStep4Component implements AfterViewChecked, OnInit, AfterViewInit
     this.submitMeasure.emit(this.step4);
   }
 
-  ngOnInit() {}
+  ngOnInit() {
+  }
 
   ngAfterViewInit() {
     this.cdr.detectChanges();
   }
 
-  ngAfterViewChecked() {}
+  ngAfterViewChecked() {
+  }
 }



[5/5] incubator-griffin git commit: make ui style consistent

Posted by gu...@apache.org.
make ui style consistent

make ui module code style consistent

Author: William Guo <gu...@apache.org>

Closes #398 from guoyuepeng/2018_08_20_make_ui_style_consistent.


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

Branch: refs/heads/master
Commit: b306d872c97dd37ab0be06c908b9f17e084a6a26
Parents: e51245b
Author: William Guo <gu...@apache.org>
Authored: Mon Aug 20 22:34:30 2018 +0800
Committer: Lionel Liu <bh...@163.com>
Committed: Mon Aug 20 22:34:30 2018 +0800

----------------------------------------------------------------------
 ui/angular/.angular-cli.json                    |    6 +-
 ui/angular/karma.conf.js                        |    4 +-
 ui/angular/protractor.conf.js                   |    7 +-
 ui/angular/src/app/app.component.css            |   17 +-
 ui/angular/src/app/app.component.html           |   36 +-
 ui/angular/src/app/app.component.js             |   34 +-
 ui/angular/src/app/app.component.spec.ts        |    4 +-
 ui/angular/src/app/app.component.ts             |   30 +-
 ui/angular/src/app/app.module.js                |   71 +-
 ui/angular/src/app/app.module.ts                |  119 +-
 .../src/app/dataasset/dataasset.component.css   |    6 +-
 .../src/app/dataasset/dataasset.component.html  |  120 +-
 .../app/dataasset/dataasset.component.spec.ts   |    8 +-
 .../src/app/dataasset/dataasset.component.ts    |   26 +-
 ui/angular/src/app/health/health.component.html |    3 +-
 .../src/app/health/health.component.spec.ts     |    8 +-
 ui/angular/src/app/health/health.component.ts   |   42 +-
 .../job/create-job/batch/batch.component.css    |   82 +-
 .../job/create-job/batch/batch.component.html   |   31 +-
 .../create-job/batch/batch.component.spec.ts    |    8 +-
 .../app/job/create-job/batch/batch.component.ts |   52 +-
 .../streaming/streaming.component.css           |   82 +-
 .../streaming/streaming.component.html          |   16 +-
 .../streaming/streaming.component.spec.ts       |    8 +-
 .../create-job/streaming/streaming.component.ts |   48 +-
 .../job/job-detail/job-detail.component.html    |    2 +-
 .../job/job-detail/job-detail.component.spec.ts |    8 +-
 .../app/job/job-detail/job-detail.component.ts  |   26 +-
 ui/angular/src/app/job/job.component.css        |    8 +-
 ui/angular/src/app/job/job.component.html       |  183 +--
 ui/angular/src/app/job/job.component.spec.ts    |    8 +-
 ui/angular/src/app/job/job.component.ts         |   82 +-
 ui/angular/src/app/loader/loader.component.css  |   10 +-
 .../src/app/loader/loader.component.spec.ts     |    8 +-
 ui/angular/src/app/loader/loader.component.ts   |   46 +-
 .../src/app/loader/loader.service.spec.ts       |    8 +-
 ui/angular/src/app/loader/loader.service.ts     |   27 +-
 ui/angular/src/app/loader/loader.state.ts       |    4 +-
 ui/angular/src/app/login/login.component.css    |    4 +-
 ui/angular/src/app/login/login.component.html   |   10 +-
 .../src/app/login/login.component.spec.ts       |    8 +-
 ui/angular/src/app/login/login.component.ts     |   22 +-
 .../measure/create-measure/ac/ac.component.css  |   23 +-
 .../measure/create-measure/ac/ac.component.html |  179 +--
 .../create-measure/ac/ac.component.spec.ts      |    8 +-
 .../measure/create-measure/ac/ac.component.ts   |   43 +-
 .../configuration/configuration.component.html  |    6 +-
 .../configuration.component.spec.ts             |    8 +-
 .../configuration/configuration.component.ts    |    8 +-
 .../create-measure/create-measure.component.css |   23 +-
 .../create-measure.component.html               |  298 ++---
 .../create-measure.component.spec.ts            |    8 +-
 .../create-measure/create-measure.component.ts  |   34 +-
 .../confirmModal/confirmModal.component.spec.ts |    6 +-
 .../pr/confirmModal/confirmModal.component.ts   |    3 +-
 .../measure/create-measure/pr/pr.component.css  |    1 -
 .../measure/create-measure/pr/pr.component.html |   16 +-
 .../create-measure/pr/pr.component.spec.ts      |    8 +-
 .../measure/create-measure/pr/pr.component.ts   |   31 +-
 .../create-measure/pr/rule/rule.component.css   |    2 +-
 .../create-measure/pr/rule/rule.component.html  | 1046 +++++++++---------
 .../pr/rule/rule.component.spec.ts              |    8 +-
 .../create-measure/pr/rule/rule.component.ts    |   12 +-
 .../create-measure/pr/step1/step1.component.css |   23 +-
 .../pr/step1/step1.component.html               |   98 +-
 .../pr/step1/step1.component.spec.ts            |    6 +-
 .../create-measure/pr/step1/step1.component.ts  |   45 +-
 .../create-measure/pr/step2/step2.component.css |    1 -
 .../pr/step2/step2.component.html               |    9 +-
 .../pr/step2/step2.component.spec.ts            |    6 +-
 .../create-measure/pr/step2/step2.component.ts  |   14 +-
 .../create-measure/pr/step3/step3.component.css |    1 -
 .../pr/step3/step3.component.html               |    9 +-
 .../pr/step3/step3.component.spec.ts            |    6 +-
 .../create-measure/pr/step3/step3.component.ts  |   16 +-
 .../create-measure/pr/step4/step4.component.css |    1 -
 .../pr/step4/step4.component.html               |   10 +-
 .../pr/step4/step4.component.spec.ts            |    6 +-
 .../create-measure/pr/step4/step4.component.ts  |   15 +-
 .../create-measure/pub/pub.component.css        |   85 +-
 .../create-measure/pub/pub.component.html       |   56 +-
 .../create-measure/pub/pub.component.spec.ts    |    8 +-
 .../measure/create-measure/pub/pub.component.ts |   80 +-
 .../measure-detail.component.html               |    6 +-
 .../measure-detail.component.spec.ts            |    8 +-
 .../measure-detail/measure-detail.component.ts  |   19 +-
 .../src/app/measure/measure.component.css       |   82 +-
 .../src/app/measure/measure.component.html      |   73 +-
 .../src/app/measure/measure.component.spec.ts   |    8 +-
 ui/angular/src/app/measure/measure.component.ts |   26 +-
 .../detail-metric/detail-metric.component.css   |    4 +-
 .../detail-metric/detail-metric.component.html  |   63 +-
 .../detail-metric.component.spec.ts             |    8 +-
 .../detail-metric/detail-metric.component.ts    |   70 +-
 ui/angular/src/app/metric/metric.component.html |   17 +-
 .../src/app/metric/metric.component.spec.ts     |    8 +-
 ui/angular/src/app/metric/metric.component.ts   |   26 +-
 .../mydashboard/mydashboard.component.spec.ts   |    8 +-
 .../app/mydashboard/mydashboard.component.ts    |    7 +-
 .../src/app/service/chart.service.spec.ts       |    4 +-
 ui/angular/src/app/service/chart.service.ts     |   15 +-
 ui/angular/src/app/service/http.service.spec.ts |    4 +-
 ui/angular/src/app/service/http.service.ts      |   54 +-
 .../src/app/service/service.service.spec.ts     |    4 +-
 ui/angular/src/app/service/service.service.ts   |   28 +-
 ui/angular/src/app/service/user.service.spec.ts |    4 +-
 ui/angular/src/app/service/user.service.ts      |    5 +-
 .../src/app/sidebar/sidebar.component.css       |    9 +-
 .../src/app/sidebar/sidebar.component.html      |   13 +-
 .../src/app/sidebar/sidebar.component.spec.ts   |    8 +-
 ui/angular/src/app/sidebar/sidebar.component.ts |   34 +-
 ui/angular/src/app/sidebar/truncate.pipe.ts     |    4 +-
 ui/angular/src/environments/environment.js      |    2 +-
 ui/angular/src/index.html                       |    4 +-
 ui/angular/src/main.js                          |    2 +-
 ui/angular/src/main.ts                          |   10 +-
 ui/angular/src/polyfills.ts                     |    2 -
 ui/angular/src/styles.css                       |  862 ++++++++-------
 ui/angular/src/test.ts                          |    5 +-
 ui/angular/src/typings.d.ts                     |    1 +
 ui/angular/src/vendor.ts                        |    3 +-
 ui/angular/webpack.config.js                    |  114 +-
 ui/pom.xml                                      |  229 ++--
 123 files changed, 2859 insertions(+), 2592 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/.angular-cli.json
----------------------------------------------------------------------
diff --git a/ui/angular/.angular-cli.json b/ui/angular/.angular-cli.json
index 810347e..2044168 100644
--- a/ui/angular/.angular-cli.json
+++ b/ui/angular/.angular-cli.json
@@ -22,7 +22,11 @@
         "../node_modules/bootstrap/dist/css/bootstrap.css",
         "styles.css"
       ],
-      "scripts": [ "../node_modules/echarts/dist/echarts.min.js", "../node_modules/jquery/dist/jquery.min.js", "../node_modules/bootstrap/dist/js/bootstrap.min.js" ],
+      "scripts": [
+        "../node_modules/echarts/dist/echarts.min.js",
+        "../node_modules/jquery/dist/jquery.min.js",
+        "../node_modules/bootstrap/dist/js/bootstrap.min.js"
+      ],
       "environmentSource": "environments/environment.ts",
       "environments": {
         "dev": "environments/environment.ts",

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/karma.conf.js
----------------------------------------------------------------------
diff --git a/ui/angular/karma.conf.js b/ui/angular/karma.conf.js
index 25b36fb..c092cab 100644
--- a/ui/angular/karma.conf.js
+++ b/ui/angular/karma.conf.js
@@ -31,11 +31,11 @@ module.exports = function (config) {
       require('karma-coverage-istanbul-reporter'),
       require('@angular/cli/plugins/karma')
     ],
-    client:{
+    client: {
       clearContext: false // leave Jasmine Spec Runner output visible in browser
     },
     coverageIstanbulReporter: {
-      reports: [ 'html', 'lcovonly' ],
+      reports: ['html', 'lcovonly'],
       fixWebpackSourcePaths: true
     },
     angularCli: {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/protractor.conf.js
----------------------------------------------------------------------
diff --git a/ui/angular/protractor.conf.js b/ui/angular/protractor.conf.js
index bf3c9a3..98f2981 100644
--- a/ui/angular/protractor.conf.js
+++ b/ui/angular/protractor.conf.js
@@ -19,7 +19,7 @@ under the License.
 // Protractor configuration file, see link for more information
 // https://github.com/angular/protractor/blob/master/lib/config.ts
 
-const { SpecReporter } = require('jasmine-spec-reporter');
+const {SpecReporter} = require('jasmine-spec-reporter');
 
 exports.config = {
   allScriptsTimeout: 11000,
@@ -35,12 +35,13 @@ exports.config = {
   jasmineNodeOpts: {
     showColors: true,
     defaultTimeoutInterval: 30000,
-    print: function() {}
+    print: function () {
+    }
   },
   onPrepare() {
     require('ts-node').register({
       project: 'e2e/tsconfig.e2e.json'
     });
-    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
+    jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}}));
   }
 };

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/app.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/app.component.css b/ui/angular/src/app/app.component.css
index 15f712d..e793939 100644
--- a/ui/angular/src/app/app.component.css
+++ b/ui/angular/src/app/app.component.css
@@ -16,14 +16,14 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../node_modules/bootstrap/dist/css/bootstrap.css');
+
 * {
   color: white;
 }
 
-.navbar-default .navbar-nav>li>a:hover,
-.navbar-default .navbar-nav>li>a:focus {
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
   color: #ffffff;
   background-color: transparent;
 }
@@ -47,7 +47,6 @@ under the License.
   cursor: pointer;
 }
 
-
 h3 {
   font-size: 34px;
 }
@@ -56,23 +55,21 @@ input {
   margin: 12px;
 }
 
-
-
 .dropdown-menu {
   background-color: #222222;
 }
 
-.dropdown-menu>li>a {
+.dropdown-menu > li > a {
   color: #ffffff;
 }
 
-.dropdown-menu>li>a:hover {
+.dropdown-menu > li > a:hover {
   text-decoration: none;
   color: #ffffff;
   background-color: #2a9fd6;
 }
 
-.navbar-default .navbar-nav>.open>a {
+.navbar-default .navbar-nav > .open > a {
   background-color: #333;
 }
 
@@ -114,7 +111,7 @@ hr {
   }
 }
 
-@media (max-width:991px) {
+@media (max-width: 991px) {
 
   #content-row {
     margin-top: 0em;

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/app.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/app.component.html b/ui/angular/src/app/app.component.html
index 84b6413..b0c7f39 100644
--- a/ui/angular/src/app/app.component.html
+++ b/ui/angular/src/app/app.component.html
@@ -21,13 +21,16 @@ under the License.
   <nav class="navbar navbar-default navbar-fixed-top" ng-controller="NavCtrl">
     <div class="container-fluid">
       <div class="navbar-header">
-        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false">
+        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse"
+                aria-expanded="false">
           <span class="sr-only">Toggle navigation</span>
           <span class="icon-bar"></span>
           <span class="icon-bar"></span>
           <span class="icon-bar"></span>
         </button>
-        <a routerLink="/" class="navbar-brand" style="padding-top:5px;padding-bottom:0;"><img src="/assets/img/logo.png" title="Data Quality Service" style="max-height:40px;"/></a>
+        <a routerLink="/" class="navbar-brand" style="padding-top:5px;padding-bottom:0;"><img src="/assets/img/logo.png"
+                                                                                              title="Data Quality Service"
+                                                                                              style="max-height:40px;"/></a>
       </div>
       <div class="collapse navbar-collapse" id="navbar-collapse">
         <ul class="nav navbar-nav">
@@ -38,15 +41,20 @@ under the License.
         </ul>
         <ul class="nav navbar-nav navbar-right">
           <li class="dropdown">
-            <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" id="toggle">{{fullName}} <i class="fa fa-user fa-fw"></i><span class="caret"></span></a>
+            <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"
+               id="toggle">{{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 class="divider"></li>
-              <li><a href="https://griffin.incubator.apache.org/" target="_blank"><i class="fa fa-home fa-fw"></i> Home Page</a></li>
-              <li><a href="https://github.com/apache/incubator-griffin/blob/master/griffin-doc/service/api-guide.md" target="_blank"><i class="fa fa-book fa-fw"></i> API DOCs</a></li>
-              <li><a href="https://github.com/apache/incubator-griffin/blob/master/griffin-doc/ui/user-guide.md" target="_blank"><i class="fa fa-question-circle fa-fw"></i> User Guide</a></li>
-              <li><a href="mailto:dev@griffin.incubator.apache.org"><i class="fa fa-envelope fa-fw"></i> Contact us</a></li>
+              <li><a href="https://griffin.incubator.apache.org/" target="_blank"><i class="fa fa-home fa-fw"></i> Home
+                Page</a></li>
+              <li><a href="https://github.com/apache/incubator-griffin/blob/master/griffin-doc/service/api-guide.md"
+                     target="_blank"><i class="fa fa-book fa-fw"></i> API DOCs</a></li>
+              <li><a href="https://github.com/apache/incubator-griffin/blob/master/griffin-doc/ui/user-guide.md"
+                     target="_blank"><i class="fa fa-question-circle fa-fw"></i> User Guide</a></li>
+              <li><a href="mailto:dev@griffin.incubator.apache.org"><i class="fa fa-envelope fa-fw"></i> Contact us</a>
+              </li>
               <li class="divider"></li>
               <li><a (click)="logout()" class="re"><i class="fa fa-sign-out fa-fw"></i> Logout</a>
               </li>
@@ -54,16 +62,22 @@ under the License.
           </li>
         </ul>
         <form class="navbar-search navbar-right nav navbar-nav">
-          <input id="searchBox" type="text" class="search-query" placeholder="Search..." ng-disabled="!isActive('/measures')&&!isActive('/dataassets')">
+          <input id="searchBox" type="text" class="search-query" placeholder="Search..."
+                 ng-disabled="!isActive('/measures')&&!isActive('/dataassets')">
         </form>
       </div>
     </div>
   </nav>
-  <div class="container-fluid" us-spinner="{color:'#ffffff', lines:13, width:14, length:28, radius:42, shadow:true, hwaccel:true, speed:0.8}" spinner-on="false" style="padding-top:56px;padding-bottom:90px;height:100%;padding-right:0;" id="mainContent">
+  <div class="container-fluid"
+       us-spinner="{color:'#ffffff', lines:13, width:14, length:28, radius:42, shadow:true, hwaccel:true, speed:0.8}"
+       spinner-on="false" style="padding-top:56px;padding-bottom:90px;height:100%;padding-right:0;" id="mainContent">
     <div class="col-md-9 col-xs-12">
-      <button type="button" class="btn btn-primary btn-circle" style="position: absolute; top: 0px; right: 30px; z-index:99" (click)="goback();"><span style="margin-bottom:20px;">Back</span></button>
+      <button type="button" class="btn btn-primary btn-circle"
+              style="position: absolute; top: 0px; right: 30px; z-index:99" (click)="goback();"><span
+        style="margin-bottom:20px;">Back</span></button>
       <!-- main content goes here-->
-      <div id="mainWindow" (window:resize)="onResize($event)" class="row y-scrollable" ng-view style="padding-right: 10px;">
+      <div id="mainWindow" (window:resize)="onResize($event)" class="row y-scrollable" ng-view
+           style="padding-right: 10px;">
         <app-loader></app-loader>
         <router-outlet></router-outlet>
       </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/app.component.js
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/app.component.js b/ui/angular/src/app/app.component.js
index a7fbf35..9d15b51 100644
--- a/ui/angular/src/app/app.component.js
+++ b/ui/angular/src/app/app.component.js
@@ -18,26 +18,28 @@ under the License.
 */
 "use strict";
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
-    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-    return c > 3 && r && Object.defineProperty(target, key, r), r;
+  var c = arguments.length,
+    r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+  return c > 3 && r && Object.defineProperty(target, key, r), r;
 };
 exports.__esModule = true;
 var core_1 = require("@angular/core");
 // import 'bootstrap/dist/css/bootstrap.css';
 var AppComponent = (function () {
-    function AppComponent() {
-        this.title = 'app';
-    }
-    AppComponent = __decorate([
-        core_1.Component({
-            selector: 'app-root',
-            template: "\n    <h1>Angular Router</h1>\n    <nav>\n      <a routerLink=\"/measures\" routerLinkActive=\"active\"> Measures</a>\n      <a routerLink=\"/jobs\">jobs</a>\n    </nav>\n    <router-outlet></router-outlet>\n  ",
-            templateUrl: './app.component.html',
-            styleUrls: ['./app.component.css']
-        })
-    ], AppComponent);
-    return AppComponent;
+  function AppComponent() {
+    this.title = 'app';
+  }
+
+  AppComponent = __decorate([
+    core_1.Component({
+      selector: 'app-root',
+      template: "\n    <h1>Angular Router</h1>\n    <nav>\n      <a routerLink=\"/measures\" routerLinkActive=\"active\"> Measures</a>\n      <a routerLink=\"/jobs\">jobs</a>\n    </nav>\n    <router-outlet></router-outlet>\n  ",
+      templateUrl: './app.component.html',
+      styleUrls: ['./app.component.css']
+    })
+  ], AppComponent);
+  return AppComponent;
 }());
 exports.AppComponent = AppComponent;

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/app.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/app.component.spec.ts b/ui/angular/src/app/app.component.spec.ts
index 7e62354..6b8dc79 100644
--- a/ui/angular/src/app/app.component.spec.ts
+++ b/ui/angular/src/app/app.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { TestBed, async } from '@angular/core/testing';
+import {TestBed, async} from '@angular/core/testing';
 
-import { AppComponent } from './app.component';
+import {AppComponent} from './app.component';
 
 describe('AppComponent', () => {
   beforeEach(async(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/app.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/app.component.ts b/ui/angular/src/app/app.component.ts
index f80a3be..21061d7 100644
--- a/ui/angular/src/app/app.component.ts
+++ b/ui/angular/src/app/app.component.ts
@@ -14,14 +14,14 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, Directive, ViewContainerRef, OnInit, AfterViewChecked } from "@angular/core";
-import { Router } from "@angular/router";
-import { XHRBackend } from '@angular/http';
+import {Component, Directive, ViewContainerRef, OnInit, AfterViewChecked} from "@angular/core";
+import {Router} from "@angular/router";
+import {XHRBackend} from '@angular/http';
 import * as $ from "jquery";
-import { ServiceService } from "./service/service.service";
-import { UserService } from "./service/user.service";
-import { Location, LocationStrategy, HashLocationStrategy } from "@angular/common";
-import { HttpClient } from "@angular/common/http";
+import {ServiceService} from "./service/service.service";
+import {UserService} from "./service/user.service";
+import {Location, LocationStrategy, HashLocationStrategy} from "@angular/common";
+import {HttpClient} from "@angular/common/http";
 
 @Component({
   selector: "app-root",
@@ -34,26 +34,33 @@ export class AppComponent implements AfterViewChecked, OnInit {
   ntAccount: string;
   timestamp: Date;
   fullName: string;
+
   onResize(event) {
     this.resizeMainWindow();
   }
+
   goback() {
     this.location.back();
   }
+
   ngOnInit() {
     this.ntAccount = this.userService.getCookie("ntAccount");
     this.fullName = this.userService.getCookie("fullName");
   }
+
   constructor(
     private router: Router,
-    private http:HttpClient,
+    private http: HttpClient,
     private location: Location,
     public serviceService: ServiceService,
     public userService: UserService
-  ) {}
+  ) {
+  }
+
   resizeMainWindow() {
     $("#mainWindow").height(window.innerHeight - 56 - 20);
   }
+
   logout() {
     this.ntAccount = undefined;
     this.userService.setCookie("ntAccount", undefined, -1);
@@ -62,6 +69,7 @@ export class AppComponent implements AfterViewChecked, OnInit {
     window.location.reload();
     // window.location.replace ('login');
   }
+
   ngAfterViewChecked() {
     this.resizeMainWindow();
     $("#rightbar").css({
@@ -69,7 +77,7 @@ export class AppComponent implements AfterViewChecked, OnInit {
     });
     $("#side-bar-metrics").css({
       height:
-        $("#mainContent").height() - $("#side-bar-stats").outerHeight()
+      $("#mainContent").height() - $("#side-bar-stats").outerHeight()
     });
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/app.module.js
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/app.module.js b/ui/angular/src/app/app.module.js
index 1ce697c..5cbb62f 100644
--- a/ui/angular/src/app/app.module.js
+++ b/ui/angular/src/app/app.module.js
@@ -18,10 +18,11 @@ under the License.
 */
 "use strict";
 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
-    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-    return c > 3 && r && Object.defineProperty(target, key, r), r;
+  var c = arguments.length,
+    r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+  return c > 3 && r && Object.defineProperty(target, key, r), r;
 };
 exports.__esModule = true;
 var platform_browser_1 = require("@angular/platform-browser");
@@ -29,37 +30,39 @@ var core_1 = require("@angular/core");
 var router_1 = require("@angular/router");
 var app_component_1 = require("./app.component");
 var appRoutes = [
-    { path: 'health', component: app_component_1.AppComponent },
-    { path: 'measures', component: app_component_1.AppComponent },
-    { path: 'hero/:id', component: app_component_1.AppComponent },
-    { path: 'mydashboard', component: app_component_1.AppComponent },
-    {
-        path: 'jobs', component: app_component_1.AppComponent,
-        data: { title: 'Heroes List' }
-    },
-    { path: '',
-        redirectTo: 'health',
-        pathMatch: 'full'
-    },
-    { path: '**', component: app_component_1.AppComponent }
+  {path: 'health', component: app_component_1.AppComponent},
+  {path: 'measures', component: app_component_1.AppComponent},
+  {path: 'hero/:id', component: app_component_1.AppComponent},
+  {path: 'mydashboard', component: app_component_1.AppComponent},
+  {
+    path: 'jobs', component: app_component_1.AppComponent,
+    data: {title: 'Heroes List'}
+  },
+  {
+    path: '',
+    redirectTo: 'health',
+    pathMatch: 'full'
+  },
+  {path: '**', component: app_component_1.AppComponent}
 ];
 var AppModule = (function () {
-    function AppModule() {
-    }
-    AppModule = __decorate([
-        core_1.NgModule({
-            declarations: [
-                app_component_1.AppComponent
-            ],
-            imports: [
-                platform_browser_1.BrowserModule,
-                router_1.RouterModule.forRoot(appRoutes, { enableTracing: true } // <-- debugging purposes only
-                )
-            ],
-            providers: [],
-            bootstrap: [app_component_1.AppComponent]
-        })
-    ], AppModule);
-    return AppModule;
+  function AppModule() {
+  }
+
+  AppModule = __decorate([
+    core_1.NgModule({
+      declarations: [
+        app_component_1.AppComponent
+      ],
+      imports: [
+        platform_browser_1.BrowserModule,
+        router_1.RouterModule.forRoot(appRoutes, {enableTracing: true} // <-- debugging purposes only
+        )
+      ],
+      providers: [],
+      bootstrap: [app_component_1.AppComponent]
+    })
+  ], AppModule);
+  return AppModule;
 }());
 exports.AppModule = AppModule;

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/app.module.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/app.module.ts b/ui/angular/src/app/app.module.ts
index 2c769f3..196fdbc 100644
--- a/ui/angular/src/app/app.module.ts
+++ b/ui/angular/src/app/app.module.ts
@@ -16,49 +16,49 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { BrowserModule } from '@angular/platform-browser';
-import { NgModule} from '@angular/core';
-import { RouterModule, Routes } from '@angular/router';
-import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
-import { DataTableModule} from "angular2-datatable";
-import { TreeModule } from 'angular-tree-component';
-import { BrowserAnimationsModule} from '@angular/platform-browser/animations';
-import { NgxEchartsModule } from 'ngx-echarts';
-import { MatDatepickerModule, MatNativeDateModule} from '@angular/material';
-import { Location, LocationStrategy, HashLocationStrategy} from '@angular/common';
-import { ToasterModule, ToasterService} from 'angular2-toaster';
-import { FormsModule } from '@angular/forms';
-import { AppComponent } from './app.component';
-import { MeasureComponent } from './measure/measure.component';
-import { JobComponent } from './job/job.component';
-import { SidebarComponent } from './sidebar/sidebar.component';
-import { HealthComponent } from './health/health.component';
-import { MydashboardComponent } from './mydashboard/mydashboard.component';
-import { CreateMeasureComponent } from './measure/create-measure/create-measure.component';
-import { MeasureDetailComponent } from './measure/measure-detail/measure-detail.component';
-import { MetricComponent } from './metric/metric.component';
-import { DetailMetricComponent } from './metric/detail-metric/detail-metric.component';
-import { DataassetComponent } from './dataasset/dataasset.component';
-import { BatchComponent } from './job/create-job/batch/batch.component';
-import { AcComponent} from './measure/create-measure/ac/ac.component';
-import { PrComponent } from './measure/create-measure/pr/pr.component';
-import { PrStep1Component } from './measure/create-measure/pr/step1/step1.component';
-import { PrStep2Component } from './measure/create-measure/pr/step2/step2.component';
-import { PrStep3Component } from './measure/create-measure/pr/step3/step3.component';
-import { PrStep4Component } from './measure/create-measure/pr/step4/step4.component';
-import { PrConfirmModal } from './measure/create-measure/pr/confirmModal/confirmModal.component';
-import { PubComponent } from './measure/create-measure/pub/pub.component';
-import { LoginComponent } from './login/login.component';
-import { AngularMultiSelectModule } from 'angular2-multiselect-dropdown/angular2-multiselect-dropdown';
-import { RuleComponent } from './measure/create-measure/pr/rule/rule.component';
-import { TruncatePipe} from './sidebar/truncate.pipe';
-import { ConfigurationComponent } from './measure/create-measure/configuration/configuration.component';
-import { NouisliderModule } from 'ng2-nouislider';
-import { HttpService } from './service/http.service';
-import { LoaderService } from './loader/loader.service';
-import { LoaderComponent } from './loader/loader.component';
-import { JobDetailComponent } from './job/job-detail/job-detail.component';
-import { StreamingComponent } from './job/create-job/streaming/streaming.component';
+import {BrowserModule} from '@angular/platform-browser';
+import {NgModule} from '@angular/core';
+import {RouterModule, Routes} from '@angular/router';
+import {HttpClientModule, HTTP_INTERCEPTORS} from '@angular/common/http';
+import {DataTableModule} from "angular2-datatable";
+import {TreeModule} from 'angular-tree-component';
+import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
+import {NgxEchartsModule} from 'ngx-echarts';
+import {MatDatepickerModule, MatNativeDateModule} from '@angular/material';
+import {Location, LocationStrategy, HashLocationStrategy} from '@angular/common';
+import {ToasterModule, ToasterService} from 'angular2-toaster';
+import {FormsModule} from '@angular/forms';
+import {AppComponent} from './app.component';
+import {MeasureComponent} from './measure/measure.component';
+import {JobComponent} from './job/job.component';
+import {SidebarComponent} from './sidebar/sidebar.component';
+import {HealthComponent} from './health/health.component';
+import {MydashboardComponent} from './mydashboard/mydashboard.component';
+import {CreateMeasureComponent} from './measure/create-measure/create-measure.component';
+import {MeasureDetailComponent} from './measure/measure-detail/measure-detail.component';
+import {MetricComponent} from './metric/metric.component';
+import {DetailMetricComponent} from './metric/detail-metric/detail-metric.component';
+import {DataassetComponent} from './dataasset/dataasset.component';
+import {BatchComponent} from './job/create-job/batch/batch.component';
+import {AcComponent} from './measure/create-measure/ac/ac.component';
+import {PrComponent} from './measure/create-measure/pr/pr.component';
+import {PrStep1Component} from './measure/create-measure/pr/step1/step1.component';
+import {PrStep2Component} from './measure/create-measure/pr/step2/step2.component';
+import {PrStep3Component} from './measure/create-measure/pr/step3/step3.component';
+import {PrStep4Component} from './measure/create-measure/pr/step4/step4.component';
+import {PrConfirmModal} from './measure/create-measure/pr/confirmModal/confirmModal.component';
+import {PubComponent} from './measure/create-measure/pub/pub.component';
+import {LoginComponent} from './login/login.component';
+import {AngularMultiSelectModule} from 'angular2-multiselect-dropdown/angular2-multiselect-dropdown';
+import {RuleComponent} from './measure/create-measure/pr/rule/rule.component';
+import {TruncatePipe} from './sidebar/truncate.pipe';
+import {ConfigurationComponent} from './measure/create-measure/configuration/configuration.component';
+import {NouisliderModule} from 'ng2-nouislider';
+import {HttpService} from './service/http.service';
+import {LoaderService} from './loader/loader.service';
+import {LoaderComponent} from './loader/loader.component';
+import {JobDetailComponent} from './job/job-detail/job-detail.component';
+import {StreamingComponent} from './job/create-job/streaming/streaming.component';
 
 
 const appRoutes: Routes = [
@@ -98,31 +98,31 @@ const appRoutes: Routes = [
   },
   {
     path: 'createmeasure',
-    component:CreateMeasureComponent
+    component: CreateMeasureComponent
   },
   {
     path: 'createmeasureac',
-    component:AcComponent
+    component: AcComponent
   },
-    {
+  {
     path: 'createmeasurepr',
-    component:PrComponent
+    component: PrComponent
   },
   {
     path: 'createmeasurepub',
-    component:PubComponent
+    component: PubComponent
   },
   {
     path: 'detailed/:name',
-    component:DetailMetricComponent
+    component: DetailMetricComponent
   },
   {
     path: 'dataassets',
-    component:DataassetComponent
+    component: DataassetComponent
   },
   {
     path: 'metrics',
-    component:MetricComponent
+    component: MetricComponent
   },
   {
     path: '',
@@ -131,7 +131,7 @@ const appRoutes: Routes = [
   },
   {
     path: 'login',
-    component:LoginComponent
+    component: LoginComponent
   },
   // {
   //    path: '**',
@@ -190,13 +190,14 @@ const appRoutes: Routes = [
   ],
   exports: [
     LoaderComponent
-],
-  providers: [ LoaderService,
+  ],
+  providers: [LoaderService,
     {
-    provide: HTTP_INTERCEPTORS,
-    useClass: HttpService,
-    multi: true,
-  }],
+      provide: HTTP_INTERCEPTORS,
+      useClass: HttpService,
+      multi: true,
+    }],
   bootstrap: [AppComponent]
 })
-export class AppModule { }
+export class AppModule {
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/dataasset/dataasset.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/dataasset/dataasset.component.css b/ui/angular/src/app/dataasset/dataasset.component.css
index 694641e..765f436 100644
--- a/ui/angular/src/app/dataasset/dataasset.component.css
+++ b/ui/angular/src/app/dataasset/dataasset.component.css
@@ -22,15 +22,19 @@ under the License.
   left: 50%;
   top: 20%;
 }
+
 .co {
   border-collapse: separate;
 }
+
 .co > tbody > tr:nth-of-type(even) {
   background-color: #1f1f1f;
 }
+
 .co > tbody > tr:nth-of-type(odd) {
   background-color: #080808;
 }
+
 .table-striped > tbody > tr {
   background-color: #1f1f1f;
   border: 1px solid transparent;
@@ -42,4 +46,4 @@ under the License.
 
 .reco > tbody:nth-of-type(even) > tr {
   background-color: #080808;
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/dataasset/dataasset.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/dataasset/dataasset.component.html b/ui/angular/src/app/dataasset/dataasset.component.html
index c209537..aeae55e 100644
--- a/ui/angular/src/app/dataasset/dataasset.component.html
+++ b/ui/angular/src/app/dataasset/dataasset.component.html
@@ -30,72 +30,72 @@ under the License.
     </table>
     <table class="table table-striped reco" [mfData]="results" #mf="mfDataTable" [mfRowsOnPage]="5">
       <thead>
-        <tr style="background-color:#7D95CC">
-          <th st-ratio="10">Table Name</th>
-          <th st-ratio="10">DB Name</th>
-          <th st-ratio="20">Owner</th>
-          <th st-ratio="10">Creation Time</th>
-          <th st-ratio="20">Location</th>
-        </tr>
+      <tr style="background-color:#7D95CC">
+        <th st-ratio="10">Table Name</th>
+        <th st-ratio="10">DB Name</th>
+        <th st-ratio="20">Owner</th>
+        <th st-ratio="10">Creation Time</th>
+        <th st-ratio="20">Location</th>
+      </tr>
       </thead>
       <tbody>
-        <tr *ngIf="!results">
-          <td *ngIf="!results" colspan="7" style="text-align:center">
-            No content.
-          </td>
-          <!-- <td class="icon">
-            <span class="fa fa-spinner fa-spin fa-3x fa-fw"></span>
-          </td> -->
-        </tr>
+      <tr *ngIf="!results">
+        <td *ngIf="!results" colspan="7" style="text-align:center">
+          No content.
+        </td>
+        <!-- <td class="icon">
+          <span class="fa fa-spinner fa-spin fa-3x fa-fw"></span>
+        </td> -->
+      </tr>
       </tbody>
       <tbody *ngFor="let row of mf.data" style="word-break:break-all;">
-        <tr>
-          <td [ngClass]="{accordion:true}" (click)="row.showDetail=!(row.showDetail)" style="cursor: pointer;">
-            <i *ngIf="!row.showDetail" class="fa fa-chevron-circle-right blue"></i>
-            <i *ngIf="row.showDetail" class="fa fa-chevron-circle-down blue"></i> {{row.tableName}}
-          </td>
-          <td>{{row.dbName || 'N/A'}}</td>
-          <td>{{row.owner || 'N/A'}}</td>
-          <td>{{(row.createTime * 1000 | date: 'short') || 'N/A'}}</td>
-          <td>{{row.sd.location || 'N/A'}}</td>
-        </tr>
-        <tr *ngIf="row.showDetail">
-          <td colspan="7" style="padding:20px 30px 10px 30px;">
-            <table class="table table-striped co" [mfData]="row.sd.cols" #mf2="mfDataTable">
-              <thead>
-                <tr style="background-color:#7D95CC">
-                  <th st-ratio="15">Name</th>
-                  <th st-ratio="15">Type</th>
-                  <th st-ratio="15">Comment</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr *ngIf="!row.sd.cols">
-                  <td colspan="7" style="text-align:center">No content.</td>
-                </tr>
-                <tr *ngFor="let item of mf2.data">
-                  <td>{{item.name}}</td>
-                  <td>{{item.type}}</td>
-                  <td>{{item.comment || 'N/A'}}</td>
-                </tr>
-              </tbody>
-              <!-- <tfoot>
-	                      <tr>
-	                        <td colspan="8" class="text-right">
-	                           <mfBootstrapPaginator></mfBootstrapPaginator>
-	                        </td>
-	                      </tr>
-	                    </tfoot> -->
-            </table>
-          </td>
-        </tr>
+      <tr>
+        <td [ngClass]="{accordion:true}" (click)="row.showDetail=!(row.showDetail)" style="cursor: pointer;">
+          <i *ngIf="!row.showDetail" class="fa fa-chevron-circle-right blue"></i>
+          <i *ngIf="row.showDetail" class="fa fa-chevron-circle-down blue"></i> {{row.tableName}}
+        </td>
+        <td>{{row.dbName || 'N/A'}}</td>
+        <td>{{row.owner || 'N/A'}}</td>
+        <td>{{(row.createTime * 1000 | date: 'short') || 'N/A'}}</td>
+        <td>{{row.sd.location || 'N/A'}}</td>
+      </tr>
+      <tr *ngIf="row.showDetail">
+        <td colspan="7" style="padding:20px 30px 10px 30px;">
+          <table class="table table-striped co" [mfData]="row.sd.cols" #mf2="mfDataTable">
+            <thead>
+            <tr style="background-color:#7D95CC">
+              <th st-ratio="15">Name</th>
+              <th st-ratio="15">Type</th>
+              <th st-ratio="15">Comment</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr *ngIf="!row.sd.cols">
+              <td colspan="7" style="text-align:center">No content.</td>
+            </tr>
+            <tr *ngFor="let item of mf2.data">
+              <td>{{item.name}}</td>
+              <td>{{item.type}}</td>
+              <td>{{item.comment || 'N/A'}}</td>
+            </tr>
+            </tbody>
+            <!-- <tfoot>
+                        <tr>
+                          <td colspan="8" class="text-right">
+                             <mfBootstrapPaginator></mfBootstrapPaginator>
+                          </td>
+                        </tr>
+                      </tfoot> -->
+          </table>
+        </td>
+      </tr>
       </tbody>
       <tfoot>
-        <tr>
-          <td colspan="8" class="text-right">
-            <mfBootstrapPaginator></mfBootstrapPaginator>
-          </td>
-        </tr>
+      <tr>
+        <td colspan="8" class="text-right">
+          <mfBootstrapPaginator></mfBootstrapPaginator>
+        </td>
+      </tr>
       </tfoot>
     </table>
   </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/dataasset/dataasset.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/dataasset/dataasset.component.spec.ts b/ui/angular/src/app/dataasset/dataasset.component.spec.ts
index 65c9b57..b8d24fa 100644
--- a/ui/angular/src/app/dataasset/dataasset.component.spec.ts
+++ b/ui/angular/src/app/dataasset/dataasset.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { DataassetComponent } from './dataasset.component';
+import {DataassetComponent} from './dataasset.component';
 
 describe('DataassetComponent', () => {
   let component: DataassetComponent;
@@ -26,9 +26,9 @@ describe('DataassetComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ DataassetComponent ]
+      declarations: [DataassetComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/dataasset/dataasset.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/dataasset/dataasset.component.ts b/ui/angular/src/app/dataasset/dataasset.component.ts
index ee3384a..c477fe6 100644
--- a/ui/angular/src/app/dataasset/dataasset.component.ts
+++ b/ui/angular/src/app/dataasset/dataasset.component.ts
@@ -16,24 +16,24 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from '@angular/core';
-import { HttpClient } from "@angular/common/http";
+import {Component, OnInit} from '@angular/core';
+import {HttpClient} from "@angular/common/http";
 import * as $ from 'jquery';
 import {ServiceService} from '../service/service.service';
 
 @Component({
   selector: 'app-dataasset',
   templateUrl: './dataasset.component.html',
-  providers:[ServiceService],
+  providers: [ServiceService],
   styleUrls: ['./dataasset.component.css']
 })
 export class DataassetComponent implements OnInit {
   public results = [];
   public visible = false;
   public visibleAnimate = false;
-  sourceTable :string;
-  targetTable :string;
-  data:object;
+  sourceTable: string;
+  targetTable: string;
+  data: object;
 
   public hide(): void {
     this.visibleAnimate = false;
@@ -45,20 +45,22 @@ export class DataassetComponent implements OnInit {
       this.hide();
     }
   }
-  constructor(private http:HttpClient,public serviceService:ServiceService) { }
+
+  constructor(private http: HttpClient, public serviceService: ServiceService) {
+  }
 
   ngOnInit() {
     var allDataassets = this.serviceService.config.uri.dataassetlist;
-    this.http.get(allDataassets).subscribe(data =>{
+    this.http.get(allDataassets).subscribe(data => {
       for (let db in data) {
-        for(let table of data[db]){           
+        for (let table of data[db]) {
           table.location = table.sd.location;
           this.results.push(table);
-        }       
+        }
       }
       $('.icon').hide();
-    },err =>{
-      
+    }, err => {
+
     });
   };
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/health/health.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/health/health.component.html b/ui/angular/src/app/health/health.component.html
index d512b40..4ed47c9 100644
--- a/ui/angular/src/app/health/health.component.html
+++ b/ui/angular/src/app/health/health.component.html
@@ -18,6 +18,7 @@ under the License.
 -->
 <div class="tab-content" style='margin-top: '>
   <div class="tab-pane fade active in" id="heatmap">
-    <div echarts [options]="chartOption" class="demo-chart" id="chart1" (chartClick)="onChartClick($event)" style="margin-top: 50px;"></div>
+    <div echarts [options]="chartOption" class="demo-chart" id="chart1" (chartClick)="onChartClick($event)"
+         style="margin-top: 50px;"></div>
   </div>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/health/health.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/health/health.component.spec.ts b/ui/angular/src/app/health/health.component.spec.ts
index d50be5a..40c5198 100644
--- a/ui/angular/src/app/health/health.component.spec.ts
+++ b/ui/angular/src/app/health/health.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { HealthComponent } from './health.component';
+import {HealthComponent} from './health.component';
 
 describe('HealthComponent', () => {
   let component: HealthComponent;
@@ -26,9 +26,9 @@ describe('HealthComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ HealthComponent ]
+      declarations: [HealthComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/health/health.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/health/health.component.ts b/ui/angular/src/app/health/health.component.ts
index ead969c..1b7f2f2 100644
--- a/ui/angular/src/app/health/health.component.ts
+++ b/ui/angular/src/app/health/health.component.ts
@@ -16,10 +16,10 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { HttpClient } from "@angular/common/http";
-import { Router } from "@angular/router";
-import { ServiceService } from "../service/service.service";
+import {Component, OnInit} from "@angular/core";
+import {HttpClient} from "@angular/common/http";
+import {Router} from "@angular/router";
+import {ServiceService} from "../service/service.service";
 import * as $ from "jquery";
 
 @Component({
@@ -29,10 +29,12 @@ import * as $ from "jquery";
 })
 export class HealthComponent implements OnInit {
   constructor(
-    private http:HttpClient,
+    private http: HttpClient,
     private router: Router,
     public serviceService: ServiceService
-  ) {}
+  ) {
+  }
+
   chartOption: object;
   finalData = [];
   mesWithJob: any;
@@ -86,7 +88,9 @@ export class HealthComponent implements OnInit {
           metricId++;
         }
       }
-      item.children = item.children.sort(function(a,b) {return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);} );
+      item.children = item.children.sort(function (a, b) {
+        return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);
+      });
       result.push(item);
       sysId++;
     }
@@ -127,20 +131,20 @@ export class HealthComponent implements OnInit {
       },
       backgroundColor: "transparent",
       tooltip: {
-        formatter: function(info) {
+        formatter: function (info) {
           var dqFormat = info.data.dq > 100 ? "" : "%";
           if (info.data.dq)
             return [
               '<span style="font-size:1.8em;">' +
-                info.data.sysName +
-                " &gt; </span>",
+              info.data.sysName +
+              " &gt; </span>",
               '<span style="font-size:1.5em;">' +
-                info.data.name +
-                "</span><br>",
+              info.data.name +
+              "</span><br>",
               '<span style="font-size:1.5em;">dq : ' +
-                info.data.dq.toFixed(2) +
-                dqFormat +
-                "</span>"
+              info.data.dq.toFixed(2) +
+              dqFormat +
+              "</span>"
             ].join("");
         }
       },
@@ -169,7 +173,7 @@ export class HealthComponent implements OnInit {
     this.chartOption = option;
   }
 
-  checkvalue(job){
+  checkvalue(job) {
     return job.metricValues.length === 0;
   }
 
@@ -177,9 +181,9 @@ export class HealthComponent implements OnInit {
     let url_dashboard = this.serviceService.config.uri.dashboard;
     this.http.get(url_dashboard).subscribe(data => {
       this.mesWithJob = JSON.parse(JSON.stringify(data));
-      for(let i=0;i<this.mesWithJob.length;i++) {
-        if(this.mesWithJob[i].some(this.checkvalue)){
-          this.mesWithJob[i].splice(i,1);
+      for (let i = 0; i < this.mesWithJob.length; i++) {
+        if (this.mesWithJob[i].some(this.checkvalue)) {
+          this.mesWithJob[i].splice(i, 1);
         }
       }
       for (let mesName in this.mesWithJob) {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/create-job/batch/batch.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/create-job/batch/batch.component.css b/ui/angular/src/app/job/create-job/batch/batch.component.css
index 6288f12..e8e4108 100644
--- a/ui/angular/src/app/job/create-job/batch/batch.component.css
+++ b/ui/angular/src/app/job/create-job/batch/batch.component.css
@@ -17,74 +17,80 @@ specific language governing permissions and limitations
 under the License.
 */
 .job {
-    font-size: 20px;
+  font-size: 20px;
 }
 
 .info {
-    color: #b2c831;
+  color: #b2c831;
 }
 
 .btn-o {
-    background: 0 0 !important;
+  background: 0 0 !important;
 }
 
 legend {
-    background-color: #000;
-    color: #007aff;
-    left: 10px;
-    padding: 0 10px;
-    position: absolute;
-    top: -12px;
-    font-weight: 400;
-    color: #fff;
-    margin-bottom: 20px;
-    font-size: 21px;
-    width: auto !important;
-    border: none !important;
+  background-color: #000;
+  color: #007aff;
+  left: 10px;
+  padding: 0 10px;
+  position: absolute;
+  top: -12px;
+  font-weight: 400;
+  color: #fff;
+  margin-bottom: 20px;
+  font-size: 21px;
+  width: auto !important;
+  border: none !important;
 }
+
 fieldset {
-    border: 1px solid #e6e8e8;
-    border-radius: 5px;
-    margin: 20px 0;
-    padding: 25px;
-    position: relative;
-    min-width: 0;
-    display: block;
-    height: 320px;
+  border: 1px solid #e6e8e8;
+  border-radius: 5px;
+  margin: 20px 0;
+  padding: 25px;
+  position: relative;
+  min-width: 0;
+  display: block;
+  height: 320px;
 }
 
 .formStep {
-    background-color: #000;
+  background-color: #000;
 }
+
 .setcolor {
-    color: #b2c831;
+  color: #b2c831;
 }
+
 .setgrey {
-    color: #888888;
+  color: #888888;
 }
+
 .mat-calendar-table {
-    height: 400px;
+  height: 400px;
 }
+
 .mat-datepicker-content {
-    overflow-y: auto;
+  overflow-y: auto;
 }
 
 #md-datepicker-0 {
-    height: 250px;
+  height: 250px;
 }
 
 .center {
-    margin-left: 5%;
+  margin-left: 5%;
 }
 
 .range {
-    display: block;
-    width: 20%;
-    height: 10%;
-    margin-bottom: 5px;
+  display: block;
+  width: 20%;
+  height: 10%;
+  margin-bottom: 5px;
 }
+
 .setborder {
-    border: 2px solid;
-    border-radius: 5px;
-    width: 8%;
-}
\ No newline at end of file
+  border: 2px solid;
+  border-radius: 5px;
+  width: 8%;
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/create-job/batch/batch.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/create-job/batch/batch.component.html b/ui/angular/src/app/job/create-job/batch/batch.component.html
index 86b82e3..0922eff 100644
--- a/ui/angular/src/app/job/create-job/batch/batch.component.html
+++ b/ui/angular/src/app/job/create-job/batch/batch.component.html
@@ -36,12 +36,14 @@ under the License.
               </legend>
               <div class="y-scrollable">
                 <div class="col-md-12 col-lg-12 col-sm-12">
-                  <div class="form-group" [ngClass]="{'has-error':jobName.dirty&&jobName.invalid, 'has-success':jobName.valid}">
+                  <div class="form-group"
+                       [ngClass]="{'has-error':jobName.dirty&&jobName.invalid, 'has-success':jobName.valid}">
                     <label class="col-md-2 col-lg-2 col-sm-2 control-label">
                       Job Name<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <input type="text" class="form-control" [(ngModel)]="jobname" name="jobName" #jobName="ngModel" placeholder="Please input the job name" required pattern="^[a-zA-Z0-9_-]*$" id="jobName">
+                      <input type="text" class="form-control" [(ngModel)]="jobname" name="jobName" #jobName="ngModel"
+                             placeholder="Please input the job name" required pattern="^[a-zA-Z0-9_-]*$" id="jobName">
                       <span class="error text-small block " *ngIf="jobName.dirty && (jobName.errors?.required)">
                         Job Name is required</span>
                       <span class="error text-small block " *ngIf="jobName.dirty && (jobName.errors?.pattern)">Only letter, number, "-" and "_" are allowed</span>
@@ -54,7 +56,8 @@ under the License.
                       Measure Name<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <select id="measureSelector" class="form-control" ngControl="name" required name="measure.name" [(ngModel)]="measure" (ngModelChange)="onChange($event)">
+                      <select id="measureSelector" class="form-control" ngControl="name" required name="measure.name"
+                              [(ngModel)]="measure" (ngModelChange)="onChange($event)">
                         <option *ngFor="let row of Measures" value="{{row.name}}">{{row.name}}</option>
                       </select>
                     </div>
@@ -77,14 +80,21 @@ under the License.
                     </label>
                   </div>
                   <p style="margin-left:60px" class="setcolor">
-                    <i class="fa fa-info-circle"></i> One step means a partition size,and {{connector.name}} partition size = {{connector.size}}
+                    <i class="fa fa-info-circle"></i> One step means a partition size,and {{connector.name}} partition
+                    size = {{connector.size}}
                   </p>
                   <div class="col-md-11 col-lg-11 col-sm-11 center">
                     begin :
-                    <input type="number" class="setborder" value="{{ someKeyboard[i][0] }}" [(ngModel)]="someKeyboard[i][0]" max="0" name="begin{{i}}" (ngModelChange)="changeRange(index,someKeyboard[i][0],i)"> end :
-                    <input type="number" class="setborder" max="0" value="{{ someKeyboard[i][1] }}" [(ngModel)]="someKeyboard[i][1]" name="end{{i}}" (ngModelChange)="changeRange(1,$event,i)">
+                    <input type="number" class="setborder" value="{{ someKeyboard[i][0] }}"
+                           [(ngModel)]="someKeyboard[i][0]" max="0" name="begin{{i}}"
+                           (ngModelChange)="changeRange(index,someKeyboard[i][0],i)"> end :
+                    <input type="number" class="setborder" max="0" value="{{ someKeyboard[i][1] }}"
+                           [(ngModel)]="someKeyboard[i][1]" name="end{{i}}" (ngModelChange)="changeRange(1,$event,i)">
                   </div>
-                  <nouislider class="col-md-11 col-lg-11 col-sm-11 center" id="slider{{i}}" #sliderRef name="slider{{i}}" [config]="someKeyboardConfig[i]" [(ngModel)]="someKeyboard[i]" (ngModelChange)="rangeChange($event,i)" (keyup)="blinkKeyupLabel()" (keydown)="blinkKeydownLabel()" style="margin-bottom: 5rem"></nouislider>
+                  <nouislider class="col-md-11 col-lg-11 col-sm-11 center" id="slider{{i}}" #sliderRef
+                              name="slider{{i}}" [config]="someKeyboardConfig[i]" [(ngModel)]="someKeyboard[i]"
+                              (ngModelChange)="rangeChange($event,i)" (keyup)="blinkKeyupLabel()"
+                              (keydown)="blinkKeydownLabel()" style="margin-bottom: 5rem"></nouislider>
                 </div>
               </div>
               <div class="setcolor">
@@ -106,11 +116,14 @@ under the License.
           </div>
         </div>
       </div>
-      <div class="modal fade" id="confirm-job" role="dialog" [ngClass]="{'in': visibleAnimate}" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}" (click)="onContainerClicked($event)">
+      <div class="modal fade" id="confirm-job" role="dialog" [ngClass]="{'in': visibleAnimate}"
+           [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}"
+           (click)="onContainerClicked($event)">
         <div class="modal-dialog modal-xg modal-lg">
           <div class="modal-content">
             <div class="modal-header">
-              <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="hide()">&times;</button>
+              <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="hide()">&times;
+              </button>
               <h4 class="modal-title">Save the job with the below information?</h4>
             </div>
             <div class="modal-body">

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/create-job/batch/batch.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/create-job/batch/batch.component.spec.ts b/ui/angular/src/app/job/create-job/batch/batch.component.spec.ts
index 25b1479..e166b78 100644
--- a/ui/angular/src/app/job/create-job/batch/batch.component.spec.ts
+++ b/ui/angular/src/app/job/create-job/batch/batch.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { BatchComponent } from './batch.component';
+import {BatchComponent} from './batch.component';
 
 describe('BatchComponent', () => {
   let component: BatchComponent;
@@ -26,9 +26,9 @@ describe('BatchComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ BatchComponent ]
+      declarations: [BatchComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/create-job/batch/batch.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/create-job/batch/batch.component.ts b/ui/angular/src/app/job/create-job/batch/batch.component.ts
index 7c2d9f6..1e2a4b2 100644
--- a/ui/angular/src/app/job/create-job/batch/batch.component.ts
+++ b/ui/angular/src/app/job/create-job/batch/batch.component.ts
@@ -16,22 +16,22 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit, AfterViewChecked, ViewChildren } from "@angular/core";
-import { FormControl } from "@angular/forms";
-import { FormsModule } from "@angular/forms";
-import { MaxLengthValidator } from "@angular/forms";
-import { NgControlStatus, Validators } from "@angular/forms";
-import { PatternValidator } from "@angular/forms";
-import { MatDatepickerModule } from "@angular/material";
-import { ServiceService } from "../../../service/service.service";
-import { AngularMultiSelectModule } from "angular2-multiselect-dropdown/angular2-multiselect-dropdown";
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { ToasterModule, ToasterService, ToasterConfig } from "angular2-toaster";
+import {Component, OnInit, AfterViewChecked, ViewChildren} from "@angular/core";
+import {FormControl} from "@angular/forms";
+import {FormsModule} from "@angular/forms";
+import {MaxLengthValidator} from "@angular/forms";
+import {NgControlStatus, Validators} from "@angular/forms";
+import {PatternValidator} from "@angular/forms";
+import {MatDatepickerModule} from "@angular/material";
+import {ServiceService} from "../../../service/service.service";
+import {AngularMultiSelectModule} from "angular2-multiselect-dropdown/angular2-multiselect-dropdown";
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {ToasterModule, ToasterService, ToasterConfig} from "angular2-toaster";
 import * as $ from "jquery";
-import { HttpParams } from "@angular/common/http";
-import { Router } from "@angular/router";
-import { NouisliderModule } from "ng2-nouislider";
-import { HttpClient } from "@angular/common/http";
+import {HttpParams} from "@angular/common/http";
+import {Router} from "@angular/router";
+import {NouisliderModule} from "ng2-nouislider";
+import {HttpClient} from "@angular/common/http";
 
 @Component({
   selector: "app-batch",
@@ -71,7 +71,7 @@ export class BatchComponent implements OnInit, AfterViewChecked {
     "cron.expression": "",
     "measure.id": "",
     "job.name": "",
-    "job.type":"batch",
+    "job.type": "batch",
     "cron.time.zone": "",
     // "cron.time.zone": "GMT+8:00",
     // "predicate.config": {
@@ -138,7 +138,7 @@ export class BatchComponent implements OnInit, AfterViewChecked {
     let timezone = "GMT" + time + ":00";
     this.newJob = {
       "job.name": this.jobname,
-      "job.type":"batch",
+      "job.type": "batch",
       "measure.id": this.measureid,
       "cron.expression": this.cronExp,
       "cron.time.zone": timezone,
@@ -199,7 +199,7 @@ export class BatchComponent implements OnInit, AfterViewChecked {
       },
       err => {
         let response = JSON.parse(err.error);
-        if(response.code === '40004'){
+        if (response.code === '40004') {
           this.toasterService.pop("error", "Error!", "Job name already exists!");
         } else {
           this.toasterService.pop("error", "Error!", "Error when creating job");
@@ -217,15 +217,15 @@ export class BatchComponent implements OnInit, AfterViewChecked {
     var stepSelection = ".formStep";
     $(stepSelection).css({
       height:
-        window.innerHeight -
-        $(stepSelection).offset().top -
-        $("#footerwrap").outerHeight()
+      window.innerHeight -
+      $(stepSelection).offset().top -
+      $("#footerwrap").outerHeight()
     });
     $("fieldset").height(
       $(stepSelection).height() -
-        $(stepSelection + ">.stepDesc").height() -
-        $(".btn-container").height() -
-        200
+      $(stepSelection + ">.stepDesc").height() -
+      $(".btn-container").height() -
+      200
     );
     $(".y-scrollable").css({
       height: $("fieldset").height()
@@ -365,8 +365,8 @@ export class BatchComponent implements OnInit, AfterViewChecked {
     var allModels = this.serviceService.config.uri.allModels + '?type=griffin';
     this.http.get(allModels).subscribe(data => {
       let originData = data;
-      for(let i in originData){
-        if(originData[i]["process.type"] === "BATCH"){
+      for (let i in originData) {
+        if (originData[i]["process.type"] === "BATCH") {
           this.Measures.push(originData[i]);
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/create-job/streaming/streaming.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/create-job/streaming/streaming.component.css b/ui/angular/src/app/job/create-job/streaming/streaming.component.css
index 6288f12..e8e4108 100644
--- a/ui/angular/src/app/job/create-job/streaming/streaming.component.css
+++ b/ui/angular/src/app/job/create-job/streaming/streaming.component.css
@@ -17,74 +17,80 @@ specific language governing permissions and limitations
 under the License.
 */
 .job {
-    font-size: 20px;
+  font-size: 20px;
 }
 
 .info {
-    color: #b2c831;
+  color: #b2c831;
 }
 
 .btn-o {
-    background: 0 0 !important;
+  background: 0 0 !important;
 }
 
 legend {
-    background-color: #000;
-    color: #007aff;
-    left: 10px;
-    padding: 0 10px;
-    position: absolute;
-    top: -12px;
-    font-weight: 400;
-    color: #fff;
-    margin-bottom: 20px;
-    font-size: 21px;
-    width: auto !important;
-    border: none !important;
+  background-color: #000;
+  color: #007aff;
+  left: 10px;
+  padding: 0 10px;
+  position: absolute;
+  top: -12px;
+  font-weight: 400;
+  color: #fff;
+  margin-bottom: 20px;
+  font-size: 21px;
+  width: auto !important;
+  border: none !important;
 }
+
 fieldset {
-    border: 1px solid #e6e8e8;
-    border-radius: 5px;
-    margin: 20px 0;
-    padding: 25px;
-    position: relative;
-    min-width: 0;
-    display: block;
-    height: 320px;
+  border: 1px solid #e6e8e8;
+  border-radius: 5px;
+  margin: 20px 0;
+  padding: 25px;
+  position: relative;
+  min-width: 0;
+  display: block;
+  height: 320px;
 }
 
 .formStep {
-    background-color: #000;
+  background-color: #000;
 }
+
 .setcolor {
-    color: #b2c831;
+  color: #b2c831;
 }
+
 .setgrey {
-    color: #888888;
+  color: #888888;
 }
+
 .mat-calendar-table {
-    height: 400px;
+  height: 400px;
 }
+
 .mat-datepicker-content {
-    overflow-y: auto;
+  overflow-y: auto;
 }
 
 #md-datepicker-0 {
-    height: 250px;
+  height: 250px;
 }
 
 .center {
-    margin-left: 5%;
+  margin-left: 5%;
 }
 
 .range {
-    display: block;
-    width: 20%;
-    height: 10%;
-    margin-bottom: 5px;
+  display: block;
+  width: 20%;
+  height: 10%;
+  margin-bottom: 5px;
 }
+
 .setborder {
-    border: 2px solid;
-    border-radius: 5px;
-    width: 8%;
-}
\ No newline at end of file
+  border: 2px solid;
+  border-radius: 5px;
+  width: 8%;
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/create-job/streaming/streaming.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/create-job/streaming/streaming.component.html b/ui/angular/src/app/job/create-job/streaming/streaming.component.html
index db85aa5..784b415 100644
--- a/ui/angular/src/app/job/create-job/streaming/streaming.component.html
+++ b/ui/angular/src/app/job/create-job/streaming/streaming.component.html
@@ -36,12 +36,14 @@ under the License.
               </legend>
               <div class="y-scrollable">
                 <div class="col-md-12 col-lg-12 col-sm-12">
-                  <div class="form-group" [ngClass]="{'has-error':jobName.dirty&&jobName.invalid, 'has-success':jobName.valid}">
+                  <div class="form-group"
+                       [ngClass]="{'has-error':jobName.dirty&&jobName.invalid, 'has-success':jobName.valid}">
                     <label class="col-md-2 col-lg-2 col-sm-2 control-label">
                       Job Name<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <input type="text" class="form-control" [(ngModel)]="jobname" name="jobName" #jobName="ngModel" placeholder="Please input the job name" required pattern="^[a-zA-Z0-9_-]*$" id="jobName">
+                      <input type="text" class="form-control" [(ngModel)]="jobname" name="jobName" #jobName="ngModel"
+                             placeholder="Please input the job name" required pattern="^[a-zA-Z0-9_-]*$" id="jobName">
                       <span class="error text-small block " *ngIf="jobName.dirty && (jobName.errors?.required)">
                         Job Name is required</span>
                       <span class="error text-small block " *ngIf="jobName.dirty && (jobName.errors?.pattern)">Only letter, number, "-" and "_" are allowed</span>
@@ -54,7 +56,8 @@ under the License.
                       Measure Name<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <select id="measureSelector" class="form-control" ngControl="name" required name="measure.name" [(ngModel)]="measure" (ngModelChange)="onChange($event)">
+                      <select id="measureSelector" class="form-control" ngControl="name" required name="measure.name"
+                              [(ngModel)]="measure" (ngModelChange)="onChange($event)">
                         <option *ngFor="let row of Measures" value="{{row.name}}">{{row.name}}</option>
                       </select>
                     </div>
@@ -80,11 +83,14 @@ under the License.
           </div>
         </div>
       </div>
-      <div class="modal fade" id="confirm-job" role="dialog" [ngClass]="{'in': visibleAnimate}" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}" (click)="onContainerClicked($event)">
+      <div class="modal fade" id="confirm-job" role="dialog" [ngClass]="{'in': visibleAnimate}"
+           [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}"
+           (click)="onContainerClicked($event)">
         <div class="modal-dialog modal-xg modal-lg">
           <div class="modal-content">
             <div class="modal-header">
-              <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="hide()">&times;</button>
+              <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="hide()">&times;
+              </button>
               <h4 class="modal-title">Save the job with the below information?</h4>
             </div>
             <div class="modal-body">

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/create-job/streaming/streaming.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/create-job/streaming/streaming.component.spec.ts b/ui/angular/src/app/job/create-job/streaming/streaming.component.spec.ts
index 58bc51f..69b3cf0 100644
--- a/ui/angular/src/app/job/create-job/streaming/streaming.component.spec.ts
+++ b/ui/angular/src/app/job/create-job/streaming/streaming.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { StreamingComponent } from './streaming.component';
+import {StreamingComponent} from './streaming.component';
 
 describe('StreamingComponent', () => {
   let component: StreamingComponent;
@@ -26,9 +26,9 @@ describe('StreamingComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ StreamingComponent ]
+      declarations: [StreamingComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/create-job/streaming/streaming.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/create-job/streaming/streaming.component.ts b/ui/angular/src/app/job/create-job/streaming/streaming.component.ts
index fa6c531..94a400e 100644
--- a/ui/angular/src/app/job/create-job/streaming/streaming.component.ts
+++ b/ui/angular/src/app/job/create-job/streaming/streaming.component.ts
@@ -16,20 +16,20 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit, AfterViewChecked, ViewChildren } from "@angular/core";
-import { FormControl } from "@angular/forms";
-import { FormsModule } from "@angular/forms";
-import { MaxLengthValidator } from "@angular/forms";
-import { NgControlStatus, Validators } from "@angular/forms";
-import { PatternValidator } from "@angular/forms";
-import { MatDatepickerModule } from "@angular/material";
-import { ServiceService } from "../../../service/service.service";
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { ToasterModule, ToasterService, ToasterConfig } from "angular2-toaster";
+import {Component, OnInit, AfterViewChecked, ViewChildren} from "@angular/core";
+import {FormControl} from "@angular/forms";
+import {FormsModule} from "@angular/forms";
+import {MaxLengthValidator} from "@angular/forms";
+import {NgControlStatus, Validators} from "@angular/forms";
+import {PatternValidator} from "@angular/forms";
+import {MatDatepickerModule} from "@angular/material";
+import {ServiceService} from "../../../service/service.service";
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {ToasterModule, ToasterService, ToasterConfig} from "angular2-toaster";
 import * as $ from "jquery";
-import { HttpParams } from "@angular/common/http";
-import { Router } from "@angular/router";
-import { HttpClient } from "@angular/common/http";
+import {HttpParams} from "@angular/common/http";
+import {Router} from "@angular/router";
+import {HttpClient} from "@angular/common/http";
 
 @Component({
   selector: 'app-streaming',
@@ -67,7 +67,7 @@ export class StreamingComponent implements OnInit {
 
   newJob = {
     "cron.expression": "",
-    "job.type":"streaming",
+    "job.type": "streaming",
     "measure.id": "",
     "job.name": "",
     "cron.time.zone": "",
@@ -135,7 +135,7 @@ export class StreamingComponent implements OnInit {
     let time = new Date().getTimezoneOffset() / 60;
     let timezone = "GMT" + time + ":00";
     this.newJob = {
-      "job.type":"streaming",
+      "job.type": "streaming",
       "job.name": this.jobname,
       "measure.id": this.measureid,
       "cron.expression": this.cronExp,
@@ -177,7 +177,7 @@ export class StreamingComponent implements OnInit {
       },
       err => {
         let response = JSON.parse(err.error);
-        if(response.code === '40004'){
+        if (response.code === '40004') {
           this.toasterService.pop("error", "Error!", "Job name already exists!");
         } else {
           this.toasterService.pop("error", "Error!", "Error when creating job");
@@ -195,15 +195,15 @@ export class StreamingComponent implements OnInit {
     var stepSelection = ".formStep";
     $(stepSelection).css({
       height:
-        window.innerHeight -
-        $(stepSelection).offset().top -
-        $("#footerwrap").outerHeight()
+      window.innerHeight -
+      $(stepSelection).offset().top -
+      $("#footerwrap").outerHeight()
     });
     $("fieldset").height(
       $(stepSelection).height() -
-        $(stepSelection + ">.stepDesc").height() -
-        $(".btn-container").height() -
-        200
+      $(stepSelection + ">.stepDesc").height() -
+      $(".btn-container").height() -
+      200
     );
     $(".y-scrollable").css({
       height: $("fieldset").height()
@@ -260,8 +260,8 @@ export class StreamingComponent implements OnInit {
     var allModels = this.serviceService.config.uri.allModels + '?type=griffin';
     this.http.get(allModels).subscribe(data => {
       let originData = data;
-      for(let i in originData){
-        if(originData[i]["process.type"] === "STREAING"){
+      for (let i in originData) {
+        if (originData[i]["process.type"] === "STREAING") {
           this.Measures.push(originData[i]);
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/job-detail/job-detail.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/job-detail/job-detail.component.html b/ui/angular/src/app/job/job-detail/job-detail.component.html
index befa9ff..dfe1060 100644
--- a/ui/angular/src/app/job/job-detail/job-detail.component.html
+++ b/ui/angular/src/app/job/job-detail/job-detail.component.html
@@ -71,7 +71,7 @@ under the License.
             {{cronTimeZone}}
           </div>
         </div>
-        <div *ngIf="this.rangeConfig.length != 0">      
+        <div *ngIf="this.rangeConfig.length != 0">
           <div class="row" style="margin-left: 0px" *ngFor="let item of this.tableInfo;let i = index">
             <div class="row">
               <label class="col-xs-12">

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/job-detail/job-detail.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/job-detail/job-detail.component.spec.ts b/ui/angular/src/app/job/job-detail/job-detail.component.spec.ts
index 5f2e168..f998979 100644
--- a/ui/angular/src/app/job/job-detail/job-detail.component.spec.ts
+++ b/ui/angular/src/app/job/job-detail/job-detail.component.spec.ts
@@ -1,6 +1,6 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { JobDetailComponent } from './job-detail.component';
+import {JobDetailComponent} from './job-detail.component';
 
 describe('JobDetailComponent', () => {
   let component: JobDetailComponent;
@@ -8,9 +8,9 @@ describe('JobDetailComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ JobDetailComponent ]
+      declarations: [JobDetailComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/job-detail/job-detail.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/job-detail/job-detail.component.ts b/ui/angular/src/app/job/job-detail/job-detail.component.ts
index e5c8a8d..7c4a10b 100644
--- a/ui/angular/src/app/job/job-detail/job-detail.component.ts
+++ b/ui/angular/src/app/job/job-detail/job-detail.component.ts
@@ -16,10 +16,10 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from '@angular/core';
-import { ServiceService } from "../../service/service.service";
-import { HttpClient } from "@angular/common/http";
-import { Router, ActivatedRoute, ParamMap } from "@angular/router";
+import {Component, OnInit} from '@angular/core';
+import {ServiceService} from "../../service/service.service";
+import {HttpClient} from "@angular/common/http";
+import {Router, ActivatedRoute, ParamMap} from "@angular/router";
 
 @Component({
   selector: 'app-job-detail',
@@ -28,7 +28,7 @@ import { Router, ActivatedRoute, ParamMap } from "@angular/router";
   styleUrls: ['./job-detail.component.css']
 })
 export class JobDetailComponent implements OnInit {
-  
+
   currentId: string;
   jobData: any;
   measureData: any;
@@ -40,11 +40,13 @@ export class JobDetailComponent implements OnInit {
   processType: string;
   rangeConfig = [];
   tableInfo = [];
+
   constructor(
-  	private route: ActivatedRoute,
-  	private router: Router,
-  	private http: HttpClient,
-    public serviceService: ServiceService) { }
+    private route: ActivatedRoute,
+    private router: Router,
+    private http: HttpClient,
+    public serviceService: ServiceService) {
+  }
 
   getMeasureById(measureId) {
     let url = this.serviceService.config.uri.getModel + "/" + measureId;
@@ -54,7 +56,7 @@ export class JobDetailComponent implements OnInit {
         this.measureName = this.measureData.name;
         this.measureType = this.measureData["dq.type"].toLowerCase();
         this.processType = this.measureData["process.type"].toLowerCase();
-        for(let item of this.measureData["data.sources"]){
+        for (let item of this.measureData["data.sources"]) {
           let config = item.connectors[0].config;
           let tableName = config.database + "." + config["table.name"];
           this.tableInfo.push(tableName);
@@ -67,7 +69,7 @@ export class JobDetailComponent implements OnInit {
   }
 
   ngOnInit() {
-  	this.currentId = this.route.snapshot.paramMap.get("id");
+    this.currentId = this.route.snapshot.paramMap.get("id");
     var getJobById = this.serviceService.config.uri.getJobById + "?jobId=" + this.currentId;
     this.http.get(getJobById).subscribe(
       data => {
@@ -77,7 +79,7 @@ export class JobDetailComponent implements OnInit {
         this.cronTimeZone = this.jobData["cron.time.zone"];
         let mesureId = this.jobData["measure.id"];
         this.getMeasureById(mesureId);
-        for(let item of this.jobData["data.segments"]){
+        for (let item of this.jobData["data.segments"]) {
           this.rangeConfig.push(item["segment.range"]);
         }
       },

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/job.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/job.component.css b/ui/angular/src/app/job/job.component.css
index 03977d3..2d68922 100644
--- a/ui/angular/src/app/job/job.component.css
+++ b/ui/angular/src/app/job/job.component.css
@@ -17,15 +17,15 @@ specific language governing permissions and limitations
 under the License.
 */
 
-.table-striped>tbody>tr:nth-of-type(even) {
+.table-striped > tbody > tr:nth-of-type(even) {
   background-color: #1f1f1f;
 }
 
-.table-striped>tbody>tr:nth-of-type(odd) {
+.table-striped > tbody > tr:nth-of-type(odd) {
   background-color: #080808;
 }
 
-.reco>tbody:nth-of-type(odd)>tr {
+.reco > tbody:nth-of-type(odd) > tr {
   background-color: #1f1f1f;
 }
 
@@ -33,7 +33,7 @@ under the License.
   border-collapse: separate;
 }
 
-.table>tbody+tbody {
+.table > tbody + tbody {
   border-top: 1px solid transparent;
 }
 


[4/5] incubator-griffin git commit: make ui style consistent

Posted by gu...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/job.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/job.component.html b/ui/angular/src/app/job/job.component.html
index 813d0c4..2fb87a2 100644
--- a/ui/angular/src/app/job/job.component.html
+++ b/ui/angular/src/app/job/job.component.html
@@ -22,7 +22,8 @@ under the License.
       <i class="fa fa-plus"></i>
        Create Job
     </a> -->
-    <a role="button" routerLink="/createjob/batch" class="btn btn-primary btn-o btn-wide dropdown-toggle" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    <a role="button" routerLink="/createjob/batch" class="btn btn-primary btn-o btn-wide dropdown-toggle"
+       id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
       <i class="fa fa-plus"></i>
       Create Job
     </a>
@@ -34,105 +35,109 @@ under the License.
   <div id="modelContainer">
     <table class="table table-striped reco" [mfData]="results" #mf="mfDataTable" [mfRowsOnPage]="10">
       <thead>
-        <tr style="background-color:#7D95CC">
-          <th st-ratio="15">Job Name</th>
-          <th st-ratio="15">Previous Fire Time</th>
-          <th st-ratio="20">Next Fire Time</th>
-          <th st-ratio="15">Job State</th>
-          <!-- <th st-ratio="5">Cron Expression</th> -->
-          <th st-ratio="5">Action</th>
-          <th st-ratio="5">Metric</th>
-        </tr>
+      <tr style="background-color:#7D95CC">
+        <th st-ratio="15">Job Name</th>
+        <th st-ratio="15">Previous Fire Time</th>
+        <th st-ratio="20">Next Fire Time</th>
+        <th st-ratio="15">Job State</th>
+        <!-- <th st-ratio="5">Cron Expression</th> -->
+        <th st-ratio="5">Action</th>
+        <th st-ratio="5">Metric</th>
+      </tr>
       </thead>
       <tbody>
-        <tr *ngIf="!results">
-          <td colspan="7" style="text-align:center;display:none">
-            No content!
-          </td>
-          <!-- <td class="icon" style="border-top-style:none">
-            <span class="fa fa-spinner fa-spin fa-3x fa-fw"></span>
-          </td> -->
-        </tr>
+      <tr *ngIf="!results">
+        <td colspan="7" style="text-align:center;display:none">
+          No content!
+        </td>
+        <!-- <td class="icon" style="border-top-style:none">
+          <span class="fa fa-spinner fa-spin fa-3x fa-fw"></span>
+        </td> -->
+      </tr>
       </tbody>
       <tbody *ngFor="let row of mf.data">
-        <tr>
-          <td (click)="showInstances(row)" [ngClass]="{accordion:true}" style="cursor: pointer;">
-            <i *ngIf="!row.showDetail" class="fa fa-chevron-circle-right blue"></i>
-            <i *ngIf="row.showDetail" class="fa fa-chevron-circle-down blue"></i> {{row.jobName}}
-            <!-- -{{(row.createTime | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }} -->
-          </td>
-          <td [hidden]="row.previousFireTime!=-1">--/--/-- &nbsp;&nbsp;--:--</td>
-          <td [hidden]="row.previousFireTime==-1">{{(row.jobState.previousFireTime | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }}</td>
-          <td>{{(row.jobState.nextFireTime | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }}</td>
-          <td>
+      <tr>
+        <td (click)="showInstances(row)" [ngClass]="{accordion:true}" style="cursor: pointer;">
+          <i *ngIf="!row.showDetail" class="fa fa-chevron-circle-right blue"></i>
+          <i *ngIf="row.showDetail" class="fa fa-chevron-circle-down blue"></i> {{row.jobName}}
+          <!-- -{{(row.createTime | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }} -->
+        </td>
+        <td [hidden]="row.previousFireTime!=-1">--/--/-- &nbsp;&nbsp;--:--</td>
+        <td [hidden]="row.previousFireTime==-1">{{(row.jobState.previousFireTime | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A'
+          }}
+        </td>
+        <td>{{(row.jobState.nextFireTime | date: 'yyyy/MM/dd HH:mm:ss') || 'N/A' }}</td>
+        <td>
             <span *ngIf='row.jobState.state == "NORMAL"' class="normal">{{row.jobState.state}}
                     </span>
-            <span *ngIf='row.jobState.state != "NORMAL"' class='unnormal'>{{row.jobState.state}}</span>
-          </td>
-          <!-- <td>{{row.cronExpression}}</td> -->
-          <td>
-            &nbsp;
-            <a (click)="remove(row)" title="delete" style="text-decoration:none">
-              <i class="fa fa-trash-o po"></i>
-            </a> &nbsp;
-            <a routerLink="/job/{{row.id}}" title="subscribe">
-              <i class="fa fa-eye"></i>
-            </a>&nbsp;
-            <a *ngIf="row.action==='START'" (click)="stateMag(row)" title="Start" style="text-decoration:none">
-              <i class="fa fa-play"></i>
-            </a>
-            <a *ngIf="row.action!=='START'" (click)="stateMag(row)" title="Stop" style="text-decoration:none">
-              <i class="fa fa-stop"></i>
-            </a>
-          </td>
-          <td>
-            &nbsp;
-            <a (click)="show(row)">
-              <i class="fa fa-bar-chart po"></i>
-            </a> &nbsp;
-          </td>
-        </tr>
-        <tr *ngIf="row.showDetail">
-          <td colspan="7" style="padding:20px 30px 10px 30px;">
-            <table class="table table-striped co" [mfData]="allInstances" #mf2="mfDataTable" [mfRowsOnPage]="10">
-              <thead>
-                <tr style="background-color:#7D95CC">
-                  <th style="width:30%">AppID</th>
-                  <th style="width:25%">Time</th>
-                  <th style="width:20%">State</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr *ngIf="!allInstances">
-                  <td colspan="7" style="text-align:center">No content.</td>
-                </tr>
-                <tr *ngFor="let item of mf2.data">
-                  <td><a href={{item.appUri}} target="_blank" style="color:white">{{item.appId}}</a></td>
-                  <td>{{item.timestamp | date: 'yyyy/MM/dd HH:mm:ss'}}</td>
-                  <td>{{item.state}}</td>
-                </tr>
-              </tbody>
-              <tfoot>
-                <tr>
-                  <td class="text-center" colspan="8" style="background-color:#1f1f1f;" id="pagination">
-                    <mfBootstrapPaginator></mfBootstrapPaginator>
-                  </td>
-                </tr>
-              </tfoot>
-            </table>
-          </td>
-        </tr>
+          <span *ngIf='row.jobState.state != "NORMAL"' class='unnormal'>{{row.jobState.state}}</span>
+        </td>
+        <!-- <td>{{row.cronExpression}}</td> -->
+        <td>
+          &nbsp;
+          <a (click)="remove(row)" title="delete" style="text-decoration:none">
+            <i class="fa fa-trash-o po"></i>
+          </a> &nbsp;
+          <a routerLink="/job/{{row.id}}" title="subscribe">
+            <i class="fa fa-eye"></i>
+          </a>&nbsp;
+          <a *ngIf="row.action==='START'" (click)="stateMag(row)" title="Start" style="text-decoration:none">
+            <i class="fa fa-play"></i>
+          </a>
+          <a *ngIf="row.action!=='START'" (click)="stateMag(row)" title="Stop" style="text-decoration:none">
+            <i class="fa fa-stop"></i>
+          </a>
+        </td>
+        <td>
+          &nbsp;
+          <a (click)="show(row)">
+            <i class="fa fa-bar-chart po"></i>
+          </a> &nbsp;
+        </td>
+      </tr>
+      <tr *ngIf="row.showDetail">
+        <td colspan="7" style="padding:20px 30px 10px 30px;">
+          <table class="table table-striped co" [mfData]="allInstances" #mf2="mfDataTable" [mfRowsOnPage]="10">
+            <thead>
+            <tr style="background-color:#7D95CC">
+              <th style="width:30%">AppID</th>
+              <th style="width:25%">Time</th>
+              <th style="width:20%">State</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr *ngIf="!allInstances">
+              <td colspan="7" style="text-align:center">No content.</td>
+            </tr>
+            <tr *ngFor="let item of mf2.data">
+              <td><a href={{item.appUri}} target="_blank" style="color:white">{{item.appId}}</a></td>
+              <td>{{item.timestamp | date: 'yyyy/MM/dd HH:mm:ss'}}</td>
+              <td>{{item.state}}</td>
+            </tr>
+            </tbody>
+            <tfoot>
+            <tr>
+              <td class="text-center" colspan="8" style="background-color:#1f1f1f;" id="pagination">
+                <mfBootstrapPaginator></mfBootstrapPaginator>
+              </td>
+            </tr>
+            </tfoot>
+          </table>
+        </td>
+      </tr>
       </tbody>
       <tfoot>
-        <tr>
-          <td colspan="8" class="text-right">
-            <mfBootstrapPaginator></mfBootstrapPaginator>
-          </td>
-        </tr>
+      <tr>
+        <td colspan="8" class="text-right">
+          <mfBootstrapPaginator></mfBootstrapPaginator>
+        </td>
+      </tr>
       </tfoot>
     </table>
   </div>
-  <div class="modal fade" id="deleteJobConfirmation" role="dialog" tabindex="-1" [ngClass]="{'in': visibleAnimate}" *ngIf="deletedRow" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}" (click)="onContainerClicked($event)">
+  <div class="modal fade" id="deleteJobConfirmation" role="dialog" tabindex="-1" [ngClass]="{'in': visibleAnimate}"
+       *ngIf="deletedRow" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}"
+       (click)="onContainerClicked($event)">
     <div class="modal-dialog modal-xg modal-lg">
       <div class="modal-content">
         <div class="modal-header">

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/job.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/job.component.spec.ts b/ui/angular/src/app/job/job.component.spec.ts
index 2caf041..a8c0ede 100644
--- a/ui/angular/src/app/job/job.component.spec.ts
+++ b/ui/angular/src/app/job/job.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { JobComponent } from './job.component';
+import {JobComponent} from './job.component';
 
 describe('JobComponent', () => {
   let component: JobComponent;
@@ -26,9 +26,9 @@ describe('JobComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ JobComponent ]
+      declarations: [JobComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/job/job.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/job/job.component.ts b/ui/angular/src/app/job/job.component.ts
index 1334f2f..f558de3 100644
--- a/ui/angular/src/app/job/job.component.ts
+++ b/ui/angular/src/app/job/job.component.ts
@@ -16,13 +16,13 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { HttpClient } from "@angular/common/http";
-import { DataTableModule } from "angular2-datatable";
-import { ServiceService } from "../service/service.service";
-import { DatePipe } from "@angular/common";
-import { Router } from "@angular/router";
-import { ToasterModule, ToasterService, ToasterConfig } from "angular2-toaster";
+import {Component, OnInit} from "@angular/core";
+import {HttpClient} from "@angular/common/http";
+import {DataTableModule} from "angular2-datatable";
+import {ServiceService} from "../service/service.service";
+import {DatePipe} from "@angular/common";
+import {Router} from "@angular/router";
+import {ToasterModule, ToasterService, ToasterConfig} from "angular2-toaster";
 import * as $ from "jquery";
 
 @Component({
@@ -43,8 +43,8 @@ export class JobComponent implements OnInit {
   deleteId: string;
   deleteIndex: number;
   action: string;
-  modalWndMsg:string;
-  isStop:boolean;
+  modalWndMsg: string;
+  isStop: boolean;
 
   private toasterService: ToasterService;
 
@@ -80,28 +80,28 @@ export class JobComponent implements OnInit {
 
   show(row) {
     var curjob = row.jobName;
-    this.router.navigate(['/detailed/'+curjob]);
+    this.router.navigate(['/detailed/' + curjob]);
   }
 
   confirmDelete() {
-    let self=this;
-    if(this.isStop){
+    let self = this;
+    if (this.isStop) {
       $("#save").attr("disabled", "true");
       let actionUrl = this.serviceService.config.uri.modifyJobs + "/" + this.deleteId + "?action=" + "stop";
       this.http.put(actionUrl, {}).subscribe(data => {
-        let self=this;
-        self.hide();
-        var result = JSON.parse(JSON.stringify(data));
-        self.results[self.deleteIndex].action = 'START';
-        self.results[self.deleteIndex].jobState.state = result["job.state"].state;
-        self.isStop=false;
-      },
-      err => {
-        this.toasterService.pop("error", "Error!", "Failed to manage job state!");
-        console.log("Error when manage job state");
-      });
+          let self = this;
+          self.hide();
+          var result = JSON.parse(JSON.stringify(data));
+          self.results[self.deleteIndex].action = 'START';
+          self.results[self.deleteIndex].jobState.state = result["job.state"].state;
+          self.isStop = false;
+        },
+        err => {
+          this.toasterService.pop("error", "Error!", "Failed to manage job state!");
+          console.log("Error when manage job state");
+        });
     }
-    else{
+    else {
       let deleteJob = this.serviceService.config.uri.deleteJob;
       let deleteUrl = deleteJob + "/" + this.deleteId;
       $("#save").attr("disabled", "true");
@@ -109,7 +109,7 @@ export class JobComponent implements OnInit {
         data => {
           let self = this;
           self.hide();
-          setTimeout(function() {
+          setTimeout(function () {
             self.results.splice(self.deleteIndex, 1);
           }, 0);
         },
@@ -122,8 +122,8 @@ export class JobComponent implements OnInit {
 
   }
 
-  stateMag(row){
-    if(row.action.toLowerCase()=="stop"){
+  stateMag(row) {
+    if (row.action.toLowerCase() == "stop") {
       $("#save").removeAttr("disabled");
       this.isStop = true;
       this.modalWndMsg = "Stop the job with the below information?";
@@ -133,17 +133,17 @@ export class JobComponent implements OnInit {
       this.deleteIndex = this.results.indexOf(row);
       this.deleteId = row.id;
     }
-    else{
+    else {
       let actionUrl = this.serviceService.config.uri.modifyJobs + "/" + row.id + "?action=" + row.action.toLowerCase();
       this.http.put(actionUrl, {}).subscribe(data => {
-        var result = JSON.parse(JSON.stringify(data));
-        row.action = (row.action === 'STOP' ? 'START' : 'STOP');
-        row.jobState.state = result["job.state"].state;
-      },
-      err => {
-        this.toasterService.pop("error", "Error!", "Failed to manage job state!");
-        console.log("Error when manage job state");
-      });
+          var result = JSON.parse(JSON.stringify(data));
+          row.action = (row.action === 'STOP' ? 'START' : 'STOP');
+          row.jobState.state = result["job.state"].state;
+        },
+        err => {
+          this.toasterService.pop("error", "Error!", "Failed to manage job state!");
+          console.log("Error when manage job state");
+        });
     }
   }
 
@@ -161,7 +161,7 @@ export class JobComponent implements OnInit {
     this.http.get(getInstanceUrl).subscribe(data => {
       row.showDetail = !row.showDetail;
       this.allInstances = data;
-      setTimeout(function() {
+      setTimeout(function () {
         $(".pagination").css("marginBottom", "-10px");
       }, 0);
     });
@@ -169,7 +169,9 @@ export class JobComponent implements OnInit {
   }
 
   toCamel(myString): string {
-    return myString.replace(/[.]([a-z])/g, function(g) { return g[1].toUpperCase(); })
+    return myString.replace(/[.]([a-z])/g, function (g) {
+      return g[1].toUpperCase();
+    })
   }
 
   swapJson(json): any {
@@ -184,13 +186,13 @@ export class JobComponent implements OnInit {
     var self = this;
     let allJobs = this.serviceService.config.uri.allJobs;
     this.http.get(allJobs).subscribe(data => {
-      let trans = Object.keys(data).map(function(index) {
+      let trans = Object.keys(data).map(function (index) {
         let job = self.swapJson(data[index]);
         job.showDetail = false;
         job.action = (job.jobState.toStart === true) ? 'START' : 'STOP';
         return job;
       });
-      this.results = Object.assign([],trans).reverse();
+      this.results = Object.assign([], trans).reverse();
     });
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/loader/loader.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/loader/loader.component.css b/ui/angular/src/app/loader/loader.component.css
index 9eb55e5..44f7bf4 100644
--- a/ui/angular/src/app/loader/loader.component.css
+++ b/ui/angular/src/app/loader/loader.component.css
@@ -17,8 +17,8 @@ specific language governing permissions and limitations
 under the License.
 */
 .icon {
-    color: #fff;
-    position: absolute;
-    left: 50%;
-    padding-top: 20%;
-  }
\ No newline at end of file
+  color: #fff;
+  position: absolute;
+  left: 50%;
+  padding-top: 20%;
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/loader/loader.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/loader/loader.component.spec.ts b/ui/angular/src/app/loader/loader.component.spec.ts
index af609a5..61757bc 100644
--- a/ui/angular/src/app/loader/loader.component.spec.ts
+++ b/ui/angular/src/app/loader/loader.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { LoaderComponent } from './loader.component';
+import {LoaderComponent} from './loader.component';
 
 describe('CreateMeasureComponent', () => {
   let component: LoaderComponent;
@@ -26,9 +26,9 @@ describe('CreateMeasureComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ LoaderComponent ]
+      declarations: [LoaderComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/loader/loader.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/loader/loader.component.ts b/ui/angular/src/app/loader/loader.component.ts
index 801f97d..0262396 100644
--- a/ui/angular/src/app/loader/loader.component.ts
+++ b/ui/angular/src/app/loader/loader.component.ts
@@ -1,28 +1,30 @@
-import { Component, OnInit, OnDestroy } from "@angular/core";
-import { Subscription } from "rxjs/Subscription";
-import { LoaderService } from "./loader.service";
-import { LoadingState } from "./loader.state";
+import {Component, OnInit, OnDestroy} from "@angular/core";
+import {Subscription} from "rxjs/Subscription";
+import {LoaderService} from "./loader.service";
+import {LoadingState} from "./loader.state";
 
 @Component({
-    selector: "app-loader",
-    templateUrl: "./loader.component.html",
-    styleUrls: ["./loader.component.css"]
+  selector: "app-loader",
+  templateUrl: "./loader.component.html",
+  styleUrls: ["./loader.component.css"]
 })
 export class LoaderComponent implements OnInit {
-    show = false;
-    private subscription: Subscription;
-    constructor(
-        private loaderService: LoaderService
-    ) { }
+  show = false;
+  private subscription: Subscription;
 
-    ngOnInit() { 
-        this.subscription = this.loaderService.LoadingState
-            .subscribe((state: LoadingState) => {
-                this.show = state.show;
-            });
-    }
+  constructor(
+    private loaderService: LoaderService
+  ) {
+  }
 
-    ngOnDestroy() {
-        this.subscription.unsubscribe();
-    }
-}
\ No newline at end of file
+  ngOnInit() {
+    this.subscription = this.loaderService.LoadingState
+      .subscribe((state: LoadingState) => {
+        this.show = state.show;
+      });
+  }
+
+  ngOnDestroy() {
+    this.subscription.unsubscribe();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/loader/loader.service.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/loader/loader.service.spec.ts b/ui/angular/src/app/loader/loader.service.spec.ts
index 8d0cd3a..522dbea 100644
--- a/ui/angular/src/app/loader/loader.service.spec.ts
+++ b/ui/angular/src/app/loader/loader.service.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { LoaderService } from './loader.service';
+import {LoaderService} from './loader.service';
 
 describe('CreateMeasureComponent', () => {
   let component: LoaderService;
@@ -26,9 +26,9 @@ describe('CreateMeasureComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ LoaderService ]
+      declarations: [LoaderService]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/loader/loader.service.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/loader/loader.service.ts b/ui/angular/src/app/loader/loader.service.ts
index acd4eb5..2844ae9 100644
--- a/ui/angular/src/app/loader/loader.service.ts
+++ b/ui/angular/src/app/loader/loader.service.ts
@@ -16,23 +16,24 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Injectable } from "@angular/core";
-import { Subject } from "rxjs/Subject";
-import { LoadingState } from "./loader.state";
+import {Injectable} from "@angular/core";
+import {Subject} from "rxjs/Subject";
+import {LoadingState} from "./loader.state";
 
 @Injectable()
 export class LoaderService {
 
-    private loaderSubject = new Subject<LoadingState>();
-    LoadingState = this.loaderSubject.asObservable();
+  private loaderSubject = new Subject<LoadingState>();
+  LoadingState = this.loaderSubject.asObservable();
 
-    constructor() { }
+  constructor() {
+  }
 
-    show() { 
-        this.loaderSubject.next(<LoadingState>{show: true});
-    }
+  show() {
+    this.loaderSubject.next(<LoadingState>{show: true});
+  }
 
-    hide() {
-        this.loaderSubject.next(<LoadingState>{show: false});
-    }
-}
\ No newline at end of file
+  hide() {
+    this.loaderSubject.next(<LoadingState>{show: false});
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/loader/loader.state.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/loader/loader.state.ts b/ui/angular/src/app/loader/loader.state.ts
index fc56233..b0ef236 100644
--- a/ui/angular/src/app/loader/loader.state.ts
+++ b/ui/angular/src/app/loader/loader.state.ts
@@ -17,5 +17,5 @@ specific language governing permissions and limitations
 under the License.
 */
 export interface LoadingState {
-    show: boolean;
-}
\ No newline at end of file
+  show: boolean;
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/login/login.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/login/login.component.css b/ui/angular/src/app/login/login.component.css
index 0091b44..4d5a5b1 100644
--- a/ui/angular/src/app/login/login.component.css
+++ b/ui/angular/src/app/login/login.component.css
@@ -17,6 +17,7 @@ specific language governing permissions and limitations
 under the License.
 */
 @import url("../../../node_modules/bootstrap/dist/css/bootstrap.css");
+
 #content {
   background-color: #1a237e;
   background-position: center center;
@@ -25,6 +26,7 @@ under the License.
   background-size: cover;
   height: 100vh;
 }
+
 hr {
   margin-bottom: 30px;
 }
@@ -79,4 +81,4 @@ hr {
   padding: 8px 12px;
   border-radius: 4px;
   text-align: center;
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/login/login.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/login/login.component.html b/ui/angular/src/app/login/login.component.html
index 3e1c47e..c77925c 100644
--- a/ui/angular/src/app/login/login.component.html
+++ b/ui/angular/src/app/login/login.component.html
@@ -44,14 +44,18 @@ under the License.
         <div style="text-align:center;margin-bottom:30px;">
           <img src="../assets/img/logo.png" class="img-rounded" style="width:80%;">
         </div>
-        <input type="input" class="form-control" placeholder="username" autocomplete="on" style="margin-bottom:20px;" (focus)="focus($event)">
-        <input type="password" class="form-control" placeholder="password" autocomplete="on" (keyup)="submit($event)" (focus)="focus($event)">
+        <input type="input" class="form-control" placeholder="username" autocomplete="on" style="margin-bottom:20px;"
+               (focus)="focus($event)">
+        <input type="password" class="form-control" placeholder="password" autocomplete="on" (keyup)="submit($event)"
+               (focus)="focus($event)">
         <div class="checkbox">
           <label style="color:white;">
             <input type="checkbox" value="remember-me" checked>Remember me
           </label>
         </div>
-        <button class="btn btn-default btn-large btn-block" id="login-btn" (click)="login()" style="margin-bottom: 20px;">Log in</button>
+        <button class="btn btn-default btn-large btn-block" id="login-btn" (click)="login()"
+                style="margin-bottom: 20px;">Log in
+        </button>
         <div id="loginMsg">Login failed. Try again.</div>
       </div>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/login/login.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/login/login.component.spec.ts b/ui/angular/src/app/login/login.component.spec.ts
index db3a317..8475f0a 100644
--- a/ui/angular/src/app/login/login.component.spec.ts
+++ b/ui/angular/src/app/login/login.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { LoginComponent } from './login.component';
+import {LoginComponent} from './login.component';
 
 describe('LoginComponent', () => {
   let component: LoginComponent;
@@ -26,9 +26,9 @@ describe('LoginComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ LoginComponent ]
+      declarations: [LoginComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/login/login.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/login/login.component.ts b/ui/angular/src/app/login/login.component.ts
index 6c80431..187ef00 100644
--- a/ui/angular/src/app/login/login.component.ts
+++ b/ui/angular/src/app/login/login.component.ts
@@ -16,12 +16,12 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit } from "@angular/core";
-import { ServiceService } from "../service/service.service";
-import { UserService } from "../service/user.service";
-import { Router } from "@angular/router";
-import { LocationStrategy, HashLocationStrategy } from "@angular/common";
-import { HttpClient } from "@angular/common/http";
+import {Component, OnInit} from "@angular/core";
+import {ServiceService} from "../service/service.service";
+import {UserService} from "../service/user.service";
+import {Router} from "@angular/router";
+import {LocationStrategy, HashLocationStrategy} from "@angular/common";
+import {HttpClient} from "@angular/common/http";
 
 @Component({
   selector: "app-login",
@@ -34,12 +34,15 @@ export class LoginComponent implements OnInit {
   timestamp: Date;
   fullName: string;
   results: any;
+
   constructor(
     private router: Router,
     private http: HttpClient,
     public serviceService: ServiceService,
     public userService: UserService
-  ) {}
+  ) {
+  }
+
   loginBtnWait() {
     $("#login-btn")
       .addClass("disabled")
@@ -80,7 +83,7 @@ export class LoginComponent implements OnInit {
     var password = $("input:eq(1)").val();
     var loginUrl = this.serviceService.config.uri.login;
     this.loginBtnWait();
-    this.http.post(loginUrl, { username: name, password: password }).subscribe(
+    this.http.post(loginUrl, {username: name, password: password}).subscribe(
       data => {
         this.results = data;
         if (this.results.status == 0) {
@@ -105,9 +108,10 @@ export class LoginComponent implements OnInit {
       }
     );
   }
+
   ngOnInit() {
     this.ntAccount = this.userService.getCookie("ntAccount");
     this.fullName = this.userService.getCookie("fullName");
     this.timestamp = new Date();
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/ac/ac.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/ac/ac.component.css b/ui/angular/src/app/measure/create-measure/ac/ac.component.css
index 83562af..aa8c215 100644
--- a/ui/angular/src/app/measure/create-measure/ac/ac.component.css
+++ b/ui/angular/src/app/measure/create-measure/ac/ac.component.css
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../../../../node_modules/angular2-toaster/toaster.css');
 @import url('../../measure.component.css');
 
@@ -59,19 +58,19 @@ div.tree div.tree-children::before {
   left: 5px
 }
 
-div.tree treenode>div>.node-wrapper {
+div.tree treenode > div > .node-wrapper {
   margin-left: 24px
 }
 
-div.tree treenode>div>.node-wrapper>.node-content-wrapper {
+div.tree treenode > div > .node-wrapper > .node-content-wrapper {
   margin-left: 4px
 }
 
-div.tree treenode>div.tree-node-leaf>.node-wrapper {
+div.tree treenode > div.tree-node-leaf > .node-wrapper {
   margin-left: 0
 }
 
-div.tree treenode>div::before {
+div.tree treenode > div::before {
   content: "";
   position: absolute;
   border-bottom: 1px dotted #23527c;
@@ -80,7 +79,7 @@ div.tree treenode>div::before {
   left: 7px
 }
 
-div.tree treenode>div .toggle-children-wrapper {
+div.tree treenode > div .toggle-children-wrapper {
   width: 13px;
   height: 13px;
   border: 1px solid #23527c;
@@ -93,7 +92,7 @@ div.tree treenode>div .toggle-children-wrapper {
   z-index: 1
 }
 
-div.tree treenode>div .toggle-children-wrapper::before {
+div.tree treenode > div .toggle-children-wrapper::before {
   content: "";
   display: inline-block;
   width: 7px;
@@ -103,7 +102,7 @@ div.tree treenode>div .toggle-children-wrapper::before {
   left: 2px
 }
 
-div.tree treenode>div .toggle-children-wrapper.toggle-children-wrapper-collapsed::after {
+div.tree treenode > div .toggle-children-wrapper.toggle-children-wrapper-collapsed::after {
   content: "";
   display: inline-block;
   height: 7px;
@@ -113,18 +112,18 @@ div.tree treenode>div .toggle-children-wrapper.toggle-children-wrapper-collapsed
   left: 5px
 }
 
-div.tree treenode>div .toggle-children-wrapper .toggle-children {
+div.tree treenode > div .toggle-children-wrapper .toggle-children {
   display: none
 }
 
-div.tree treenode>div .node-content-wrapper {
+div.tree treenode > div .node-content-wrapper {
   margin-left: 4px
 }
 
-div.tree>treenode>div::before {
+div.tree > treenode > div::before {
   left: 14px
 }
 
-div.tree>treenode>div>.node-wrapper>treenodeexpander>.toggle-children-wrapper {
+div.tree > treenode > div > .node-wrapper > treenodeexpander > .toggle-children-wrapper {
   left: 22px
 }

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/ac/ac.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/ac/ac.component.html b/ui/angular/src/app/measure/create-measure/ac/ac.component.html
index bcdddd3..648ae7d 100644
--- a/ui/angular/src/app/measure/create-measure/ac/ac.component.html
+++ b/ui/angular/src/app/measure/create-measure/ac/ac.component.html
@@ -67,7 +67,8 @@ under the License.
         </ul>
       </div>
       <div id="step-1" *ngIf="currentStep == 1" class="formStep">
-        <label class="stepDesc">This step let you choose the single source of truth for data quality comparision with target. Currently you can only select the attributes from one schema</label>
+        <label class="stepDesc">This step let you choose the single source of truth for data quality comparision with
+          target. Currently you can only select the attributes from one schema</label>
         <div class="container-fluid">
           <div class="col-md-4 col-lg-4 col-sm-4">
             <fieldset>
@@ -84,32 +85,34 @@ under the License.
                 <div style="margin-top:10px;">
                   <label>View schema:</label>
                   <i style="color:#fff;font-weight: bold;">{{currentDBstr}}{{currentTable}}
-                    </i>
+                  </i>
                 </div>
                 <div style="margin-top:5px;">
                   <table class="table table-striped">
                     <thead>
-                      <tr style="background-color:#7D95CC">
-                        <th>
-                          <input type="checkbox" (click)="toggleAll()" [checked]="selectedAll" />
-                        </th>
-                        <th>Column Name</th>
-                        <th>Type</th>
-                        <th>Comment</th>
-                      </tr>
+                    <tr style="background-color:#7D95CC">
+                      <th>
+                        <input type="checkbox" (click)="toggleAll()" [checked]="selectedAll"/>
+                      </th>
+                      <th>Column Name</th>
+                      <th>Type</th>
+                      <th>Comment</th>
+                    </tr>
                     </thead>
                     <tbody>
-                      <tr *ngIf="!schemaCollection || schemaCollection.length == 0">
-                        <td colspan="5" style="text-align:center"><span class="highlight">Please select a schema from the left tree first</span></td>
-                      </tr>
-                      <tr *ngFor="let row of schemaCollection">
-                        <td>
-                          <input type="checkbox" (click)='toggleSelection(row)' [checked]="row.selected" value={{row.name}} />
-                        </td>
-                        <td>{{row.name}}</td>
-                        <td>{{row.type}}</td>
-                        <td>{{row.comment}}</td>
-                      </tr>
+                    <tr *ngIf="!schemaCollection || schemaCollection.length == 0">
+                      <td colspan="5" style="text-align:center"><span class="highlight">Please select a schema from the left tree first</span>
+                      </td>
+                    </tr>
+                    <tr *ngFor="let row of schemaCollection">
+                      <td>
+                        <input type="checkbox" (click)='toggleSelection(row)' [checked]="row.selected"
+                               value={{row.name}}/>
+                      </td>
+                      <td>{{row.name}}</td>
+                      <td>{{row.type}}</td>
+                      <td>{{row.comment}}</td>
+                    </tr>
                     </tbody>
                   </table>
                 </div>
@@ -146,27 +149,28 @@ under the License.
                 <div style="margin-top:5px;">
                   <table st-table="schemaCollectionTarget" class="table table-striped">
                     <thead>
-                      <tr style="background-color:#7D95CC">
-                        <th>
-                          <input type="checkbox" (click)="toggleAllTarget()" [checked]="selectedAllTarget" />
-                        </th>
-                        <th>Column Name</th>
-                        <th>Type</th>
-                        <th>Comment</th>
-                      </tr>
+                    <tr style="background-color:#7D95CC">
+                      <th>
+                        <input type="checkbox" (click)="toggleAllTarget()" [checked]="selectedAllTarget"/>
+                      </th>
+                      <th>Column Name</th>
+                      <th>Type</th>
+                      <th>Comment</th>
+                    </tr>
                     </thead>
                     <tbody>
-                      <tr *ngIf="!schemaCollectionTarget || schemaCollectionTarget.length == 0">
-                        <td colspan="5" style="text-align:center"><span class="highlight">Please select a schema from the left tree first</span></td>
-                      </tr>
-                      <tr *ngFor="let row of schemaCollectionTarget">
-                        <td>
-                          <input type="checkbox" (click)='toggleSelectionTarget(row)' [checked]="row.selected" />
-                        </td>
-                        <td>{{row.name}}</td>
-                        <td>{{row.type}}</td>
-                        <td>{{row.comment}}</td>
-                      </tr>
+                    <tr *ngIf="!schemaCollectionTarget || schemaCollectionTarget.length == 0">
+                      <td colspan="5" style="text-align:center"><span class="highlight">Please select a schema from the left tree first</span>
+                      </td>
+                    </tr>
+                    <tr *ngFor="let row of schemaCollectionTarget">
+                      <td>
+                        <input type="checkbox" (click)='toggleSelectionTarget(row)' [checked]="row.selected"/>
+                      </td>
+                      <td>{{row.name}}</td>
+                      <td>{{row.type}}</td>
+                      <td>{{row.comment}}</td>
+                    </tr>
                     </tbody>
                   </table>
                 </div>
@@ -185,7 +189,8 @@ under the License.
         </div>
       </div>
       <div id="step-3" *ngIf="currentStep == 3" class="formStep">
-        <label class="stepDesc">This step let you map the target data fields to source fields, you can choose the related fields from dropdown list of source</label>
+        <label class="stepDesc">This step let you map the target data fields to source fields, you can choose the
+          related fields from dropdown list of source</label>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
             <fieldset>
@@ -196,39 +201,44 @@ under the License.
                 <div class="container col-md-12 col-lg-12 col-sm-12">
                   <table class="table table-striped">
                     <thead>
-                      <tr style="background-color:#7D95CC;font-size:20px">
-                        <th style="width:40%;">Target Fields</th>
-                        <th style="width:10%;text-align:center">Map To</th>
-                        <th style="width:40%;text-align:center">Source Fields</th>
-                      </tr>
+                    <tr style="background-color:#7D95CC;font-size:20px">
+                      <th style="width:40%;">Target Fields</th>
+                      <th style="width:10%;text-align:center">Map To</th>
+                      <th style="width:40%;text-align:center">Source Fields</th>
+                    </tr>
                     </thead>
                     <tbody>
-                      <tr *ngFor="let item of selectionTarget; let i=index">
-                        <td>{{currentDBTarget}}.{{currentTableTarget}}.{{item}}</td>
-                        <td style="text-align:center;">
-                          <select class="form-control" style="background:#00FFFF;font-weight:bold" id="mapRule" name='mapRule-{{i}}' [(ngModel)]="matches[i]" value="matches[i]">
-                            <option *ngFor="let func of matchFunctions">{{func}}</option>
-                          </select>
-                        </td>
-                        <td>
-                          <select class="form-control" [(ngModel)]='mappings[i]' name="mappings{{i}}" (ngModelChange)="addMapping($event,i)" value="mappings[i]">
-                            <option *ngFor="let itemSrc of selection" [ngValue]="itemSrc">
-                              {{currentDB}}.{{currentTable}}.{{itemSrc}}</option>
-                          </select>
-                        </td>
-                      </tr>
+                    <tr *ngFor="let item of selectionTarget; let i=index">
+                      <td>{{currentDBTarget}}.{{currentTableTarget}}.{{item}}</td>
+                      <td style="text-align:center;">
+                        <select class="form-control" style="background:#00FFFF;font-weight:bold" id="mapRule"
+                                name='mapRule-{{i}}' [(ngModel)]="matches[i]" value="matches[i]">
+                          <option *ngFor="let func of matchFunctions">{{func}}</option>
+                        </select>
+                      </td>
+                      <td>
+                        <select class="form-control" [(ngModel)]='mappings[i]' name="mappings{{i}}"
+                                (ngModelChange)="addMapping($event,i)" value="mappings[i]">
+                          <option *ngFor="let itemSrc of selection" [ngValue]="itemSrc">
+                            {{currentDB}}.{{currentTable}}.{{itemSrc}}
+                          </option>
+                        </select>
+                      </td>
+                    </tr>
                     </tbody>
                   </table>
                   <p>
                     <label style="color:#B2C831">Accuracy Calculation Formula as Below:</label>
                   </p>
-                  <div class="col-md-12 col-lg-12 col-sm-12" style="color:#fff;font-size:16px;display: flex;align-items: center">
+                  <div class="col-md-12 col-lg-12 col-sm-12"
+                       style="color:#fff;font-size:16px;display: flex;align-items: center">
                     <div class="" style="text-align:right;display:block;float:left;width:20%;">
                       Accuracy Rate(%) =
                     </div>
                     <div class="" style="text-align:center;display:block;float:left;margin:0 10px 0 10px">
                       <div class="formula-text-up" style="border-bottom:1px solid;">
-                        Total Count of Matched records between <span class="badge">{{selectionTarget.length}}</span> <span style="color:green;">{{currentTableTarget}}</span> and <span class="badge">{{mappings.length}}
+                        Total Count of Matched records between <span class="badge">{{selectionTarget.length}}</span>
+                        <span style="color:green;">{{currentTableTarget}}</span> and <span class="badge">{{mappings.length}}
                           </span> <span style="color:green;">{{currentTable}}</span> fields
                       </div>
                       <div>
@@ -255,7 +265,8 @@ under the License.
         </div>
       </div>
       <div id="step-4" *ngIf="currentStep == 4" class="formStep">
-        <label class="stepDesc">Please complete the partition configuration for {{currentTable}} and {{currentTableTarget}}</label>
+        <label class="stepDesc">Please complete the partition configuration for {{currentTable}} and
+          {{currentTableTarget}}</label>
         <div class="container-fluid">
           <div class="col-md-12 col-lg-12 col-sm-12">
             <fieldset>
@@ -267,13 +278,15 @@ under the License.
                   <div class="form-group" style="text-align:center">
                     {{currentDB}}.{{currentTable}}
                   </div>
-                  <app-configuration [data]="srcconfig" [location]="src_location" (event)="getSrc($event)"></app-configuration>
+                  <app-configuration [data]="srcconfig" [location]="src_location"
+                                     (event)="getSrc($event)"></app-configuration>
                 </div>
                 <div class="col-md-6 col-lg-6 col-sm-6" id="target">
                   <div class="form-group" style="text-align:center">
                     {{currentDB}}.{{currentTableTarget}}
                   </div>
-                  <app-configuration [data]="tgtconfig" [location]="tgt_location" (event)="getTgt($event)"></app-configuration>
+                  <app-configuration [data]="tgtconfig" [location]="tgt_location"
+                                     (event)="getTgt($event)"></app-configuration>
                 </div>
               </div>
             </fieldset>
@@ -299,12 +312,15 @@ under the License.
               </legend>
               <div class="y-scrollable">
                 <div class="col-md-12 col-lg-12 col-sm-12" style="margin-top:20px;">
-                  <div class="form-group" [ngClass]="{'has-error':acName.dirty&&acName.invalid, 'has-success':acName.valid}">
+                  <div class="form-group"
+                       [ngClass]="{'has-error':acName.dirty&&acName.invalid, 'has-success':acName.valid}">
                     <label class="col-md-2 col-lg-2 col-sm-2 control-label">
                       Measure Name<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <input type="text" class="form-control" [(ngModel)]="name" name="acName" #acName="ngModel" placeholder="Please input the measure name" required pattern="^[a-zA-Z0-9_-]*$" id="acName">
+                      <input type="text" class="form-control" [(ngModel)]="name" name="acName" #acName="ngModel"
+                             placeholder="Please input the measure name" required pattern="^[a-zA-Z0-9_-]*$"
+                             id="acName">
                       <span class="error text-small block " *ngIf="acName.dirty && (acName.errors?.required)">
                         Measure Name is required</span>
                       <span class="error text-small block " *ngIf="acName.dirty && (acName.errors?.pattern)">Only letter, number, "-" and "_" are allowed</span>
@@ -317,7 +333,8 @@ under the License.
                       Measure Description:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10 ">
-                      <input type="text" class="form-control" [(ngModel)]="desc" placeholder="Please input detailed description of your measure" name="desc">
+                      <input type="text" class="form-control" [(ngModel)]="desc"
+                             placeholder="Please input detailed description of your measure" name="desc">
                     </div>
                   </div>
                 </div>
@@ -340,8 +357,10 @@ under the License.
                       Source:<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10">
-                      <input type="text" class="form-control" name="DataAsset" [(ngModel)]="currentTable" #prDataSource="ngModel" name="prDataSource" [readonly]="true" required>
-                      <span class="error text-small block " *ngIf="prDataSource.dirty && (prDataSource.errors?.required)">Data source is required</span>
+                      <input type="text" class="form-control" name="DataAsset" [(ngModel)]="currentTable"
+                             #prDataSource="ngModel" name="prDataSource" [readonly]="true" required>
+                      <span class="error text-small block "
+                            *ngIf="prDataSource.dirty && (prDataSource.errors?.required)">Data source is required</span>
                     </div>
                   </div>
                 </div>
@@ -351,8 +370,10 @@ under the License.
                       Target:<span class="symbol required"></span>:
                     </label>
                     <div class="col-md-10 col-lg-10 col-sm-10">
-                      <input type="text" class="form-control" name="DataAsset" [(ngModel)]="currentTableTarget" #prDataTarget="ngModel" name="prDataTarget" [readonly]="true" required>
-                        <span class="error text-small block " *ngIf="prDataTarget.dirty && (prDataTarget.errors?.required)">Data target is required</span>
+                      <input type="text" class="form-control" name="DataAsset" [(ngModel)]="currentTableTarget"
+                             #prDataTarget="ngModel" name="prDataTarget" [readonly]="true" required>
+                      <span class="error text-small block "
+                            *ngIf="prDataTarget.dirty && (prDataTarget.errors?.required)">Data target is required</span>
                     </div>
                   </div>
                 </div>
@@ -369,7 +390,9 @@ under the License.
               </div>
               <div style="color:#b2c831">
                 <p>
-                  <i class="fa fa-info-circle"></i> After submitted, please go to "<a class="bark-link" routerLink="/measures">Measures</a>" to check the measure status
+                  <i class="fa fa-info-circle"></i> After submitted, please go to "<a class="bark-link"
+                                                                                      routerLink="/measures">Measures</a>"
+                  to check the measure status
                 </p>
               </div>
             </fieldset>
@@ -385,7 +408,9 @@ under the License.
           </div>
         </div>
       </div>
-      <div class="modal fade" id="confirm" role="dialog" #modal tabindex="-1" [ngClass]="{'in': visibleAnimate}" [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}" (click)="onContainerClicked($event)">
+      <div class="modal fade" id="confirm" role="dialog" #modal tabindex="-1" [ngClass]="{'in': visibleAnimate}"
+           [ngStyle]="{'display': visible ? 'block' : 'none', 'opacity': visibleAnimate ? 1 : 0}"
+           (click)="onContainerClicked($event)">
         <div class="modal-dialog modal-xg modal-lg">
           <div class="modal-content">
             <div class="modal-header">
@@ -522,13 +547,15 @@ under the License.
                   <p>
                     <label style="color:#B2C831">Accuracy Calculation Formula as Below:</label>
                   </p>
-                  <div class="col-md-12 col-lg-12 col-sm-12" style="color:#fff;font-size:16px;display: flex;                align-items: center">
+                  <div class="col-md-12 col-lg-12 col-sm-12"
+                       style="color:#fff;font-size:16px;display: flex;                align-items: center">
                     <div class="" style="text-align:right;display:block;float:left;width:20%;">
                       Accuracy Rate(%) =
                     </div>
                     <div class="" style="text-align:center;display:block;float:left;margin:0 10px 0 10px">
                       <div class="formula-text-up" style="border-bottom:1px solid;">
-                        Total Count of Matched records between <span class="badge">{{selectionTarget.length}}</span> <span style="color:green;">{{currentTableTarget}}</span> and <span class="badge">{{mappings.length}}
+                        Total Count of Matched records between <span class="badge">{{selectionTarget.length}}</span>
+                        <span style="color:green;">{{currentTableTarget}}</span> and <span class="badge">{{mappings.length}}
                           </span> <span style="color:green;">{{currentTable}}</span> fields
                       </div>
                       <div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/ac/ac.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/ac/ac.component.spec.ts b/ui/angular/src/app/measure/create-measure/ac/ac.component.spec.ts
index ee0762d..20f793d 100644
--- a/ui/angular/src/app/measure/create-measure/ac/ac.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/ac/ac.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { AcComponent } from './ac.component';
+import {AcComponent} from './ac.component';
 
 describe('AcComponent', () => {
   let component: AcComponent;
@@ -26,9 +26,9 @@ describe('AcComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ AcComponent ]
+      declarations: [AcComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/ac/ac.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/ac/ac.component.ts b/ui/angular/src/app/measure/create-measure/ac/ac.component.ts
index fd51c22..9492ad8 100644
--- a/ui/angular/src/app/measure/create-measure/ac/ac.component.ts
+++ b/ui/angular/src/app/measure/create-measure/ac/ac.component.ts
@@ -16,16 +16,16 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit, AfterViewChecked, ViewChild } from "@angular/core";
-import { FormControl } from "@angular/forms";
-import { FormsModule, Validator } from "@angular/forms";
-import { ServiceService } from "../../../service/service.service";
-import { TREE_ACTIONS, KEYS, IActionMapping, ITreeOptions } from "angular-tree-component";
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { ToasterModule, ToasterService } from "angular2-toaster";
+import {Component, OnInit, AfterViewChecked, ViewChild} from "@angular/core";
+import {FormControl} from "@angular/forms";
+import {FormsModule, Validator} from "@angular/forms";
+import {ServiceService} from "../../../service/service.service";
+import {TREE_ACTIONS, KEYS, IActionMapping, ITreeOptions} from "angular-tree-component";
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {ToasterModule, ToasterService} from "angular2-toaster";
 import * as $ from "jquery";
-import { Router } from "@angular/router";
-import { HttpClient } from "@angular/common/http";
+import {Router} from "@angular/router";
+import {HttpClient} from "@angular/common/http";
 
 class node {
   name: string;
@@ -36,20 +36,24 @@ class node {
   parent: string;
   location: string;
 }
+
 class Col {
   name: string;
   type: string;
   comment: string;
   selected: boolean;
+
   constructor(name: string, type: string, comment: string, selected: boolean) {
     this.name = name;
     this.type = type;
     this.comment = comment;
     this.selected = false;
   }
+
   getSelected() {
     return this.selected;
   }
+
   setSelected(selected) {
     this.selected = selected;
   }
@@ -325,7 +329,7 @@ export class AcComponent implements OnInit, AfterViewChecked {
     }
   }
 
-  formValidation = function(step) {
+  formValidation = function (step) {
     if (step == undefined) {
       step = this.currentStep;
     }
@@ -350,9 +354,11 @@ export class AcComponent implements OnInit, AfterViewChecked {
   prev(form) {
     this.currentStep--;
   }
+
   goTo(i) {
     this.currentStep = i;
   }
+
   submit(form) {
     // form.$setPristine();
     // this.finalgrp = [];
@@ -469,13 +475,13 @@ export class AcComponent implements OnInit, AfterViewChecked {
     if (!this.tgt_needpath || this.tgt_path == "") {
       this.deletePredicates(1);
     }
-    var mappingRule = function(src, tgt, matches) {
+    var mappingRule = function (src, tgt, matches) {
       var rules;
       rules = "source." + src + matches + "target." + tgt;
       return rules;
     };
     var self = this;
-    var rules = this.mappings.map(function(item, i) {
+    var rules = this.mappings.map(function (item, i) {
       return mappingRule(item, self.selectionTarget[i], self.matches[i]);
     });
     rule = rules.join(" AND ");
@@ -485,11 +491,11 @@ export class AcComponent implements OnInit, AfterViewChecked {
     setTimeout(() => (this.visibleAnimate = true), 100);
   }
 
-  deleteUnit(index){
+  deleteUnit(index) {
     delete this.newMeasure["data.sources"][index]["connectors"][0]["data.unit"];
   }
 
-  deletePredicates(index){
+  deletePredicates(index) {
     delete this.newMeasure["data.sources"][index]["connectors"][0]["predicates"];
   }
 
@@ -504,7 +510,7 @@ export class AcComponent implements OnInit, AfterViewChecked {
       },
       err => {
         let response = JSON.parse(err.error);
-        if(response.code === '40901'){
+        if (response.code === '40901') {
           this.toasterService.pop("error", "Error!", "Measure name already exists!");
         } else {
           this.toasterService.pop("error", "Error!", "Error when creating measure");
@@ -585,6 +591,7 @@ export class AcComponent implements OnInit, AfterViewChecked {
 
   nodeList: object[];
   nodeListTarget: object[];
+
   constructor(
     toasterService: ToasterService,
     private http: HttpClient,
@@ -637,9 +644,9 @@ export class AcComponent implements OnInit, AfterViewChecked {
     });
     $("fieldset").height(
       $(stepSelection).height() -
-        $(stepSelection + ">.stepDesc").height() -
-        $(".btn-container").height() -
-        130
+      $(stepSelection + ">.stepDesc").height() -
+      $(".btn-container").height() -
+      130
     );
     $(".y-scrollable").css({
       // 'max-height': $('fieldset').height()- $('.add-dataset').outerHeight()

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/configuration/configuration.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/configuration/configuration.component.html b/ui/angular/src/app/measure/create-measure/configuration/configuration.component.html
index 9f4a926..713017b 100644
--- a/ui/angular/src/app/measure/create-measure/configuration/configuration.component.html
+++ b/ui/angular/src/app/measure/create-measure/configuration/configuration.component.html
@@ -22,7 +22,8 @@ under the License.
       Where:
     </label>
     <div class="col-md-10 col-lg-10 col-sm-10 ">
-      <input type="text" class="form-control" id="where" name="where" placeholder=" dt=#YYYYMMdd# AND hour=#HH#" [(ngModel)]="where" (change)="upward()">
+      <input type="text" class="form-control" id="where" name="where" placeholder=" dt=#YYYYMMdd# AND hour=#HH#"
+             [(ngModel)]="where" (change)="upward()">
     </div>
   </div>
 </div>
@@ -66,6 +67,7 @@ under the License.
     please write the Done file path relative to {{location}}
   </div>
   <div style="margin-left:45px">
-    <input type="text" class="form-control" id="path" [(ngModel)]="path" name="filepath" (change)="upward()" placeholder="/dt=#YYYYMMdd#/hour=#HH#/_DONE">
+    <input type="text" class="form-control" id="path" [(ngModel)]="path" name="filepath" (change)="upward()"
+           placeholder="/dt=#YYYYMMdd#/hour=#HH#/_DONE">
   </div>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/configuration/configuration.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/configuration/configuration.component.spec.ts b/ui/angular/src/app/measure/create-measure/configuration/configuration.component.spec.ts
index a16f934..20262a2 100644
--- a/ui/angular/src/app/measure/create-measure/configuration/configuration.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/configuration/configuration.component.spec.ts
@@ -17,9 +17,9 @@ specific language governing permissions and limitations
 under the License.
 */
 
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { ConfigurationComponent } from './configuration.component';
+import {ConfigurationComponent} from './configuration.component';
 
 describe('ConfigurationComponent', () => {
   let component: ConfigurationComponent;
@@ -27,9 +27,9 @@ describe('ConfigurationComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ ConfigurationComponent ]
+      declarations: [ConfigurationComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/configuration/configuration.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/configuration/configuration.component.ts b/ui/angular/src/app/measure/create-measure/configuration/configuration.component.ts
index 5d0fac4..ff86f99 100644
--- a/ui/angular/src/app/measure/create-measure/configuration/configuration.component.ts
+++ b/ui/angular/src/app/measure/create-measure/configuration/configuration.component.ts
@@ -17,7 +17,7 @@ specific language governing permissions and limitations
 under the License.
 */
 
-import { Component, OnInit, EventEmitter, Input, Output } from "@angular/core";
+import {Component, OnInit, EventEmitter, Input, Output} from "@angular/core";
 import * as $ from "jquery";
 
 @Component({
@@ -38,7 +38,9 @@ export class ConfigurationComponent implements OnInit {
   };
   @Input() location: string;
 
-  constructor() {}
+  constructor() {
+  }
+
   num: number;
   path: string;
   where: string;
@@ -117,4 +119,4 @@ export class ConfigurationComponent implements OnInit {
     this.needpath = this.data.needpath;
     this.path = this.data.path;
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/create-measure.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/create-measure.component.css b/ui/angular/src/app/measure/create-measure/create-measure.component.css
index af70368..ad67a18 100644
--- a/ui/angular/src/app/measure/create-measure/create-measure.component.css
+++ b/ui/angular/src/app/measure/create-measure/create-measure.component.css
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../../../node_modules/angular2-toaster/toaster.css');
 @import url('../measure.component.css');
 
@@ -45,19 +44,19 @@ div.tree div.tree-children::before {
   left: 5px
 }
 
-div.tree treenode>div>.node-wrapper {
+div.tree treenode > div > .node-wrapper {
   margin-left: 24px
 }
 
-div.tree treenode>div>.node-wrapper>.node-content-wrapper {
+div.tree treenode > div > .node-wrapper > .node-content-wrapper {
   margin-left: 4px
 }
 
-div.tree treenode>div.tree-node-leaf>.node-wrapper {
+div.tree treenode > div.tree-node-leaf > .node-wrapper {
   margin-left: 0
 }
 
-div.tree treenode>div::before {
+div.tree treenode > div::before {
   content: "";
   position: absolute;
   border-bottom: 1px dotted #23527c;
@@ -66,7 +65,7 @@ div.tree treenode>div::before {
   left: 7px
 }
 
-div.tree treenode>div .toggle-children-wrapper {
+div.tree treenode > div .toggle-children-wrapper {
   width: 13px;
   height: 13px;
   border: 1px solid #23527c;
@@ -79,7 +78,7 @@ div.tree treenode>div .toggle-children-wrapper {
   z-index: 1
 }
 
-div.tree treenode>div .toggle-children-wrapper::before {
+div.tree treenode > div .toggle-children-wrapper::before {
   content: "";
   display: inline-block;
   width: 7px;
@@ -89,7 +88,7 @@ div.tree treenode>div .toggle-children-wrapper::before {
   left: 2px
 }
 
-div.tree treenode>div .toggle-children-wrapper.toggle-children-wrapper-collapsed::after {
+div.tree treenode > div .toggle-children-wrapper.toggle-children-wrapper-collapsed::after {
   content: "";
   display: inline-block;
   height: 7px;
@@ -99,19 +98,19 @@ div.tree treenode>div .toggle-children-wrapper.toggle-children-wrapper-collapsed
   left: 5px
 }
 
-div.tree treenode>div .toggle-children-wrapper .toggle-children {
+div.tree treenode > div .toggle-children-wrapper .toggle-children {
   display: none
 }
 
-div.tree treenode>div .node-content-wrapper {
+div.tree treenode > div .node-content-wrapper {
   margin-left: 4px
 }
 
-div.tree>treenode>div::before {
+div.tree > treenode > div::before {
   left: 14px
 }
 
-div.tree>treenode>div>.node-wrapper>treenodeexpander>.toggle-children-wrapper {
+div.tree > treenode > div > .node-wrapper > treenodeexpander > .toggle-children-wrapper {
   left: 22px
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/create-measure.component.html
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/create-measure.component.html b/ui/angular/src/app/measure/create-measure/create-measure.component.html
index 5cbbd42..22ff6b6 100644
--- a/ui/angular/src/app/measure/create-measure/create-measure.component.html
+++ b/ui/angular/src/app/measure/create-measure/create-measure.component.html
@@ -22,164 +22,168 @@ under the License.
   </div>
   <div class="row">
     <div class="row">
-    <div class="col-lg-6 col-md-6 col-sm-6 ruletypes">
-      <section id="panel-1" class="panel panel-red" style="cursor:pointer" (click)="click('ac')">
-        <div class="panel-heading">
-          <span style="font-size:20px">Accuracy</span>
-          <span class="pull-right" style="font-size:20px">
+      <div class="col-lg-6 col-md-6 col-sm-6 ruletypes">
+        <section id="panel-1" class="panel panel-red" style="cursor:pointer" (click)="click('ac')">
+          <div class="panel-heading">
+            <span style="font-size:20px">Accuracy</span>
+            <span class="pull-right" style="font-size:20px">
                 <span class="fa fa-arrow-circle-right" (click)="click('ac')"></span>
           </span>
-        </div>
-        <div class="swMain panel-body">
-          <label class="label-definition">Definition: Measured by how the values agree with an identified source of truth</label>
-          <ul style="border-radius:0; background: none">
-            <li>
-              <a class="selected">
-                <div class="stepNumber">
-                  1
-                </div>
-                <span class="stepDesc text-small"> Choose Source </span>
-              </a>
-            </li>
-            <li>
-              <a>
-                <div class="stepNumber">
-                  2
-                </div>
-                <span class="stepDesc text-small"> Choose Target </span>
-              </a>
-            </li>
-            <li>
-              <a>
-                <div class="stepNumber">
-                  3
-                </div>
-                <span class="stepDesc text-small"> Mapping Source and Target </span>
-              </a>
-            </li>
-            <li>
-              <a>
-                <div class="stepNumber">
-                  4
-                </div>
-                <span class="stepDesc text-small"> Partition Configuration </span>
-              </a>
-            </li>
-            <li>
-              <a>
-                <div class="stepNumber">
-                  5
-                </div>
-                <span class="stepDesc text-small"> Configuration </span>
-              </a>
-            </li>
-          </ul>
-          <div>
-            <ol>
-              <li>Select the source dataset and fields which will be used for comparision</li>
-              <li>Select the target dataset and fields which will be used for comparision</li>
-              <li>Mapping the target fields with source</li>
-              <li>Set partition configuration for source dataset and target dataset</li>
-              <li>Set basic configuration for your model (name, system, threshold, etc.)</li>
-            </ol>
           </div>
-        </div>
-        <div class="panel-footer stepDesc">
-          <label>Example:</label> suppose source table A has 1000 records and target table B only has 999 records pefectly matched with A for selected fields, then Accuracy Rate(%) = 999/1000 * 100% = 99.9%
-        </div>
-      </section>
-    </div>
-    <div class="col-lg-6 col-md-6 col-sm-6 ruletypes">
-      <section id="panel-2" class="panel panel-primary" (click)="click('pr')">
-        <div class="panel-heading">
-          <span style="font-size:20px">Data Profiling</span>
-          <span class="pull-right" style="font-size:20px">
+          <div class="swMain panel-body">
+            <label class="label-definition">Definition: Measured by how the values agree with an identified source of
+              truth</label>
+            <ul style="border-radius:0; background: none">
+              <li>
+                <a class="selected">
+                  <div class="stepNumber">
+                    1
+                  </div>
+                  <span class="stepDesc text-small"> Choose Source </span>
+                </a>
+              </li>
+              <li>
+                <a>
+                  <div class="stepNumber">
+                    2
+                  </div>
+                  <span class="stepDesc text-small"> Choose Target </span>
+                </a>
+              </li>
+              <li>
+                <a>
+                  <div class="stepNumber">
+                    3
+                  </div>
+                  <span class="stepDesc text-small"> Mapping Source and Target </span>
+                </a>
+              </li>
+              <li>
+                <a>
+                  <div class="stepNumber">
+                    4
+                  </div>
+                  <span class="stepDesc text-small"> Partition Configuration </span>
+                </a>
+              </li>
+              <li>
+                <a>
+                  <div class="stepNumber">
+                    5
+                  </div>
+                  <span class="stepDesc text-small"> Configuration </span>
+                </a>
+              </li>
+            </ul>
+            <div>
+              <ol>
+                <li>Select the source dataset and fields which will be used for comparision</li>
+                <li>Select the target dataset and fields which will be used for comparision</li>
+                <li>Mapping the target fields with source</li>
+                <li>Set partition configuration for source dataset and target dataset</li>
+                <li>Set basic configuration for your model (name, system, threshold, etc.)</li>
+              </ol>
+            </div>
+          </div>
+          <div class="panel-footer stepDesc">
+            <label>Example:</label> suppose source table A has 1000 records and target table B only has 999 records
+            pefectly matched with A for selected fields, then Accuracy Rate(%) = 999/1000 * 100% = 99.9%
+          </div>
+        </section>
+      </div>
+      <div class="col-lg-6 col-md-6 col-sm-6 ruletypes">
+        <section id="panel-2" class="panel panel-primary" (click)="click('pr')">
+          <div class="panel-heading">
+            <span style="font-size:20px">Data Profiling</span>
+            <span class="pull-right" style="font-size:20px">
                   <span class="fa fa-arrow-circle-right"></span>
           </span>
-        </div>
-        <div class="swMain panel-body">
-          <label class="label-definition">Definition: Data profiling is the process of examining the data available in an existing data set and collecting statistics and information about that data</label>
-          <ul style="border-radius:0; background: none">
-            <li>
-              <a class="selected" style="cursor:default">
-                <div class="stepNumber">
-                  1
-                </div>
-                <span class="stepDesc text-small"> Choose Target </span>
-              </a>
-            </li>
-            <li>
-              <a style="cursor:default">
-                <div class="stepNumber">
-                  2
-                </div>
-                <span class="stepDesc text-small">Define/Select Models </span>
-              </a>
-            </li>
-            <li>
-              <a style="cursor:default">
-                <div class="stepNumber">
-                  3
-                </div>
-                <span class="stepDesc text-small"> Partition Configuration </span>
-              </a>
-            </li>
-            <li>
-              <a style="cursor:default">
-                <div class="stepNumber">
-                  4
-                </div>
-                <span class="stepDesc text-small"> Configuration </span>
-              </a>
-            </li>
-          </ul>
-          <div>
-            <ol>
-              <li>Select the target dataset and fields which want to be checked</li>
-              <li>Define your syntax check logic which will be applied on the selected fields</li>
-              <li>Set partition configuration for target dataset</li>
-              <li>Set basic configuration for your model(name, system, threshold, etc.)</li>
-            </ol>
           </div>
-        </div>
-        <div class="panel-footer stepDesc">
-          <label>Example:</label> Check the data range(minimum, maximum) within a set of allowable values
-        </div>
-      </section>
+          <div class="swMain panel-body">
+            <label class="label-definition">Definition: Data profiling is the process of examining the data available in
+              an existing data set and collecting statistics and information about that data</label>
+            <ul style="border-radius:0; background: none">
+              <li>
+                <a class="selected" style="cursor:default">
+                  <div class="stepNumber">
+                    1
+                  </div>
+                  <span class="stepDesc text-small"> Choose Target </span>
+                </a>
+              </li>
+              <li>
+                <a style="cursor:default">
+                  <div class="stepNumber">
+                    2
+                  </div>
+                  <span class="stepDesc text-small">Define/Select Models </span>
+                </a>
+              </li>
+              <li>
+                <a style="cursor:default">
+                  <div class="stepNumber">
+                    3
+                  </div>
+                  <span class="stepDesc text-small"> Partition Configuration </span>
+                </a>
+              </li>
+              <li>
+                <a style="cursor:default">
+                  <div class="stepNumber">
+                    4
+                  </div>
+                  <span class="stepDesc text-small"> Configuration </span>
+                </a>
+              </li>
+            </ul>
+            <div>
+              <ol>
+                <li>Select the target dataset and fields which want to be checked</li>
+                <li>Define your syntax check logic which will be applied on the selected fields</li>
+                <li>Set partition configuration for target dataset</li>
+                <li>Set basic configuration for your model(name, system, threshold, etc.)</li>
+              </ol>
+            </div>
+          </div>
+          <div class="panel-footer stepDesc">
+            <label>Example:</label> Check the data range(minimum, maximum) within a set of allowable values
+          </div>
+        </section>
+      </div>
     </div>
-  </div>
-  <div class="row">
-    <div class="col-lg-6 col-md-6 col-sm-6 ruletypes">
-      <section id="panel-3" class="panel panel-green" (click)="click('pub')">
-        <div class="panel-heading">
-          <span style="font-size:20px">Publish</span>
-          <span class="pull-right" style="font-size:20px">
+    <div class="row">
+      <div class="col-lg-6 col-md-6 col-sm-6 ruletypes">
+        <section id="panel-3" class="panel panel-green" (click)="click('pub')">
+          <div class="panel-heading">
+            <span style="font-size:20px">Publish</span>
+            <span class="pull-right" style="font-size:20px">
                   <span class="fa fa-arrow-circle-right"></span>
           </span>
-        </div>
-        <div class="swMain panel-body">
-          <label class="label-definition">Definition: Publish is the process of storing user's own quality data and visualizing it</label>
-          <ul style="border-radius:0; background: none">            
-            <li>
-              <div class="selected1child" style="cursor:default">
-                <div class="stepNumber">
-                  1
+          </div>
+          <div class="swMain panel-body">
+            <label class="label-definition">Definition: Publish is the process of storing user's own quality data and
+              visualizing it</label>
+            <ul style="border-radius:0; background: none">
+              <li>
+                <div class="selected1child" style="cursor:default">
+                  <div class="stepNumber">
+                    1
+                  </div>
+                  <span class="stepDesc text-small"> Configuration </span>
                 </div>
-                <span class="stepDesc text-small"> Configuration </span>
-              </div>
-            </li>
-          </ul>
-          <div>
-            <ol>              
-              <li>Set basic configuration for your model(name, system, threshold, etc.)</li>
-            </ol>
+              </li>
+            </ul>
+            <div>
+              <ol>
+                <li>Set basic configuration for your model(name, system, threshold, etc.)</li>
+              </ol>
+            </div>
           </div>
-        </div>
-        <div class="panel-footer stepDesc">
-          <label>Example: any data</label> ...
-        </div>
-      </section>
+          <div class="panel-footer stepDesc">
+            <label>Example: any data</label> ...
+          </div>
+        </section>
+      </div>
     </div>
   </div>
 </div>
-</div>

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/create-measure.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/create-measure.component.spec.ts b/ui/angular/src/app/measure/create-measure/create-measure.component.spec.ts
index 6e073a3..d6079c2 100644
--- a/ui/angular/src/app/measure/create-measure/create-measure.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/create-measure.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { CreateMeasureComponent } from './create-measure.component';
+import {CreateMeasureComponent} from './create-measure.component';
 
 describe('CreateMeasureComponent', () => {
   let component: CreateMeasureComponent;
@@ -26,9 +26,9 @@ describe('CreateMeasureComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ CreateMeasureComponent ]
+      declarations: [CreateMeasureComponent]
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/create-measure.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/create-measure.component.ts b/ui/angular/src/app/measure/create-measure/create-measure.component.ts
index 9166e22..bd7071d 100644
--- a/ui/angular/src/app/measure/create-measure/create-measure.component.ts
+++ b/ui/angular/src/app/measure/create-measure/create-measure.component.ts
@@ -16,16 +16,16 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { Component, OnInit, AfterViewInit } from "@angular/core";
-import { FormControl } from "@angular/forms";
-import { FormsModule } from "@angular/forms";
+import {Component, OnInit, AfterViewInit} from "@angular/core";
+import {FormControl} from "@angular/forms";
+import {FormsModule} from "@angular/forms";
 
-import { TREE_ACTIONS, KEYS, IActionMapping, ITreeOptions } from "angular-tree-component";
-import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { ToasterModule, ToasterService, ToasterConfig } from "angular2-toaster";
+import {TREE_ACTIONS, KEYS, IActionMapping, ITreeOptions} from "angular-tree-component";
+import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
+import {ToasterModule, ToasterService, ToasterConfig} from "angular2-toaster";
 import * as $ from "jquery";
-import { HttpService } from '../../service/http.service';
-import { Router } from "@angular/router";
+import {HttpService} from '../../service/http.service';
+import {Router} from "@angular/router";
 
 @Component({
   selector: "app-create-measure",
@@ -33,23 +33,25 @@ import { Router } from "@angular/router";
   styleUrls: ["./create-measure.component.css"]
 })
 export class CreateMeasureComponent implements AfterViewInit {
-  constructor(private router: Router) {}
+  constructor(private router: Router) {
+  }
 
   click(type) {
     this.router.navigate(["/createmeasure" + type]);
   }
+
   ngAfterViewInit() {
     $("#panel-2 >.panel-body").css({
       height:
-        $("#panel-1 >.panel-body").outerHeight() +
-        $("#panel-1 >.panel-footer").outerHeight() -
-        $("#panel-2 >.panel-footer").outerHeight()
+      $("#panel-1 >.panel-body").outerHeight() +
+      $("#panel-1 >.panel-footer").outerHeight() -
+      $("#panel-2 >.panel-footer").outerHeight()
     });
     $("#panel-4 >.panel-body").css({
       height:
-        $("#panel-3 >.panel-body").outerHeight() +
-        $("#panel-3 >.panel-footer").outerHeight() -
-        $("#panel-4 >.panel-footer").outerHeight()
+      $("#panel-3 >.panel-body").outerHeight() +
+      $("#panel-3 >.panel-footer").outerHeight() -
+      $("#panel-4 >.panel-footer").outerHeight()
     });
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.spec.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.spec.ts b/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.spec.ts
index dddc650..d5245d8 100644
--- a/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.spec.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.spec.ts
@@ -16,9 +16,9 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import {async, ComponentFixture, TestBed} from '@angular/core/testing';
 
-import { PrConfirmModal } from './confirmModal.component';
+import {PrConfirmModal} from './confirmModal.component';
 
 describe('PrConfirmModalComponent', () => {
   let component: PrConfirmModal;
@@ -26,7 +26,7 @@ describe('PrConfirmModalComponent', () => {
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PrConfirmModal ]
+      declarations: [PrConfirmModal]
     })
       .compileComponents();
   }));

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.ts
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.ts b/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.ts
index d19022c..5ab2010 100644
--- a/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.ts
+++ b/ui/angular/src/app/measure/create-measure/pr/confirmModal/confirmModal.component.ts
@@ -34,7 +34,8 @@ export class PrConfirmModal {
   @Output() hide: EventEmitter<Object> = new EventEmitter<Object>();
   @Output() saveMeasure: EventEmitter<Object> = new EventEmitter<Object>();
 
-  constructor() {}
+  constructor() {
+  }
 
   hideModal() {
     this.hide.emit();

http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/b306d872/ui/angular/src/app/measure/create-measure/pr/pr.component.css
----------------------------------------------------------------------
diff --git a/ui/angular/src/app/measure/create-measure/pr/pr.component.css b/ui/angular/src/app/measure/create-measure/pr/pr.component.css
index 8217c9c..1e1d728 100644
--- a/ui/angular/src/app/measure/create-measure/pr/pr.component.css
+++ b/ui/angular/src/app/measure/create-measure/pr/pr.component.css
@@ -16,7 +16,6 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-
 @import url('../../../../../node_modules/angular2-toaster/toaster.css');
 @import url('../../measure.component.css');