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}} {{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}} : {{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>
-
- <a (click)="remove(row)" title="delete" style="text-decoration:none">
- <i class="fa fa-trash-o po"></i>
- </a>
- <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>
+
+ <a (click)="remove(row)" title="delete" style="text-decoration:none">
+ <i class="fa fa-trash-o po"></i>
+ </a>
+ <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" > DQ Metrics</a></span>
+ <span><a routerLink="/metrics"> 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>
-
+
<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 <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 <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 +
- " > </span>",
+ info.data.sysName +
+ " > </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()">×</button>
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="hide()">×
+ </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()">×</button>
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="hide()">×
+ </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">--/--/-- --:--</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">--/--/-- --:--</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>
-
- <a (click)="remove(row)" title="delete" style="text-decoration:none">
- <i class="fa fa-trash-o po"></i>
- </a>
- <a routerLink="/job/{{row.id}}" title="subscribe">
- <i class="fa fa-eye"></i>
- </a>
- <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>
-
- <a (click)="show(row)">
- <i class="fa fa-bar-chart po"></i>
- </a>
- </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>
+
+ <a (click)="remove(row)" title="delete" style="text-decoration:none">
+ <i class="fa fa-trash-o po"></i>
+ </a>
+ <a routerLink="/job/{{row.id}}" title="subscribe">
+ <i class="fa fa-eye"></i>
+ </a>
+ <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>
+
+ <a (click)="show(row)">
+ <i class="fa fa-bar-chart po"></i>
+ </a>
+ </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');