http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table.directive.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table.directive.ts
 
b/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table.directive.ts
new file mode 100644
index 0000000..b3ba181
--- /dev/null
+++ 
b/metron-interface/metron-alerts/src/app/shared/metron-table/metron-table.directive.ts
@@ -0,0 +1,120 @@
+/**
+ * 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.
+ */
+/* tslint:disable:directive-selector-name */
+import {Directive, Output, Input, EventEmitter, ElementRef, AfterViewInit} 
from '@angular/core';
+import {Sort} from '../../utils/enums';
+
+export interface SortEvent {
+  sortBy: string;
+  type: string;
+  sortOrder: Sort;
+}
+
+@Directive({
+  selector: '[metron-config-table]'
+})
+
+export class MetronTableDirective implements AfterViewInit {
+
+  @Output() onSort = new EventEmitter<SortEvent>();
+  @Input() data: any[] = [];
+  @Input() cellSelectable = false;
+  rowhighlightColor = '#333333';
+  highlightColor = '#0F4450';
+  border = '1px solid #1B596C';
+
+  onSortColumnChange = new EventEmitter<SortEvent>();
+
+  constructor(private element: ElementRef) { }
+
+  private getParentTR(parent: any) {
+    while (true) {
+      if (parent == null) {
+        return;
+      }
+      if (parent.nodeName === 'TR') {
+        return parent;
+      }
+      parent = parent.parentNode;
+    }
+  }
+
+  mouseover($event) {
+    if ($event.target.nodeName === 'TH') {
+      return;
+    }
+
+    if (this.cellSelectable && $event.target.nodeName === 'A') {
+        $event.target.style.backgroundColor = this.highlightColor;
+        $event.target.style.border = this.border;
+
+    } else {
+        let parent = this.getParentTR($event.target);
+        parent.style.backgroundColor = this.rowhighlightColor;
+    }
+  }
+
+  mouseleave($event) {
+    if ($event.target.nodeName === 'TH') {
+      return;
+    }
+
+    if (this.cellSelectable && $event.target.nodeName === 'A') {
+      $event.target.style.border = '';
+      $event.target.style.backgroundColor = '';
+    } else {
+      let parent = this.getParentTR($event.target);
+      parent.style.backgroundColor = '';
+    }
+  }
+
+  ngAfterViewInit() {
+    
this.element.nativeElement.querySelector('tbody').addEventListener('mouseover', 
this.mouseover.bind(this));
+    
this.element.nativeElement.querySelector('tbody').addEventListener('mouseout', 
this.mouseleave.bind(this));
+  }
+
+
+  public setSort(sortEvent: SortEvent): void {
+    this.onSortColumnChange.emit(sortEvent);
+    if (this.onSort.observers.length === 0 ) {
+      this.sort(sortEvent);
+    } else {
+      this.onSort.emit(sortEvent);
+    }
+  }
+
+  private sort($event) {
+    this.data.sort((obj1: any, obj2: any) => {
+      if ($event.sortOrder === Sort.ASC) {
+        if ($event.type === 'string') {
+          return obj1[$event.sortBy].localeCompare(obj2[$event.sortBy]);
+        }
+        if ($event.type === 'number') {
+          return obj1[$event.sortBy] - obj2[$event.sortBy];
+        }
+      }
+
+      if ($event.type === 'string') {
+        return obj2[$event.sortBy].localeCompare(obj1[$event.sortBy]);
+      }
+      if ($event.type === 'number') {
+        return obj2[$event.sortBy] - obj1[$event.sortBy];
+      }
+    });
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.ts
 
b/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.ts
new file mode 100644
index 0000000..5a89426
--- /dev/null
+++ 
b/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.spec.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 { CenterEllipsesPipe } from './center-ellipses.pipe';
+
+describe('CenterEllipsesPipe', () => {
+  it('create an instance', () => {
+    const pipe = new CenterEllipsesPipe();
+    expect(pipe).toBeTruthy();
+  });
+});

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.ts 
b/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.ts
new file mode 100644
index 0000000..bd220f4
--- /dev/null
+++ 
b/metron-interface/metron-alerts/src/app/shared/pipes/center-ellipses.pipe.ts
@@ -0,0 +1,45 @@
+/**
+ * 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 { Pipe, PipeTransform } from '@angular/core';
+
+const limit = 72;
+
+@Pipe({
+  name: 'centerEllipses'
+})
+export class CenterEllipsesPipe implements PipeTransform {
+  private trail = '...';
+
+
+  transform(value: any, length?: number): any {
+      let tLimit = length ? length : limit;
+
+      if (!value) {
+        return '';
+      }
+
+      if (!length) {
+        return value;
+      }
+
+      return value.length > tLimit
+        ? value.substring(0, tLimit / 2) + this.trail + 
value.substring(value.length - tLimit / 2, value.length)
+        : value;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.ts
 
b/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.ts
new file mode 100644
index 0000000..4a4e0bf
--- /dev/null
+++ 
b/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.spec.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 { ColumnNameTranslatePipe } from './column-name-translate.pipe';
+
+describe('ColumnNameTranslatePipe', () => {
+  it('create an instance', () => {
+    const pipe = new ColumnNameTranslatePipe();
+    expect(pipe).toBeTruthy();
+  });
+});

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.ts
 
b/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.ts
new file mode 100644
index 0000000..ab614ed
--- /dev/null
+++ 
b/metron-interface/metron-alerts/src/app/shared/pipes/column-name-translate.pipe.ts
@@ -0,0 +1,36 @@
+/**
+ * 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 { Pipe, PipeTransform } from '@angular/core';
+import {ColumnNamesService} from '../../service/column-names.service';
+
+@Pipe({
+  name: 'columnNameTranslate',
+  pure: false
+})
+export class ColumnNameTranslatePipe implements PipeTransform {
+
+  transform(value: any, args?: any): any {
+    if (!value) {
+      return '';
+    }
+
+    let displayValue = ColumnNamesService.columnNameToDisplayValueMap[value];
+
+    return displayValue ? displayValue : value;
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/shared.module.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/shared/shared.module.ts 
b/metron-interface/metron-alerts/src/app/shared/shared.module.ts
new file mode 100644
index 0000000..c2ad78f
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/shared/shared.module.ts
@@ -0,0 +1,51 @@
+/**
+ * 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 { CommonModule }        from '@angular/common';
+import { FormsModule }         from '@angular/forms';
+import { AlertSeverityDirective } from './directives/alert-severity.directive';
+import { MetronTableDirective } from './metron-table/metron-table.directive';
+import { NavContentDirective } from './directives/nav-content.directive';
+import { CenterEllipsesPipe } from './pipes/center-ellipses.pipe';
+import { AlertSearchDirective } from './directives/alert-search.directive';
+import { ColumnNameTranslatePipe } from './pipes/column-name-translate.pipe';
+
+@NgModule({
+  imports:  [
+    CommonModule
+  ],
+  declarations: [
+    AlertSeverityDirective,
+    MetronTableDirective,
+    NavContentDirective,
+    CenterEllipsesPipe,
+    AlertSearchDirective,
+    ColumnNameTranslatePipe
+  ],
+  exports:  [
+    CommonModule,
+    FormsModule,
+    AlertSeverityDirective,
+    MetronTableDirective,
+    NavContentDirective,
+    CenterEllipsesPipe,
+    AlertSearchDirective,
+    ColumnNameTranslatePipe
+  ]
+})
+export class SharedModule { }

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/switch/switch.component.html
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/switch/switch.component.html 
b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.html
new file mode 100644
index 0000000..794388f
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.html
@@ -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.
+  -->
+<div>
+  <label class="switch">
+    <input type="checkbox" class="inputdemo">
+    <div class="slider round"></div>
+  </label>
+  <label> {{ text }}</label>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/switch/switch.component.scss
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/switch/switch.component.scss 
b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.scss
new file mode 100644
index 0000000..db1df79
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.scss
@@ -0,0 +1,91 @@
+/**
+ * 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";
+
+label {
+  font-family: Roboto-Regular;
+}
+
+.switch {
+  position: relative;
+  display: inline-block;
+  width: 35px;
+  height: 18px;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  -ms-user-select: none;
+  top: 6px;
+
+  .inputdemo {
+    display: none;
+  }
+
+  .round {
+    border-radius: 23px;
+  }
+
+  .round:before {
+    border-radius: 50%;
+  }
+}
+
+.slider {
+  position: absolute;
+  cursor: pointer;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  -webkit-transition: .4s;
+  transition: .4s;
+
+  &:before {
+    position: absolute;
+    content: "";
+    height: 18px;
+    width: 18px;
+    left: 0px;
+    bottom: 0px;
+    -webkit-transition: .4s;
+    transition: .4s;
+  }
+}
+
+.inputdemo + .slider {
+  background-color: $trout;
+}
+
+.inputdemo + .slider:before {
+  background-color: $oslo-gray;
+  border: 2px solid $gray-chateau;
+}
+
+.inputdemo:checked + .slider {
+  background-color: $matisse;
+}
+
+.inputdemo:checked + .slider:before {
+  background-color: $eastern-blue-1;
+  border: 2px solid $downy
+}
+
+.inputdemo:checked + .slider:before {
+  -webkit-transform: translateX(17px);
+  -ms-transform: translateX(17px);
+  transform: translateX(17px);
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts 
b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts
new file mode 100644
index 0000000..323013e
--- /dev/null
+++ 
b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.spec.ts
@@ -0,0 +1,42 @@
+/**
+ * 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, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { SwitchComponent } from './switch.component';
+
+describe('SwitchComponent', () => {
+  let component: SwitchComponent;
+  let fixture: ComponentFixture<SwitchComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ SwitchComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(SwitchComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/switch/switch.component.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/switch/switch.component.ts 
b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.ts
new file mode 100644
index 0000000..deca9b5
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/shared/switch/switch.component.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 { Component, OnInit, Input } from '@angular/core';
+
+@Component({
+  selector: 'app-switch',
+  templateUrl: './switch.component.html',
+  styleUrls: ['./switch.component.scss']
+})
+export class SwitchComponent implements OnInit {
+  @Input() text: string;
+
+  constructor() { }
+
+  ngOnInit() {
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/shared/switch/switch.module.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/shared/switch/switch.module.ts 
b/metron-interface/metron-alerts/src/app/shared/switch/switch.module.ts
new file mode 100644
index 0000000..f5011ad
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/shared/switch/switch.module.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.
+ */
+import {NgModule} from '@angular/core';
+
+import {SharedModule} from '../shared.module';
+import {SwitchComponent} from './switch.component';
+
+@NgModule({
+  imports: [SharedModule],
+  exports: [SwitchComponent],
+  declarations: [SwitchComponent],
+  providers: [],
+})
+export class SwitchModule {
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/utils/constants.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/utils/constants.ts 
b/metron-interface/metron-alerts/src/app/utils/constants.ts
new file mode 100644
index 0000000..da6d50c
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/utils/constants.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 const NUM_SAVED_SEARCH = 10;
+export const ALERTS_RECENT_SEARCH = 'metron-alerts-recent-saved-search';
+export const ALERTS_SAVED_SEARCH = 'metron-alerts-saved-search';
+export const ALERTS_TABLE_METADATA = 'metron-alerts-table-metadata';
+export const ALERTS_COLUMN_NAMES = 'metron-alerts-column-names';

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/utils/elasticsearch-utils.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/app/utils/elasticsearch-utils.ts 
b/metron-interface/metron-alerts/src/app/utils/elasticsearch-utils.ts
new file mode 100644
index 0000000..62b7464
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/utils/elasticsearch-utils.ts
@@ -0,0 +1,74 @@
+/**
+ * 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 {ColumnMetadata} from '../model/column-metadata';
+import {AlertsSearchResponse} from '../model/alerts-search-response';
+
+export class ElasticsearchUtils {
+
+  public static excludeIndexName = ',-*kibana,-error*';
+
+  private static createColumMetaData(properties: any, columnMetadata: 
ColumnMetadata[], seen: string[]) {
+     try {
+       let columnNames = Object.keys(properties);
+       for (let columnName of columnNames) {
+         if (seen.indexOf(columnName) === -1) {
+           seen.push(columnName);
+           columnMetadata.push(
+             new ColumnMetadata(columnName, (properties[columnName].type ? 
properties[columnName].type : ''))
+           );
+         }
+       }
+     } catch (e) {}
+  }
+
+  public static extractColumnNameData(res: Response): ColumnMetadata[] {
+    let response: any = res || {};
+    let columnMetadata: ColumnMetadata[] = [];
+    let seen: string[] = [];
+
+    for (let index in response.metadata.indices) {
+      if (!index.endsWith(ElasticsearchUtils.excludeIndexName)) {
+        let mappings = response.metadata.indices[index].mappings;
+        for (let type of Object.keys(mappings)) {
+          
ElasticsearchUtils.createColumMetaData(response.metadata.indices[index].mappings[type].properties,
 columnMetadata, seen);
+        }
+      }
+    }
+
+    columnMetadata.push(new ColumnMetadata('_id', 'string'));
+    return columnMetadata;
+  }
+
+  public static extractAlertsData(res: Response): AlertsSearchResponse {
+    let response: any = res || {};
+    let alertsSearchResponse: AlertsSearchResponse = new 
AlertsSearchResponse();
+    alertsSearchResponse.total = response['hits']['total'];
+    alertsSearchResponse.results = response['hits']['hits'];
+    return alertsSearchResponse;
+  }
+
+  public static extractESErrorMessage(error: any): any {
+    let message = error.error.reason;
+    error.error.root_cause.map(cause => {
+      message += '\n' + cause.index + ': ' + cause.reason;
+    });
+
+    return message;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/utils/enums.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/utils/enums.ts 
b/metron-interface/metron-alerts/src/app/utils/enums.ts
new file mode 100644
index 0000000..b89af94
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/utils/enums.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 enum Sort {
+    ASC,
+    DSC
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/app/utils/httpUtil.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/app/utils/httpUtil.ts 
b/metron-interface/metron-alerts/src/app/utils/httpUtil.ts
new file mode 100644
index 0000000..a93e66e
--- /dev/null
+++ b/metron-interface/metron-alerts/src/app/utils/httpUtil.ts
@@ -0,0 +1,45 @@
+/**
+ * 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 {Response} from '@angular/http';
+import {Observable}     from 'rxjs/Observable';
+import {RestError} from '../model/rest-error';
+export class HttpUtil {
+
+  public static extractString(res: Response): string {
+    let text: string = res.text();
+    return text || '';
+  }
+
+  public static extractData(res: Response): any {
+    let body = res.json();
+    return body || {};
+  }
+
+  public static handleError(res: Response): Observable<RestError> {
+    // In a real world app, we might use a remote logging infrastructure
+    // We'd also dig deeper into the error to get a better message
+    let restError: RestError;
+    if (res.status !== 404) {
+      restError = res.json();
+    } else {
+      restError = new RestError();
+      restError.responseCode = 404;
+    }
+    return Observable.throw(restError);
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/.gitkeep
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/.gitkeep 
b/metron-interface/metron-alerts/src/assets/.gitkeep
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/.npmignore
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/.npmignore 
b/metron-interface/metron-alerts/src/assets/.npmignore
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/ace/LICENSE
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/ace/LICENSE 
b/metron-interface/metron-alerts/src/assets/ace/LICENSE
new file mode 100644
index 0000000..4760be2
--- /dev/null
+++ b/metron-interface/metron-alerts/src/assets/ace/LICENSE
@@ -0,0 +1,24 @@
+Copyright (c) 2010, Ajax.org B.V.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of Ajax.org B.V. nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/ace/mode-lucene.js
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/ace/mode-lucene.js 
b/metron-interface/metron-alerts/src/assets/ace/mode-lucene.js
new file mode 100644
index 0000000..36034dc
--- /dev/null
+++ b/metron-interface/metron-alerts/src/assets/ace/mode-lucene.js
@@ -0,0 +1,69 @@
+ace.define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],
 function(require, exports, module) {
+"use strict";
+
+var oop = require("../lib/oop");
+var lang = require("../lib/lang");
+var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
+
+var LuceneHighlightRules = function() {
+    this.$rules = {
+        "start" : [
+            {
+                token : "constant.character.interro",
+                regex : "[\\?]"
+            }, {
+                token : "constant.character.asterisk",
+                regex : "[\\*]"
+            }, {
+                token: 'constant.character.proximity',
+                regex: '~[0-9]+\\b'
+            }, {
+                token : 'keyword.operator',
+                regex: '(?:AND|OR|NOT)\\b'
+            }, {
+                token : "paren.lparen",
+                regex : "[\\(]"
+            }, {
+                token : "paren.rparen",
+                regex : "[\\)]"
+            }, {
+                token : "keyword",
+                regex : "[\\S]+:"
+            }, {
+                token : "string",           // " string
+                regex : '".*?"'
+            }, {
+                token : "text",
+                regex : "\\s+"
+            }, {
+                defaultToken : "value"
+            }
+        ]
+    };
+};
+
+oop.inherits(LuceneHighlightRules, TextHighlightRules);
+
+exports.LuceneHighlightRules = LuceneHighlightRules;
+});
+
+ace.define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"],
 function(require, exports, module) {
+'use strict';
+
+var oop = require("../lib/oop");
+var TextMode = require("./text").Mode;
+var LuceneHighlightRules = 
require("./lucene_highlight_rules").LuceneHighlightRules;
+
+var Mode = function() {
+    this.HighlightRules = LuceneHighlightRules;
+    this.$behaviour = this.$defaultBehaviour;
+};
+
+oop.inherits(Mode, TextMode);
+
+(function() {
+    this.$id = "ace/mode/lucene";
+}).call(Mode.prototype);
+
+exports.Mode = Mode;
+});

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/ace/theme-monokai.js
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/ace/theme-monokai.js 
b/metron-interface/metron-alerts/src/assets/ace/theme-monokai.js
new file mode 100644
index 0000000..322c2fa
--- /dev/null
+++ b/metron-interface/metron-alerts/src/assets/ace/theme-monokai.js
@@ -0,0 +1,105 @@
+ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"], 
function(require, exports, module) {
+
+exports.isDark = true;
+exports.cssClass = "ace-monokai";
+exports.cssText = ".ace-monokai .ace_gutter {\
+background: #2F3129;\
+color: #8F908A\
+}\
+.ace-monokai .ace_print-margin {\
+width: 1px;\
+background: #555651\
+}\
+.ace-monokai {\
+background-color: #272822;\
+color: #F8F8F2\
+}\
+.ace-monokai .ace_cursor {\
+color: #F8F8F0\
+}\
+.ace-monokai .ace_marker-layer .ace_selection {\
+background: #49483E\
+}\
+.ace-monokai.ace_multiselect .ace_selection.ace_start {\
+box-shadow: 0 0 3px 0px #272822;\
+}\
+.ace-monokai .ace_marker-layer .ace_step {\
+background: rgb(102, 82, 0)\
+}\
+.ace-monokai .ace_marker-layer .ace_bracket {\
+margin: -1px 0 0 -1px;\
+border: 1px solid #49483E\
+}\
+.ace-monokai .ace_marker-layer .ace_active-line {\
+background: #202020\
+}\
+.ace-monokai .ace_gutter-active-line {\
+background-color: #272727\
+}\
+.ace-monokai .ace_marker-layer .ace_selected-word {\
+border: 1px solid #49483E\
+}\
+.ace-monokai .ace_invisible {\
+color: #52524d\
+}\
+.ace-monokai .ace_entity.ace_name.ace_tag,\
+.ace-monokai .ace_keyword,\
+.ace-monokai .ace_meta.ace_tag,\
+.ace-monokai .ace_storage {\
+color: #F92672\
+}\
+.ace-monokai .ace_punctuation,\
+.ace-monokai .ace_punctuation.ace_tag {\
+color: #fff\
+}\
+.ace-monokai .ace_constant.ace_character,\
+.ace-monokai .ace_constant.ace_language,\
+.ace-monokai .ace_constant.ace_numeric,\
+.ace-monokai .ace_constant.ace_other {\
+color: #AE81FF\
+}\
+.ace-monokai .ace_invalid {\
+color: #F8F8F0;\
+background-color: #F92672\
+}\
+.ace-monokai .ace_invalid.ace_deprecated {\
+color: #F8F8F0;\
+background-color: #AE81FF\
+}\
+.ace-monokai .ace_support.ace_constant,\
+.ace-monokai .ace_support.ace_function {\
+color: #66D9EF\
+}\
+.ace-monokai .ace_fold {\
+background-color: #A6E22E;\
+border-color: #F8F8F2\
+}\
+.ace-monokai .ace_storage.ace_type,\
+.ace-monokai .ace_support.ace_class,\
+.ace-monokai .ace_support.ace_type {\
+font-style: italic;\
+color: #66D9EF\
+}\
+.ace-monokai .ace_entity.ace_name.ace_function,\
+.ace-monokai .ace_entity.ace_other,\
+.ace-monokai .ace_entity.ace_other.ace_attribute-name,\
+.ace-monokai .ace_variable {\
+color: #A6E22E\
+}\
+.ace-monokai .ace_variable.ace_parameter {\
+font-style: italic;\
+color: #FD971F\
+}\
+.ace-monokai .ace_string {\
+color: #E6DB74\
+}\
+.ace-monokai .ace_comment {\
+color: #75715E\
+}\
+.ace-monokai .ace_indent-guide {\
+background: 
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC)
 right repeat-y\
+}";
+
+var dom = require("../lib/dom");
+dom.importCssString(exports.cssText, exports.cssClass);
+});

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/LICENSE.txt
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/fonts/Roboto/LICENSE.txt 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/LICENSE.txt
new file mode 100755
index 0000000..d645695
--- /dev/null
+++ b/metron-interface/metron-alerts/src/assets/fonts/Roboto/LICENSE.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Black.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Black.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Black.ttf
new file mode 100755
index 0000000..fbde625
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Black.ttf differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-BlackItalic.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-BlackItalic.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-BlackItalic.ttf
new file mode 100755
index 0000000..60f7782
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-BlackItalic.ttf 
differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Bold.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Bold.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Bold.ttf
new file mode 100755
index 0000000..a355c27
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Bold.ttf differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-BoldItalic.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-BoldItalic.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-BoldItalic.ttf
new file mode 100755
index 0000000..3c9a7a3
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-BoldItalic.ttf 
differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Italic.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Italic.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Italic.ttf
new file mode 100755
index 0000000..ff6046d
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Italic.ttf 
differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Light.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Light.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Light.ttf
new file mode 100755
index 0000000..94c6bcc
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Light.ttf differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-LightItalic.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-LightItalic.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-LightItalic.ttf
new file mode 100755
index 0000000..04cc002
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-LightItalic.ttf 
differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Medium.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Medium.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Medium.ttf
new file mode 100755
index 0000000..39c63d7
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Medium.ttf 
differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-MediumItalic.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-MediumItalic.ttf
 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-MediumItalic.ttf
new file mode 100755
index 0000000..dc743f0
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-MediumItalic.ttf
 differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Regular.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Regular.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Regular.ttf
new file mode 100755
index 0000000..8c082c8
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Regular.ttf 
differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Thin.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Thin.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Thin.ttf
new file mode 100755
index 0000000..d695550
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-Thin.ttf differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-ThinItalic.ttf
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-ThinItalic.ttf 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-ThinItalic.ttf
new file mode 100755
index 0000000..07172ff
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/fonts/Roboto/Roboto-ThinItalic.ttf 
differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/fonts/font.css
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/fonts/font.css 
b/metron-interface/metron-alerts/src/assets/fonts/font.css
new file mode 100644
index 0000000..30b6f24
--- /dev/null
+++ b/metron-interface/metron-alerts/src/assets/fonts/font.css
@@ -0,0 +1,101 @@
+/**
+ * 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.
+ */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 100;
+  src: local('Roboto Thin'), local('Roboto-Thin'), 
url("Roboto/Roboto-Thin.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  src: local('Roboto Light'), local('Roboto-Light'), 
url("Roboto/Roboto-Light.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto-Regular';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Roboto'), local('Roboto-Regular'), 
url("Roboto/Roboto-Regular.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto-Medium';
+  font-style: normal;
+  font-weight: 500;
+  src: local('Roboto Medium'), local('Roboto-Medium'), 
url("Roboto/Roboto-Medium.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Roboto Bold'), local('Roboto-Bold'), 
url("Roboto/Roboto-Bold.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 900;
+  src: local('Roboto Black'), local('Roboto-Black'), 
url("Roboto/Roboto-Black.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 100;
+  src: local('Roboto Thin Italic'), local('Roboto-ThinItalic'), 
url("Roboto/Roboto-ThinItalic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 300;
+  src: local('Roboto Light Italic'), local('Roboto-LightItalic'), 
url("Roboto/Roboto-LightItalic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 400;
+  src: local('Roboto Italic'), local('Roboto-Italic'), 
url("Roboto/Roboto-Italic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto-MediumItalic';
+  font-style: italic;
+  font-weight: 500;
+  src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), 
url("Roboto/Roboto-MediumItalic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), 
url("Roboto/Roboto-BoldItalic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 900;
+  src: local('Roboto Black Italic'), local('Roboto-BlackItalic'), 
url("Roboto/Roboto-BlackItalic.ttf");
+}
+

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/images/login.jpg
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/images/login.jpg 
b/metron-interface/metron-alerts/src/assets/images/login.jpg
new file mode 100644
index 0000000..a76a206
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/images/login.jpg differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/assets/images/logo.png
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/assets/images/logo.png 
b/metron-interface/metron-alerts/src/assets/images/logo.png
new file mode 100644
index 0000000..a0bc8cb
Binary files /dev/null and 
b/metron-interface/metron-alerts/src/assets/images/logo.png differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/environments/environment.js
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/environments/environment.js 
b/metron-interface/metron-alerts/src/environments/environment.js
new file mode 100644
index 0000000..acb2f54
--- /dev/null
+++ b/metron-interface/metron-alerts/src/environments/environment.js
@@ -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.
+ */
+// The file contents for the current environment will overwrite these during 
build.
+// The build system defaults to the dev environment which uses 
`environment.ts`, but if you do
+// `ng build --env=prod` then `environment.prod.ts` will be used instead.
+// The list of which env maps to which file can be found in `angular-cli.json`.
+"use strict";
+exports.environment = {
+    production: false
+};

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/environments/environment.prod.js
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/environments/environment.prod.js 
b/metron-interface/metron-alerts/src/environments/environment.prod.js
new file mode 100644
index 0000000..abb15bb
--- /dev/null
+++ b/metron-interface/metron-alerts/src/environments/environment.prod.js
@@ -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.
+ */
+"use strict";
+exports.environment = {
+    production: true
+};

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/environments/environment.prod.ts
----------------------------------------------------------------------
diff --git 
a/metron-interface/metron-alerts/src/environments/environment.prod.ts 
b/metron-interface/metron-alerts/src/environments/environment.prod.ts
new file mode 100644
index 0000000..53fca2d
--- /dev/null
+++ b/metron-interface/metron-alerts/src/environments/environment.prod.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 const environment = {
+  production: true,
+  dataSource: 'elastic'
+};

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/environments/environment.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/environments/environment.ts 
b/metron-interface/metron-alerts/src/environments/environment.ts
new file mode 100644
index 0000000..041db37
--- /dev/null
+++ b/metron-interface/metron-alerts/src/environments/environment.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.
+ */
+// The file contents for the current environment will overwrite these during 
build.
+// The build system defaults to the dev environment which uses 
`environment.ts`, but if you do
+// `ng build --env=prod` then `environment.prod.ts` will be used instead.
+// The list of which env maps to which file can be found in `angular-cli.json`.
+
+export const environment = {
+  production: false
+};

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/favicon.ico
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/favicon.ico 
b/metron-interface/metron-alerts/src/favicon.ico
new file mode 100644
index 0000000..a108a83
Binary files /dev/null and b/metron-interface/metron-alerts/src/favicon.ico 
differ

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/font.css
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/font.css 
b/metron-interface/metron-alerts/src/font.css
new file mode 100644
index 0000000..a3a84b8
--- /dev/null
+++ b/metron-interface/metron-alerts/src/font.css
@@ -0,0 +1,101 @@
+/**
+ * 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.
+ */
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 100;
+  src: local('Roboto Thin'), local('Roboto-Thin'), 
url("assets/fonts/Roboto/Roboto-Thin.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 300;
+  src: local('Roboto Light'), local('Roboto-Light'), 
url("assets/fonts/Roboto/Roboto-Light.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto-Regular';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Roboto'), local('Roboto-Regular'), 
url("assets/fonts/Roboto/Roboto-Regular.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto-Medium';
+  font-style: normal;
+  font-weight: 500;
+  src: local('Roboto Medium'), local('Roboto-Medium'), 
url("assets/fonts/Roboto/Roboto-Medium.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 700;
+  src: local('Roboto Bold'), local('Roboto-Bold'), 
url("assets/fonts/Roboto/Roboto-Bold.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: normal;
+  font-weight: 900;
+  src: local('Roboto Black'), local('Roboto-Black'), 
url("assets/fonts/Roboto/Roboto-Black.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 100;
+  src: local('Roboto Thin Italic'), local('Roboto-ThinItalic'), 
url("assets/fonts/Roboto/Roboto-ThinItalic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 300;
+  src: local('Roboto Light Italic'), local('Roboto-LightItalic'), 
url("assets/fonts/Roboto/Roboto-LightItalic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 400;
+  src: local('Roboto Italic'), local('Roboto-Italic'), 
url("assets/fonts/Roboto/Roboto-Italic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto-MediumItalic';
+  font-style: italic;
+  font-weight: 500;
+  src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), 
url("assets/fonts/Roboto/Roboto-MediumItalic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 700;
+  src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), 
url("assets/fonts/Roboto/Roboto-BoldItalic.ttf");
+}
+
+@font-face {
+  font-family: 'Roboto';
+  font-style: italic;
+  font-weight: 900;
+  src: local('Roboto Black Italic'), local('Roboto-BlackItalic'), 
url("assets/fonts/Roboto/Roboto-BlackItalic.ttf");
+}
+

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/index.html
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/index.html 
b/metron-interface/metron-alerts/src/index.html
new file mode 100644
index 0000000..7795faa
--- /dev/null
+++ b/metron-interface/metron-alerts/src/index.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.
+  -->
+<!doctype html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>Metron Alerts</title>
+  <base href="/">
+
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link rel="icon" type="image/x-icon" href="favicon.ico">
+  <link rel="stylesheet" type="text/css" href="assets/fonts/font.css">
+</head>
+<body>
+  <metron-alerts-root>Loading...</metron-alerts-root>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/main.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/main.ts 
b/metron-interface/metron-alerts/src/main.ts
new file mode 100644
index 0000000..ef1d816
--- /dev/null
+++ b/metron-interface/metron-alerts/src/main.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.
+ */
+import { enableProdMode } from '@angular/core';
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
+
+import { AppModule } from './app/app.module';
+import { environment } from './environments/environment';
+
+if (environment.production) {
+  enableProdMode();
+}
+
+platformBrowserDynamic().bootstrapModule(AppModule);

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/metron-dialog.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/metron-dialog.scss 
b/metron-interface/metron-alerts/src/metron-dialog.scss
new file mode 100644
index 0000000..9b49e17
--- /dev/null
+++ b/metron-interface/metron-alerts/src/metron-dialog.scss
@@ -0,0 +1,56 @@
+/**
+ * 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.
+ */
+.metron-dialog.modal
+{
+  .modal-content
+  {
+    background-color: $mine-shaft-2;
+    border: solid 1px $tundora;
+  }
+
+  .close
+  {
+    color: #BDBDBD;
+    text-shadow: 0 1px 0 $silver;
+    opacity: 1;
+    font-size: 28px;
+  }
+
+  .modal-title
+  {
+    color: $silver;
+    font-size: 18px;
+  }
+
+  .modal-body
+  {
+    color: $dusty-grey-1;
+    font-size: 14px;
+  }
+
+  .modal-header
+  {
+    border-bottom: none;
+  }
+
+  .modal-footer
+  {
+    text-align: left;
+    border-top: none;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/polyfills.ts
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/polyfills.ts 
b/metron-interface/metron-alerts/src/polyfills.ts
new file mode 100644
index 0000000..400600c
--- /dev/null
+++ b/metron-interface/metron-alerts/src/polyfills.ts
@@ -0,0 +1,68 @@
+/**
+ * This file includes polyfills needed by Angular and is loaded before the app.
+ * You can add your own extra polyfills to this file.
+ *
+ * This file is divided into 2 sections:
+ *   1. Browser polyfills. These are applied before loading ZoneJS and are 
sorted by browsers.
+ *   2. Application imports. Files imported after ZoneJS that should be loaded 
before your main
+ *      file.
+ *
+ * The current setup is for so-called "evergreen" browsers; the last versions 
of browsers that
+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 
(including Opera),
+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
+ *
+ * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
+ */
+
+/***************************************************************************************************
+ * BROWSER POLYFILLS
+ */
+
+/** IE9, IE10 and IE11 requires all of the following polyfills. **/
+import 'core-js/es6/symbol';
+import 'core-js/es6/object';
+import 'core-js/es6/function';
+import 'core-js/es6/parse-int';
+import 'core-js/es6/parse-float';
+import 'core-js/es6/number';
+import 'core-js/es6/math';
+import 'core-js/es6/string';
+import 'core-js/es6/date';
+import 'core-js/es6/array';
+import 'core-js/es6/regexp';
+import 'core-js/es6/map';
+import 'core-js/es6/set';
+
+/** IE10 and IE11 requires the following for NgClass support on SVG elements */
+// import 'classlist.js';  // Run `npm install --save classlist.js`.
+
+/** IE10 and IE11 requires the following to support `@angular/animation`. */
+// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
+
+
+/** Evergreen browsers require these. **/
+import 'core-js/es6/reflect';
+import 'core-js/es7/reflect';
+
+
+/** ALL Firefox browsers require the following to support 
`@angular/animation`. **/
+// 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
+ */
+
+/**
+ * Date, currency, decimal and percent pipes.
+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
+ */
+// import 'intl';  // Run `npm install --save intl`.

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/slider.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/slider.scss 
b/metron-interface/metron-alerts/src/slider.scss
new file mode 100644
index 0000000..5168db0
--- /dev/null
+++ b/metron-interface/metron-alerts/src/slider.scss
@@ -0,0 +1,139 @@
+/**
+ * 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";
+
+$edit-child-background: #2E2E2E;
+$edit-background-border: #5C5C5C;
+
+$dialog-1x-width: 340px;
+$dialog-2x-width: 680px;
+$dialog-4x-width: 1380px;
+
+.metron-slider-pane-details
+{
+  display: inline-block;
+  float: right;
+  word-wrap: break-word;
+  height: auto;
+  min-height: 100%;
+  position: absolute;
+
+  top: 0;
+  z-index: 9;
+  background: $edit-child-background;
+  border: 1px solid $edit-background-border;
+
+  .close-button
+  {
+    font-size: 26px;
+    cursor: pointer;
+  }
+}
+
+.metron-slider-pane-editable
+{
+  @extend .metron-slider-pane-details;
+
+  height: auto;
+  background: $eden;
+  padding-bottom: 70px;
+  border-left: 1px solid $blue-mine;
+}
+
+@media only screen and (min-width: 500px) {
+  .dialog1x {
+    width: $dialog-1x-width;
+  }
+  .dialog2x {
+    width: $dialog-2x-width;
+  }
+}
+
+@media only screen and (min-width: 2020px) {
+  .dialog1x {
+    width: $dialog-2x-width;
+  }
+  .dialog2x {
+    width: $dialog-4x-width;
+  }
+}
+
+@mixin keyframes($animation-name, $start, $end) {
+  @-webkit-keyframes #{$animation-name} {
+    0% {
+      --webkit-transform: translateX(#{$start});
+    }
+    100% {
+      -webkit-transform: translateX(#{$end});
+    }
+  }
+  @-moz-keyframes #{$animation-name} {
+    0% {
+      -moz-transform: translateX(#{$start});
+    }
+    100% {
+      -moz-transform: translateX(#{$end});
+    }
+  }
+  @-ms-keyframes #{$animation-name} {
+    0% {
+      -ms-transform: translateX(#{$start});
+    }
+    100% {
+      -ms-transform: translateX(#{$end});
+    }
+  }
+  @-o-keyframes #{$animation-name} {
+    0% {
+      -o-transform: translateX(#{$start});
+    }
+    100% {
+      -o-transform: translateX(#{$end});
+    }
+  }
+  @keyframes #{$animation-name} {
+    0% {
+      transform: translateX(#{$start});
+    }
+    100% {
+      transform: translateX(#{$end});
+    }
+  }
+}
+
+@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", "0px")
+
+.load-right-to-left{
+  @include animation("keyframe-dialog-rtl", "0.5s", "linear");
+
+  right: 0px;
+  float: right;
+}
+
+@include keyframes("keyframe-dialog-ltr", "-320px", "0px")
+
+.load-left-to-right{
+  @include animation("keyframe-dialog-ltr", "0.5s", "linear")
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/7d554444/metron-interface/metron-alerts/src/styles.scss
----------------------------------------------------------------------
diff --git a/metron-interface/metron-alerts/src/styles.scss 
b/metron-interface/metron-alerts/src/styles.scss
new file mode 100644
index 0000000..12ac9f7
--- /dev/null
+++ b/metron-interface/metron-alerts/src/styles.scss
@@ -0,0 +1,244 @@
+/**
+ * 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.
+ */
+/* You can add global styles to this file, and also import other style files */
+@import "vendor.scss";
+@import "_variables.scss";
+@import "slider.scss";
+@import "metron-dialog.scss";
+
+body,
+button {
+    font-family: Roboto-Regular;
+}
+
+.mrow {
+    @extend .row;
+    @extend .mx-0;
+}
+
+.input {
+  background: $input-background;
+  border: 1px solid $input-border-color;
+  color: $body-color;
+  border-radius: 2px;
+
+  &:focus {
+    outline: none;
+  }
+  &::-webkit-input-placeholder {
+    @include place-holder-text;
+  }
+  &:-moz-placeholder {
+    @include place-holder-text;
+  }
+
+  &::-moz-placeholder {
+    @include place-holder-text;
+  }
+
+  &:-ms-input-placeholder {
+    @include place-holder-text;
+  }
+}
+
+.table {
+    thead tr th {
+        font-size: 13px;
+        border-top: none;
+    }
+    tbody tr td {
+        font-size: 14px;
+        cursor: pointer;
+    }
+    tr:last-child td {
+      border-bottom: 1px solid $table-border-color;
+    }
+    td a {
+      border: 1px solid transparent;
+    }
+}
+
+form
+{
+  label
+  {
+    font-family: Roboto-Medium;
+    font-size: 12px;
+    color: $dusty-grey;
+    margin: 0px 0px 2px 5px;
+  }
+
+  input.form-control
+  {
+    background: $mine-shaft-1;
+  }
+}
+
+.form-control, select
+{
+  border: solid 1px $tundora;
+  background-color: $mine-shaft;
+  font-family: Roboto;
+  font-size: 13px;
+  color: $silver;
+  height: 35px;
+
+  &[readonly]
+  {
+    background: $tundora-1;
+    border: 1px solid $tundora;
+  }
+
+  &:focus
+  {
+    background-color: $mine-shaft;
+    border-color: $tundora;
+    color: $silver;
+  }
+}
+
+.fontawesome-checkbox
+{
+    display: none;
+}
+
+.fontawesome-checkbox ~label
+{
+    margin: 0px;
+    display: inline-block;
+    height: 13px;
+    line-height: 13px;
+    border: 1px solid $tundora;
+    border-radius: 2px;
+}
+
+.fontawesome-checkbox ~label:before {
+    font-family: "FontAwesome";
+    font-style: normal;
+    font-size: 12px;
+    content: '\f0c8';
+    color: $mine-shaft-2;
+}
+
+.fontawesome-checkbox:checked ~ label:before {
+    content: '\f14a';
+    color: $checkbox-checked-color;
+}
+
+.text-color-curious-blue-13 {
+  color: $curious-blue;
+  font-size: 13px;
+}
+
+.anchor {
+  cursor: pointer;
+}
+
+.line-color-tundora {
+  display: block;
+  height: 1px;
+  border: 0;
+  border-top: 1px solid $tundora;
+  margin: 1em 0;
+  padding: 0;
+}
+
+.readonly-bg {
+    background: $mine-shaft;
+}
+
+.background-tiber {
+  background: $tiber
+}
+/* Navcontent Layout */
+.nav-content {
+  padding-right: 0px;
+
+  .col-fixed-200 {
+    @extend .readonly-bg;
+
+    top: 0px;
+    z-index: 1;
+    height: 100%;
+    width: 200px;
+    position: absolute;
+    padding: 15px;
+
+    .title {
+      font-size: 14px;
+      color: $body-color;
+    }
+    .m-nav {
+      padding-left: 5px;
+    }
+  }
+  .col-offset-200{
+    padding-left:215px;
+    z-index:0;
+  }
+}
+
+/* Buttons */
+
+.metron-floating-button-bar-1x {
+  @extend .pb-3;
+  @extend .dialog1x;
+
+  bottom: 0;
+  position: fixed;
+  background: $eden;
+  border-top: 1px solid $blue-mine;
+}
+
+.metron-floating-button-bar-2x {
+  @extend .pb-3;
+  @extend .dialog2x;
+
+  bottom: 0;
+  position: fixed;
+  background: $eden;
+  border-top: 1px solid $blue-mine;
+}
+
+.btn-all_ports {
+  background-color: $all-ports;
+  border-color: $all-ports;
+  color: white;
+  font-size: 14px;
+  min-width: 85px;
+  width: 85px;
+  cursor: pointer;
+  &:focus
+  {
+    outline: none;
+  }
+}
+
+.btn-mine_shaft_2 {
+  background-color: $mine-shaft_2;
+  border-color: $blue-chill;
+  color: $piction-blue;
+  font-size: 14px;
+  min-width: 85px;
+  width: 85px;
+  cursor: pointer;
+  &:focus
+  {
+    outline: none;
+  }
+}
\ No newline at end of file

Reply via email to