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:41 UTC

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

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');