You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by rm...@apache.org on 2017/04/11 13:51:21 UTC
[10/12] incubator-metron git commit: METRON-623 Management UI
[contributed by Raghu Mitra Kandikonda and Ryan Merriman] closes
apache/incubator-metron#489
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/global.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/global.scss b/metron-interface/metron-config/src/app/global.scss
new file mode 100644
index 0000000..8b64cab
--- /dev/null
+++ b/metron-interface/metron-config/src/app/global.scss
@@ -0,0 +1,594 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@import "_variables.scss";
+@import "_main.scss";
+
+$height: 60px;
+
+html,body
+{
+ height:100%;
+ background-color: $gray-dark;
+ color: $text-color-white;
+ font-family: "Roboto";
+}
+
+.header
+{
+ height: $height;
+}
+
+.body-fill
+{
+ height: -webkit-calc(100% - 60px);
+ height: calc(100% - 60px);
+ min-height: -webkit-calc(100% - 60px);
+ min-height: calc(100% - 60px);
+}
+
+.fill
+{
+ min-height: 100%;
+ height: 100%;
+}
+
+.metron-bg-inverse
+{
+ background-color: $gray-dark;
+}
+
+.btn
+{
+ font-size: 0.9em;
+}
+
+.metron-title
+{
+ font-family: Roboto-Medium;
+ font-size: 14px;
+ font-weight: 500;
+ color: $text-color-white;
+}
+
+table, .table
+{
+ margin-top: 0.5rem;
+
+ thead {
+ th {
+ font-family: Roboto-Regular;
+ font-size: 11px;
+ color: $text-color-white;
+ border-top: hidden !important;
+ border-bottom: 2px solid #404040 !important;
+ }
+ }
+ tr
+ {
+ font-family: Roboto-Regular;
+ font-size: 12px;
+ letter-spacing: 0.1px;
+ color: $table-cell-text-color;
+ td:first-child
+ {
+ color: $text-color-white;
+ }
+ td
+ {
+ border-bottom: 1px solid #404040 !important;
+ }
+ }
+ .active
+ {
+ background: $edit-background;
+ border-left: 1px solid $edit-background-border;
+ border-right: 1px solid $edit-background-border;
+ td
+ {
+ border-top: 1px solid $edit-background-border !important;
+ border-bottom: 1px solid $edit-background-border;
+ }
+ }
+}
+
+input:-webkit-autofill {
+ -webkit-box-shadow: 0 0 0px 100px $field-background inset;
+ -webkit-text-fill-color: $form-field-text-color !important;
+ background-color: $field-background !important;
+ }
+
+.table
+{
+ thead
+ {
+ th
+ {
+ padding: 0.60em;
+ }
+ }
+ tr
+ {
+ td
+ {
+ padding: 0.60em;
+ }
+ }
+}
+
+.form-table {
+ background: $field-background;
+}
+
+.metron-add-button
+{
+ position: fixed;
+ right: 50px;
+ bottom: 37px;
+ background: none;
+ border:none;
+ cursor: pointer;
+
+ &:focus
+ {
+ outline: none;
+ }
+
+ i
+ {
+ color: #ffffff;
+ }
+}
+
+.metron-slider-pane
+{
+ background-color: $gray-light;
+ border: solid 1px $gray-border;
+ height: auto;
+ display: inline-block;
+ vertical-align:top;
+ float: right;
+ padding: 15px 20px 0px 25px;
+ word-wrap: break-word;
+
+ .close-button
+ {
+ font-size: 26px;
+ cursor: pointer;
+ }
+}
+
+.dialog1x
+{
+ width: 320px;
+}
+
+.dialog2x
+{
+ width :640px
+}
+
+//.metron-slider-pane-edit
+//{
+// @extend .metron-slider-pane;
+// background: $edit-background;
+// border: 1px solid $edit-background-border;
+//}
+//
+//.metron-slider-pane-edit-child
+//{
+// @extend .metron-slider-pane-edit;
+// background-color: #083b44;
+//}
+
+form
+{
+ label
+ {
+ font-family: Roboto-Medium;
+ font-size: 12px;
+ //letter-spacing: -0.8px;
+ color: $form-label;
+ }
+
+ input
+ {
+ background: $form-input-background;
+ }
+}
+
+.form-label
+{
+ font-family: Roboto-Medium;
+ font-size: 12px;
+ //letter-spacing: -0.8px;
+ color: $form-label
+}
+
+.form-value
+{
+ font-family: Roboto;
+ font-size: 14px;
+ color: $form-field-text-color;
+
+}
+
+.form-title
+{
+ font-family: Roboto-Medium;
+ font-size: 18px;
+ color: $form-field-text-color;
+ display: inline-block;
+}
+
+.form-title-subscript
+{
+ font-family: Roboto-Medium;
+ font-size: 12px;
+ color: $title-subscript-color;
+}
+
+.form-seperator
+{
+ border: solid 1px $form-field-separator-color;
+ margin: 10px 0px 10px 0px;
+}
+
+.form-seperator-edit
+{
+ border: solid 1px $edit-background-border;
+ margin: 10px 0px 10px 0px;
+}
+
+.form-edit-button
+{
+ color: $field-button-color;
+ padding-left: 5px;
+ cursor: pointer;
+}
+
+.form-enable-disable-button
+{
+ background-color: $gray-light;
+ border-color: $form-button-border;
+ color: $field-button-color;
+ font-size: 14px;
+
+ &:hover
+ {
+
+ }
+
+ &:focus
+ {
+ outline: none;
+ }
+}
+
+
+.form-control, select
+{
+ border: solid 1px $gray-border;
+ background-color: $field-background;
+ font-family: Roboto;
+ font-size: 13px;
+ color: $form-field-text-color;
+ height: 35px;
+
+ &[readonly]
+ {
+ background: $form-field-separator-color;
+ border: 1px solid $gray-border;
+ }
+
+ &:focus
+ {
+ background-color: $field-background;
+ border-color: $gray-border;
+ }
+}
+
+.input-group button
+{
+ border: solid 1px $gray-border;
+ background: $field-background;
+ border-left: none;
+ font-size: 14px;
+
+ &:focus
+ {
+ outline: none;
+ }
+
+ &[readonly]
+ {
+ background: $form-field-separator-color;
+ border: 1px solid $gray-border;
+ }
+}
+
+@mixin keyframes($animation-name, $start) {
+ @-webkit-keyframes #{$animation-name} {
+ 0% {
+ --webkit-transform: translateX(#{$start});
+ }
+ 100% {
+ -webkit-transform: translateX(0);
+ }
+ }
+ @-moz-keyframes #{$animation-name} {
+ 0% {
+ -moz-transform: translateX(#{$start});
+ }
+ 100% {
+ -moz-transform: translateX(0);
+ }
+ }
+ @-ms-keyframes #{$animation-name} {
+ 0% {
+ -ms-transform: translateX(#{$start});
+ }
+ 100% {
+ -ms-transform: translateX(0);
+ }
+ }
+ @-o-keyframes #{$animation-name} {
+ 0% {
+ -o-transform: translateX(#{$start});
+ }
+ 100% {
+ -o-transform: translateX(0);
+ }
+ }
+ @keyframes #{$animation-name} {
+ 0% {
+ transform: translateX(#{$start});
+ }
+ 100% {
+ transform: translateX(0);
+ }
+ }
+}
+
+@mixin keyframesWidth($animation-name) {
+ @-webkit-keyframes #{$animation-name} {
+ @content
+ }
+ @-moz-keyframes #{$animation-name} {
+ @content
+ }
+ @-ms-keyframes #{$animation-name} {
+ @content
+ }
+ @-o-keyframes #{$animation-name} {
+ @content
+ }
+ @keyframes #{$animation-name} {
+ @content
+ }
+}
+
+@mixin animation($name, $duration, $function)
+{
+ -moz-animation: #{$name} #{$duration} #{$function};
+ -webkit-animation: #{$name} #{$duration} #{$function};
+ animation: #{$name} #{$duration} #{$function};
+}
+
+@include keyframes("keyframe-dialog-rtl", "320px")
+
+.load-right-to-left{
+ @include animation("keyframe-dialog-rtl", "0.5s", "linear")
+}
+
+//@include keyframes("keyframe-dialog-ltr", "320px")
+
+@include keyframesWidth("keyframe-dialog-width")
+{
+ 0% { margin-right: -640px; }
+ 100% { margin-right: 0px; }
+}
+
+.load-left-to-right {
+ @include animation("keyframe-dialog-width", "0.5s", "ease-in-out")
+}
+
+.btn-primary
+{
+ background-color: $form-button-border;
+ border-color: $form-button-border;
+ &:hover, &:active, &:focus
+ {
+ background-color: $form-button-border;
+ border-color: $form-button-border;
+ }
+}
+
+.open > .btn-primary.dropdown-toggle
+{
+ &:hover, &:active, &:focus
+ {
+ background-color: $form-button-border;
+ border-color: $form-button-border;
+ }
+}
+
+.fontawesome-checkbox
+{
+ display: none;
+}
+
+.fontawesome-checkbox ~label
+{
+ margin: 0px;
+ display: inline-block;
+ height: 13px;
+ line-height: 13px;
+ border: 1px solid $gray-border;
+ border-radius: 2px;
+}
+
+.fontawesome-checkbox ~label:before {
+ font-family: "FontAwesome";
+ font-style: normal;
+ font-size: 12px;
+ content: '\f0c8';
+ color: $gray-light;
+}
+
+.fontawesome-checkbox:checked ~ label:before {
+ content: '\f14a';
+ color: $nav-active-color;
+}
+
+.hexa-button
+{
+ display: inline-block;
+ text-align: center;
+ z-index: 0;
+ line-height: 0.7em;
+ font-size: 30px;
+ height: 28px;
+ width: 49px;
+ background: $form-button-border;
+
+ &::before, &::after
+ {
+ position: absolute;
+ content: "";
+ left: 0px;
+ top: 0;
+ z-index: -1;
+ height: 28px;
+ width: 49px;
+ background: $form-button-border;
+ }
+ &::before
+ {
+ @include transform(rotate(60deg));
+ }
+ &::after
+ {
+ @include transform(rotate(-60deg));
+ }
+}
+
+.warning-text
+{
+ color: $warning-color;
+}
+
+.icon-container
+{
+ width: 100px;
+ i
+ {
+ color: #33a6dd;
+ padding: 0px 2px;
+ cursor: pointer;
+ }
+}
+
+.dropdown-item
+{
+ cursor: pointer;
+ color: #818a91;
+
+ &:focus, &:hover
+ {
+ background-color: $edit-background-border ;
+ }
+}
+
+a.blue-label
+{
+ color: #33a6dd;
+ font-size: 14px;
+ text-decoration: none ;
+}
+
+.input-placeholder {
+ font-size: 11px;
+ font-style: italic;
+ color:#999999;
+}
+
+.popover
+{
+ border: 1px solid #195d68;
+ //background-color: #0b4451;
+ background-color:#195d68;
+}
+
+.popover-title
+{
+ color: #bdbdbd;
+ background-color:#195d68;
+ border-color: #195d68;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+
+.popover-content {
+ background-color: #404040;
+ padding: 9px 14px;
+ color: #bdbdbd;
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ white-space:pre-wrap;
+}
+
+.metron-dialog.modal {
+ .modal-content {
+ background-color: $gray-light;
+ border: solid 1px $gray-border;
+ }
+
+ .close {
+ color: #BDBDBD;
+ text-shadow: 0 1px 0 $silver-color;
+ opacity: 1;
+ font-size: 28px;
+ }
+
+ .modal-title {
+ color: $silver-color;
+ font-size: 18px;
+ }
+
+ .modal-body {
+ color: $dusty-grey;
+ }
+
+ .modal-header {
+ border-bottom: none;
+ }
+
+ .modal-footer
+ {
+ text-align: left;
+ border-top: none;
+ }
+}
+
+button
+{
+ i
+ {
+ color: $text-color-white;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/index.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/index.ts b/metron-interface/metron-config/src/app/index.ts
new file mode 100644
index 0000000..1639c33
--- /dev/null
+++ b/metron-interface/metron-config/src/app/index.ts
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export * from './environment';
+export * from './app.component';
+export * from './app.routes';
+export * from './app.config';
+export * from './app.config.interface';
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/login/login.component.html
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/login/login.component.html b/metron-interface/metron-config/src/app/login/login.component.html
new file mode 100644
index 0000000..dcd5c34
--- /dev/null
+++ b/metron-interface/metron-config/src/app/login/login.component.html
@@ -0,0 +1,28 @@
+<!--
+ Licensed to the Apache Software
+ Foundation (ASF) under one or more contributor license agreements. See the
+ NOTICE file distributed with this work for additional information regarding
+ copyright ownership. The ASF licenses this file to You under the Apache License,
+ Version 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the License.
+ -->
+<div class="fill login-pane" style="">
+ <form (ngSubmit)="login()" class="login-card">
+ <img class="logo-img-card" src="assets/images/logo.png"/>
+ <label class="label"> USERNAME </label>
+ <input class="form-control" name="user" [(ngModel)]="user" required autofocus>
+ <label class="label"> PASSWORD </label>
+ <input type="password" name="password" class="form-control" [(ngModel)]="password" required>
+ <div class="my-1" style="color:#a94442">
+ {{loginFailure}}
+ <button class="btn btn-primary pull-right" type="submit" (click)="login()">LOG IN</button>
+ </div>
+ </form>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/login/login.component.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/login/login.component.scss b/metron-interface/metron-config/src/app/login/login.component.scss
new file mode 100644
index 0000000..8289a2f
--- /dev/null
+++ b/metron-interface/metron-config/src/app/login/login.component.scss
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@import "../_variables.scss";
+
+.login-pane {
+ background: url(/assets/images/login.jpg);
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+}
+
+.label
+{
+ font-size: 0.8em;
+ color: $login-label;
+}
+
+.login-card
+{
+ top: 25%;
+ height: 380px;
+ width: 480px;
+ opacity: 0.8;
+ margin: 0 auto;
+ border: none;
+ padding: 20px 25px 30px;
+ background-color: $black;
+ display: block;
+ position: relative;
+}
+
+.logo-img-card
+{
+ margin: 0 auto 10px;
+ display: block;
+ width: 390px;
+ height: 120px;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/login/login.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/login/login.component.spec.ts b/metron-interface/metron-config/src/app/login/login.component.spec.ts
new file mode 100644
index 0000000..0cf3554
--- /dev/null
+++ b/metron-interface/metron-config/src/app/login/login.component.spec.ts
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {async, inject, TestBed} from '@angular/core/testing';
+import {AuthenticationService} from '../service/authentication.service';
+import {LoginComponent} from './login.component';
+
+class MockAuthenticationService {
+
+ public login(username: string, password: string, onError): void {
+ if (username === 'success') {
+ onError({status: 200});
+ }
+
+ if (username === 'failure') {
+ onError({status: 401});
+ }
+ }
+}
+
+describe('LoginComponent', () => {
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ providers: [
+ LoginComponent,
+ {provide: AuthenticationService, useClass: MockAuthenticationService}
+ ]
+ })
+ .compileComponents();
+
+ }));
+
+ it('can instantiate login component', inject([LoginComponent], (loginComponent: LoginComponent) => {
+ expect(loginComponent instanceof LoginComponent).toBe(true);
+ }));
+
+ it('can instantiate login component', inject([LoginComponent], (loginComponent: LoginComponent) => {
+ loginComponent.user = 'success';
+ loginComponent.password = 'success';
+ loginComponent.login();
+ expect(loginComponent.loginFailure).toEqual('');
+
+ loginComponent.user = 'failure';
+ loginComponent.password = 'failure';
+ loginComponent.login();
+ expect(loginComponent.loginFailure).toEqual('Login failed for failure');
+
+ }));
+
+});
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/login/login.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/login/login.component.ts b/metron-interface/metron-config/src/app/login/login.component.ts
new file mode 100644
index 0000000..cdd672a
--- /dev/null
+++ b/metron-interface/metron-config/src/app/login/login.component.ts
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { Component } from '@angular/core';
+import { AuthenticationService } from '../service/authentication.service';
+
+@Component({
+ selector: 'metron-config-login',
+ templateUrl: 'login.component.html',
+ styleUrls: ['login.component.scss'],
+})
+export class LoginComponent {
+
+ user: string;
+ password: string;
+ loginFailure: string = '';
+
+ constructor(private authenticationService: AuthenticationService) {
+ }
+
+ login(): void {
+ this.authenticationService.login(this.user, this.password, error => {
+ if (error.status === 401) {
+ this.loginFailure = 'Login failed for ' + this.user;
+ }
+ });
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/login/login.module.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/login/login.module.ts b/metron-interface/metron-config/src/app/login/login.module.ts
new file mode 100644
index 0000000..6efd125
--- /dev/null
+++ b/metron-interface/metron-config/src/app/login/login.module.ts
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { NgModule } from '@angular/core';
+import {routing} from "./login.routing";
+
+@NgModule ({
+ imports: [ routing ]
+})
+export class LoginModule { }
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/login/login.routing.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/login/login.routing.ts b/metron-interface/metron-config/src/app/login/login.routing.ts
new file mode 100644
index 0000000..7d2d22e
--- /dev/null
+++ b/metron-interface/metron-config/src/app/login/login.routing.ts
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { ModuleWithProviders } from '@angular/core';
+import { RouterModule } from '@angular/router';
+import {LoginComponent} from "./login.component";
+
+
+export const routing: ModuleWithProviders = RouterModule.forChild([
+ { path: '', component: LoginComponent}
+]);
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/autocomplete-option.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/autocomplete-option.ts b/metron-interface/metron-config/src/app/model/autocomplete-option.ts
new file mode 100644
index 0000000..8006696
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/autocomplete-option.ts
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class AutocompleteOption {
+ name: string;
+ title: string;
+ description: string;
+ isFunction: boolean;
+ isActive: boolean;
+
+ constructor(name?: string, title?: string, description?: string) {
+ this.name = name;
+ this.title = title;
+ this.description = description;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/field-transformation.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/field-transformation.ts b/metron-interface/metron-config/src/app/model/field-transformation.ts
new file mode 100644
index 0000000..f53a447
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/field-transformation.ts
@@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class FieldTransformation {
+ name: string;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/field-transformer.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/field-transformer.ts b/metron-interface/metron-config/src/app/model/field-transformer.ts
new file mode 100644
index 0000000..ace68c7
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/field-transformer.ts
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class FieldTransformer {
+ input: string[];
+ output: string[];
+ transformation: string;
+ config: {};
+ initialized: boolean;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/grok-validation.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/grok-validation.ts b/metron-interface/metron-config/src/app/model/grok-validation.ts
new file mode 100644
index 0000000..52e4026
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/grok-validation.ts
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class GrokValidation {
+ patternLabel: string;
+ statement: string;
+ sampleData: string;
+ results: {};
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/kafka-topic.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/kafka-topic.ts b/metron-interface/metron-config/src/app/model/kafka-topic.ts
new file mode 100644
index 0000000..799488f
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/kafka-topic.ts
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class KafkaTopic {
+ name: string;
+ numPartitions: number;
+ replicationFactor: number;
+ properties: any = {};
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/parse-message-request.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/parse-message-request.ts b/metron-interface/metron-config/src/app/model/parse-message-request.ts
new file mode 100644
index 0000000..053d7ad
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/parse-message-request.ts
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {SensorParserConfig} from './sensor-parser-config';
+export class ParseMessageRequest {
+ sensorParserConfig: SensorParserConfig;
+ grokStatement: string;
+ sampleData: string;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/rest-error.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/rest-error.ts b/metron-interface/metron-config/src/app/model/rest-error.ts
new file mode 100644
index 0000000..5daee25
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/rest-error.ts
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class RestError {
+ responseCode: number;
+ message: string;
+ fullMessage: string;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/risk-level-rule.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/risk-level-rule.ts b/metron-interface/metron-config/src/app/model/risk-level-rule.ts
new file mode 100644
index 0000000..1cd4e8a
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/risk-level-rule.ts
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class RiskLevelRule {
+ name: string = '';
+ comment: string = '';
+ rule: string = '';
+ score: number = 0;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-enrichment-config.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-enrichment-config.ts b/metron-interface/metron-config/src/app/model/sensor-enrichment-config.ts
new file mode 100644
index 0000000..3a3ac8b
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-enrichment-config.ts
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {ThreatTriageConfig} from './threat-triage-config';
+export class SensorEnrichmentConfig {
+ enrichment: EnrichmentConfig;
+ threatIntel: ThreatIntelConfig;
+ configuration: {};
+
+ constructor() {
+ this.enrichment = new EnrichmentConfig();
+ this.threatIntel = new ThreatIntelConfig();
+ }
+}
+
+export class EnrichmentConfig {
+ fieldMap = {};
+ fieldToTypeMap = {};
+ config = {};
+}
+
+export class ThreatIntelConfig {
+ fieldMap = {};
+ fieldToTypeMap = {};
+ config = {};
+ triageConfig: ThreatTriageConfig;
+ constructor() {
+ this.triageConfig = new ThreatTriageConfig();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-enrichments.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-enrichments.ts b/metron-interface/metron-config/src/app/model/sensor-enrichments.ts
new file mode 100644
index 0000000..92f303f
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-enrichments.ts
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {ThreatTriageConfig} from './threat-triage-config';
+export class SensorEnrichments {
+ sensorName: string;
+ fieldEnrichments: {};
+ fieldThreatIntels: {};
+ threatTriageConfig: ThreatTriageConfig;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-indexing-config.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-indexing-config.ts b/metron-interface/metron-config/src/app/model/sensor-indexing-config.ts
new file mode 100644
index 0000000..4b945de
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-indexing-config.ts
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class SensorIndexingConfig {
+ index: string;
+ batchSize: number = 1;
+ enabled: boolean = true;
+}
+
+export class IndexingConfigurations {
+ hdfs: SensorIndexingConfig = new SensorIndexingConfig();
+ elasticsearch: SensorIndexingConfig = new SensorIndexingConfig();
+ solr: SensorIndexingConfig = new SensorIndexingConfig();
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-parser-config-history.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-parser-config-history.ts b/metron-interface/metron-config/src/app/model/sensor-parser-config-history.ts
new file mode 100644
index 0000000..0aed6fe
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-parser-config-history.ts
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {SensorParserConfig} from './sensor-parser-config';
+export class SensorParserConfigHistory {
+ createdBy: string;
+ modifiedBy: string;
+ createdDate: string;
+ modifiedByDate: string;
+ config: SensorParserConfig;
+
+ constructor() {
+ this.config = new SensorParserConfig();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-parser-config.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-parser-config.ts b/metron-interface/metron-config/src/app/model/sensor-parser-config.ts
new file mode 100644
index 0000000..c0d907d
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-parser-config.ts
@@ -0,0 +1,33 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {FieldTransformer} from './field-transformer';
+export class SensorParserConfig {
+ parserClassName: string;
+ filterClassName: string;
+ sensorTopic: string;
+ writerClassName: string;
+ errorWriterClassName: string;
+ invalidWriterClassName: string;
+ parserConfig: {};
+ fieldTransformations: FieldTransformer[];
+
+ constructor() {
+ this.parserConfig = {};
+ this.fieldTransformations = [];
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-parser-context.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-parser-context.ts b/metron-interface/metron-config/src/app/model/sensor-parser-context.ts
new file mode 100644
index 0000000..29217fe
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-parser-context.ts
@@ -0,0 +1,22 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {SensorParserConfig} from './sensor-parser-config';
+export class SensorParserContext {
+ sampleData: any;
+ sensorParserConfig: SensorParserConfig;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-parser-info.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-parser-info.ts b/metron-interface/metron-config/src/app/model/sensor-parser-info.ts
new file mode 100644
index 0000000..330b59c
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-parser-info.ts
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {SensorParserConfig} from './sensor-parser-config';
+export class SensorParserInfo {
+ createdBy: string;
+ modifiedBy: string;
+ createdDate: string;
+ modifiedByDate: string;
+ config: SensorParserConfig;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-parser-response.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-parser-response.ts b/metron-interface/metron-config/src/app/model/sensor-parser-response.ts
new file mode 100644
index 0000000..92af2d3
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-parser-response.ts
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class SensorParserResponse {
+ status: string;
+ message: string;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/sensor-parser-status.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/sensor-parser-status.ts b/metron-interface/metron-config/src/app/model/sensor-parser-status.ts
new file mode 100644
index 0000000..c0cab0c
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/sensor-parser-status.ts
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class SensorParserStatus {
+ id: string;
+ name: string;
+ status: string;
+ latency: string;
+ throughput: string;
+ state: string;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/stellar-function-description.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/stellar-function-description.ts b/metron-interface/metron-config/src/app/model/stellar-function-description.ts
new file mode 100644
index 0000000..5dd7f9a
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/stellar-function-description.ts
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class StellarFunctionDescription {
+ name: string;
+ description: string;
+ params: string[];
+ returns: string;
+
+ constructor(name: string, description: string, params: string[], returns?: string) {
+ this.name = name;
+ this.description = description;
+ this.params = params;
+ this.returns = returns;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/threat-triage-config.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/threat-triage-config.ts b/metron-interface/metron-config/src/app/model/threat-triage-config.ts
new file mode 100644
index 0000000..2dc7524
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/threat-triage-config.ts
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {RiskLevelRule} from './risk-level-rule';
+export class ThreatTriageConfig {
+ riskLevelRules: RiskLevelRule[] = [];
+ aggregator: string = 'MAX';
+ aggregationConfig = {};
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/topology-response.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/topology-response.ts b/metron-interface/metron-config/src/app/model/topology-response.ts
new file mode 100644
index 0000000..97a5c84
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/topology-response.ts
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class TopologyResponse {
+ status: string;
+ message: string;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/model/topology-status.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/model/topology-status.ts b/metron-interface/metron-config/src/app/model/topology-status.ts
new file mode 100644
index 0000000..a8fad1c
--- /dev/null
+++ b/metron-interface/metron-config/src/app/model/topology-status.ts
@@ -0,0 +1,26 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export class TopologyStatus {
+ id: string;
+ name: string;
+ status: string;
+ latency: number;
+ throughput: number;
+ emitted: number;
+ acked: number;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/navbar/index.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/navbar/index.ts b/metron-interface/metron-config/src/app/navbar/index.ts
new file mode 100644
index 0000000..ab58b3e
--- /dev/null
+++ b/metron-interface/metron-config/src/app/navbar/index.ts
@@ -0,0 +1,18 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export * from './navbar.component';
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/navbar/navbar.component.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/navbar/navbar.component.scss b/metron-interface/metron-config/src/app/navbar/navbar.component.scss
new file mode 100644
index 0000000..5a0b0be
--- /dev/null
+++ b/metron-interface/metron-config/src/app/navbar/navbar.component.scss
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@import "../_variables.scss";
+
+.logout {
+ padding-left: 10px;
+ font-family: Roboto-Regular;
+}
+
+.logout-link{
+ color: $form-button-border;
+ cursor: pointer;
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts b/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts
new file mode 100644
index 0000000..d0bd4e0
--- /dev/null
+++ b/metron-interface/metron-config/src/app/navbar/navbar.component.spec.ts
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {async, TestBed, ComponentFixture} from '@angular/core/testing';
+import {NavbarComponent} from './navbar.component';
+import {AuthenticationService} from '../service/authentication.service';
+
+class MockAuthenticationService {
+}
+
+describe('NavbarComponent', () => {
+ let fixture: ComponentFixture<NavbarComponent>;
+ let navbarComponent: NavbarComponent;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ NavbarComponent],
+ providers: [
+ NavbarComponent,
+ {provide: AuthenticationService, useClass: MockAuthenticationService}
+ ]
+ });
+
+ fixture = TestBed.createComponent(NavbarComponent);
+ navbarComponent = fixture.componentInstance;
+
+ }));
+
+ it('can instantiate SampleDataComponent', async(() => {
+ expect(navbarComponent instanceof NavbarComponent).toBe(true);
+ fixture.destroy();
+ }));
+
+});
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/navbar/navbar.component.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/navbar/navbar.component.ts b/metron-interface/metron-config/src/app/navbar/navbar.component.ts
new file mode 100644
index 0000000..45c15ef
--- /dev/null
+++ b/metron-interface/metron-config/src/app/navbar/navbar.component.ts
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {Component} from '@angular/core';
+import {AuthenticationService} from '../service/authentication.service';
+
+@Component({
+ selector: 'metron-config-navbar',
+ templateUrl: 'navbar.html',
+ styleUrls: ['navbar.component.scss']
+})
+
+export class NavbarComponent {
+
+ constructor(private authenticationService: AuthenticationService) {
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/navbar/navbar.html
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/navbar/navbar.html b/metron-interface/metron-config/src/app/navbar/navbar.html
new file mode 100644
index 0000000..3af1c7c
--- /dev/null
+++ b/metron-interface/metron-config/src/app/navbar/navbar.html
@@ -0,0 +1,29 @@
+<!--
+ Licensed to the Apache Software
+ Foundation (ASF) under one or more contributor license agreements. See the
+ NOTICE file distributed with this work for additional information regarding
+ copyright ownership. The ASF licenses this file to You under the Apache License,
+ Version 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the License.
+ -->
+<nav class="metron-nav navbar navbar-dark">
+ <button class="navbar-toggler hidden-sm-up" type="button" data-toggle="collapse" data-target="#exCollapsingNavbar">
+ ☰
+ </button>
+ <div class="collapse navbar-toggleable-xs pull-left" id="exCollapsingNavbar">
+ <a class="navbar-brand" href="#"><img src="assets/images/logo.png" alt="Logo" width=110></a>
+ </div>
+
+ <div class="form-inline pull-right">
+ <i class="fa fa-user " style="padding-left: 11px" aria-hidden="true"></i>
+ <div *ngIf="authenticationService.currentUser != null" class="fa logout">Logged in as {{authenticationService.currentUser}} - <span class="logout-link" (click)="authenticationService.logout()">Logout</span></div>
+ </div>
+
+</nav>
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/rxjs-operators.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/rxjs-operators.ts b/metron-interface/metron-config/src/app/rxjs-operators.ts
new file mode 100644
index 0000000..11c86fb
--- /dev/null
+++ b/metron-interface/metron-config/src/app/rxjs-operators.ts
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// import 'rxjs/Rx'; // adds ALL RxJS statics & operators to Observable
+
+// See node_module/rxjs/Rxjs.js
+// Import just the rxjs statics and operators we need for THIS app.
+
+// Statics
+import 'rxjs/add/observable/throw';
+
+// Operators
+import 'rxjs/add/operator/catch';
+import 'rxjs/add/operator/debounceTime';
+import 'rxjs/add/operator/distinctUntilChanged';
+import 'rxjs/add/operator/map';
+import 'rxjs/add/operator/switchMap';
+import 'rxjs/add/operator/toPromise';
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/sensors/sensor-field-schema/index.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/sensors/sensor-field-schema/index.ts b/metron-interface/metron-config/src/app/sensors/sensor-field-schema/index.ts
new file mode 100644
index 0000000..621e31a
--- /dev/null
+++ b/metron-interface/metron-config/src/app/sensors/sensor-field-schema/index.ts
@@ -0,0 +1,18 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export * from './sensor-field-schema.component';
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html b/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html
new file mode 100644
index 0000000..18b4b82
--- /dev/null
+++ b/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.html
@@ -0,0 +1,113 @@
+<!--
+ Licensed to the Apache Software
+ Foundation (ASF) under one or more contributor license agreements. See the
+ NOTICE file distributed with this work for additional information regarding
+ copyright ownership. The ASF licenses this file to You under the Apache License,
+ Version 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the License.
+ -->
+ <div class="metron-slider-pane-edit fill load-left-to-right dialog2x">
+
+ <div class="form-title">Schema</div>
+ <i class="fa fa-times pull-right close-button" aria-hidden="true" (click)="onCancel()"></i>
+
+
+ <form role="form" class="fieldschema-form">
+ <metron-config-sample-data [topic]="sensorParserConfig.sensorTopic" (onSampleDataChanged)="onSampleDataChanged($event)" (onSampleDataNotAvailable)="onSampleDataNotAvailable($event)"></metron-config-sample-data>
+
+ <br><br>
+
+ <div class="metron-bg-inverse">
+ <div class="p-2">
+
+ <div class="row placeholder" *ngIf="fieldSchemaRows.length===0 || (parserResult === {})">
+ A data sample is need to view/configure the complete schema.
+ </div>
+
+ <div class="row mx-0" *ngIf="fieldSchemaRows.length>0">
+ <div class="col-md-3 title text-grey"> Field </div>
+ <div class="col-md-9 title text-grey"> Changes </div>
+ </div>
+
+ <div *ngFor="let fieldSchemaRow of fieldSchemaRows" class="row pb-1 mx-0">
+ <!-- Readonly Field Schema Row -->
+ <div class="field-schema-row" *ngIf="!fieldSchemaRow.showConfig" [class.field-suppressed]="fieldSchemaRow.isRemoved">
+ <div class="col-md-3 field-schema-cell-title"> {{ fieldSchemaRow.outputFieldName }} </div>
+ <div class="col-md-7 field-schema-cell-value" [innerHtml]="getChanges(fieldSchemaRow)"> </div>
+ <div class="col-md-2 field-schema-cell icon-blue" style="font-size: 16px">
+ <i *ngIf="!fieldSchemaRow.isParserGenerated" class="fa fa-trash pull-right" aria-hidden="true" (click)="onDelete(fieldSchemaRow)"></i>
+ <i class="fa fa-pencil pull-right" aria-hidden="true" (click)="fieldSchemaRow.showConfig=true"></i>
+ <i *ngIf="!fieldSchemaRow.isRemoved" class="fa fa-ban pull-right" aria-hidden="true" (click)="onRemove(fieldSchemaRow)"></i>
+ <i *ngIf="fieldSchemaRow.isRemoved" class="fa fa-check-circle-o pull-right" style="color:lightgreen" aria-hidden="true" (click)="onEnable(fieldSchemaRow)"></i>
+
+ </div>
+ </div>
+
+ <!-- Editable Enrichments Pane -->
+ <div class="config container" *ngIf="fieldSchemaRow.showConfig">
+
+ <!--Title-->
+ <div class="row py-1">
+ <div class="col-md-10 enrichments-edit-title"> {{ fieldSchemaRow.outputFieldName }} </div>
+ <div class="col-md-2 enrichment-cell">
+ <i class="fa fa-times-circle pull-right small-close-button" aria-hidden="true" (click)="onCancelChange(fieldSchemaRow)"></i>
+ </div>
+ </div>
+
+ <!--Input Field Name-->
+ <div class="form-group px-1 col-md-10" *ngIf="fieldSchemaRow.isNew">
+ <label>INPUT FIELD</label>
+ <select [(ngModel)]="fieldSchemaRow.inputFieldName" [ngModelOptions]="{standalone: true}" (ngModelChange)="fieldSchemaRow.outputFieldName=fieldSchemaRow.inputFieldName+'_copy'">
+ <option [disabled] [selected]> </option>
+ <option *ngFor="let fieldSchemaRow of fieldSchemaRows" [attr.hidden]="fieldSchemaRow.isNew"> {{ fieldSchemaRow.inputFieldName }} </option>
+ </select>
+ </div>
+
+ <!-- Output Field Name-->
+ <div class="form-group px-1 col-md-10" *ngIf="fieldSchemaRow.isNew || !fieldSchemaRow.isParserGenerated">
+ <label>NAME</label>
+ <input type="text" class="form-control" [name]="fieldSchemaRow.outputFieldName" [(ngModel)]="fieldSchemaRow.outputFieldName" [ngModelOptions]="{standalone: true}">
+ </div>
+
+ <!-- Transforms -->
+ <div class="form-group px-1 col-md-12">
+ <label>TRANSFORMATIONS</label>
+ <metron-config-multiple-input [type]="'select'" [availableItems]="transformOptions" [(configuredItems)]="fieldSchemaRow.transformConfigured" (onConfigChange)="onTransformsChange(fieldSchemaRow)"> </metron-config-multiple-input>
+ <div class="edit-pane-readonly rounded col-md-10"> {{ fieldSchemaRow.preview }} </div>
+ </div>
+
+ <!-- Enrichmnets -->
+ <div class="form-group px-1 col-md-12">
+ <label>ENRICHMENTS</label>
+ <metron-config-multiple-input [availableItems]="enrichmentOptions" [(configuredItems)]="fieldSchemaRow.enrichmentConfigured" [allowDuplicates]="false"> </metron-config-multiple-input>
+ </div>
+
+ <!-- Threat Intel -->
+ <div class="form-group px-1 col-md-12">
+ <label>THREAT INTEL </label>
+ <metron-config-multiple-input [availableItems]="threatIntelOptions" [(configuredItems)]="fieldSchemaRow.threatIntelConfigured" [allowDuplicates]="false"> </metron-config-multiple-input>
+ </div>
+
+ <div class="form-group p-1 col-md-12">
+ <button type="submit" class="btn form-enable-disable-button pull-left" (click)="onSaveChange(fieldSchemaRow)">SAVE</button>
+ </div>
+
+ </div>
+ </div>
+
+ <div class="row mx-0 add-button" *ngIf="fieldSchemaRows.length > 0">
+ <button type="submit" class="btn form-enable-disable-button" (click)="addNewRule()"><i class="fa fa-plus" aria-hidden="true"></i></button>
+ </div>
+
+ </div>
+ </div>
+
+ </form>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/1ef8cd8f/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.scss b/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.scss
new file mode 100644
index 0000000..f248a70
--- /dev/null
+++ b/metron-interface/metron-config/src/app/sensors/sensor-field-schema/sensor-field-schema.component.scss
@@ -0,0 +1,168 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+@import "../../_variables.scss";
+
+.form-title
+{
+ padding-left: 25px;
+}
+
+.title
+{
+ font-size: 12px;
+}
+
+.close-button
+{
+ padding-right: 20px;
+}
+
+.field-schema-row
+{
+ display: table;
+ width: 100%;
+ padding: 10px 0px 10px 0px;
+ background: #383838;
+}
+
+.field-schema-edit-title
+{
+ font-size: 15px;
+ font-weight: bold;
+}
+
+.field-schema-cell
+{
+ float: none;
+ font-size: 13px;
+ height: 15px;
+ line-height: 15px;
+ display: table-cell;
+ vertical-align: middle;
+ word-break: break-all;
+ font-family: Roboto-Regular;
+}
+
+.field-schema-cell-title
+{
+ @extend .field-schema-cell;
+ color: $silver-color;
+ font-size: 14px;
+}
+
+.field-schema-cell-value
+{
+ @extend .field-schema-cell;
+ font-size: 13px;
+}
+
+.small-close-button {
+ font-size:20px;
+ color:$silver-color;
+ cursor: pointer;
+}
+
+.config
+{
+ background: $edit-background;
+ border: 1px solid $edit-background-border;
+}
+
+.enrichment-cell
+{
+ display: table-cell;
+ vertical-align: middle;
+ float: none;
+ min-height: 35px;
+ line-height: 20px;
+}
+
+.enrichments-edit-title
+{
+ font-size: 15px;
+ font-weight: bold;
+}
+
+.transform-info-row
+{
+ display: table;
+ width: 100%;
+ min-height: 35px;
+}
+
+.edit-pane-readonly
+{
+ background: $edit-child-background;
+ font-size: 12px;
+ margin-bottom: 0.5em;
+ font-style: italic;
+ padding: 0.5rem 0.75rem;
+ border: none;
+ line-height: 1.5em;
+ height: 35px;
+}
+
+.field-suppressed
+{
+ background-color: #262626;
+ color: #737373;
+ .field-schema-cell-title
+ {
+ color: #737373;
+ }
+}
+
+.metron-bg-inverse
+{
+ background: #2e2e2e;
+ margin-bottom: 70px;
+}
+
+select
+{
+ width: 100%;
+ display: block;
+}
+
+.placeholder
+{
+ text-align: center;
+ font-size: 13px;
+ color: $text-color-white;
+}
+
+.add-button
+{
+ button
+ {
+ width: 100%;
+ height: 35px;
+ padding: 0px;
+ }
+ i
+ {
+ font-size: 1.5em;
+ color: $field-button-color;
+ }
+}
+
+.fieldschema-form
+{
+ padding-left: 25px;
+ padding-right: 20px;
+}