FM GUI as an NPM library for GUI 2

* added dynamic loading of external modules
* new commands on Alarm to allow create/updating/delete
* new fields in alarm gui

Change-Id: I9a7f4d665618a7949bb02039374974dabf6e5363
diff --git a/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/nav/nav.service.ts b/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/nav/nav.service.ts
index 22f0549..a24f242 100644
--- a/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/nav/nav.service.ts
+++ b/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/nav/nav.service.ts
@@ -14,9 +14,17 @@
  * limitations under the License.
  */
 import { Injectable } from '@angular/core';
+import { HttpClient } from '@angular/common/http';
 import { FnService } from '../util/fn.service';
 import { LogService } from '../log.service';
 
+export interface UiView {
+    id: string;
+    icon: string;
+    cat: string;
+    label: string;
+}
+
 /**
  * ONOS GUI -- Navigation Service
  */
@@ -26,9 +34,15 @@
 export class NavService {
     public showNav = false;
 
+    uiPlatformViews = new Array<UiView>();
+    uiNetworkViews = new Array<UiView>();
+    uiOtherViews = new Array<UiView>();
+    uiHiddenViews = new Array<UiView>();
+
     constructor(
         private _fn_: FnService,
-        private log: LogService
+        private log: LogService,
+        private httpClient: HttpClient
     ) {
         this.log.debug('NavService constructed');
     }
@@ -49,4 +63,24 @@
         }
     }
 
+    getUiViews() {
+        this.uiPlatformViews = new Array<UiView>();
+        this.uiNetworkViews = new Array<UiView>();
+        this.uiOtherViews = new Array<UiView>();
+        this.uiHiddenViews = new Array<UiView>();
+        this.httpClient.get('rs/nav/uiextensions').subscribe((v: UiView[]) => {
+            v.forEach((uiView: UiView) => {
+                if (uiView.cat === 'PLATFORM') {
+                    this.uiPlatformViews.push(uiView);
+                } else if (uiView.cat === 'NETWORK') {
+                    this.uiNetworkViews.push(uiView);
+                } else if (uiView.cat === 'HIDDEN') {
+                    this.uiHiddenViews.push(uiView);
+                } else {
+                    this.uiOtherViews.push(uiView);
+                }
+            });
+        });
+    }
+
 }