Initial import of Angular5 components services and modules

Change-Id: I3953f1fbf7d5697a1c6d432808dd17d816ec285a
diff --git a/web/gui2/src/main/webapp/app/detectbrowser.directive.ts b/web/gui2/src/main/webapp/app/detectbrowser.directive.ts
new file mode 100644
index 0000000..2c2b335
--- /dev/null
+++ b/web/gui2/src/main/webapp/app/detectbrowser.directive.ts
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2014-present Open Networking Foundation
+ *
+ * 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.
+ */
+import { Directive } from '@angular/core';
+import { FnService } from './fw/util/fn.service';
+import { LogService } from './log.service';
+import { OnosService } from './onos.service';
+
+/**
+ * ONOS GUI -- Detect Browser Directive
+ */
+@Directive({
+  selector: '[onosDetectBrowser]'
+})
+export class DetectBrowserDirective {
+  constructor(
+    private fs: FnService,
+    private log: LogService,
+    private onos: OnosService
+  ) {
+        log.debug('DetectBrowserDirective constructed');
+
+        const body: HTMLBodyElement = document.getElementsByTagName('body')[0];
+//        let body = d3.select('body');
+        let browser = '';
+        if (fs.isChrome()) {
+            browser = 'chrome';
+        } else if (fs.isSafari()) {
+            browser = 'safari';
+        } else if (fs.isFirefox()) {
+            browser = 'firefox';
+        }
+        body.classList.add(browser);
+//        body.classed(browser, true);
+        this.onos.browser = browser;
+
+        if (fs.isMobile()) {
+            body.classList.add('mobile');
+            this.onos.mobile = true;
+        }
+
+        this.log.debug('Detected browser is', fs.cap(browser));
+    }
+}