aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2
diff options
context:
space:
mode:
authorIdan Amit <ia096e@intl.att.com>2018-01-15 14:31:42 +0200
committerMichael Lando <ml636r@att.com>2018-01-16 16:58:47 +0000
commit5197c8b7b3cf7576f1198e4b59a7d6484e793107 (patch)
tree55e938e420d863fac9f1c92901f4e7c2e34787c4 /catalog-ui/src/app/ng2
parentfd19ae43d9f057f9ce51d48f95ef3f5f60173f22 (diff)
Designer-view component for top-nav
Create a designer-view component for opening a designer view from the top-nav Updated the API to return the designers as a list and not as an object Created a designer-frame component that will get a designer url to open in the dedicated position Change-Id: Ic42f7695277e88aacdeaa74d4d0f95b49ce44999 Issue-ID: SDC-884 Signed-off-by: Idan Amit <ia096e@intl.att.com>
Diffstat (limited to 'catalog-ui/src/app/ng2')
-rw-r--r--catalog-ui/src/app/ng2/app.module.ts4
-rw-r--r--catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts23
-rw-r--r--catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.html5
-rw-r--r--catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.less8
-rw-r--r--catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.ts25
-rw-r--r--catalog-ui/src/app/ng2/components/ui/designer/designer-frame.module.ts25
-rw-r--r--catalog-ui/src/app/ng2/pipes/global-pipes.module.ts10
-rw-r--r--catalog-ui/src/app/ng2/pipes/safeUrlSanitizer.pipe.ts10
-rw-r--r--catalog-ui/src/app/ng2/services/config.service.ts17
9 files changed, 111 insertions, 16 deletions
diff --git a/catalog-ui/src/app/ng2/app.module.ts b/catalog-ui/src/app/ng2/app.module.ts
index 7108be93f9..ecaa26e1ce 100644
--- a/catalog-ui/src/app/ng2/app.module.ts
+++ b/catalog-ui/src/app/ng2/app.module.ts
@@ -46,6 +46,7 @@ import {UserService} from "./services/user.service";
import {SdcConfig} from "./config/sdc-config.config";
import { TranslateModule } from "./shared/translator/translate.module";
import { TranslationServiceConfig } from "./config/translation.service.config";
+import {DesignerFrameModule} from "./components/ui/designer/designer-frame.module";
export const upgradeAdapter = new UpgradeAdapter(forwardRef(() => AppModule));
@@ -72,7 +73,8 @@ export function configServiceFactory(config:ConfigService) {
//We need to import them here since we use them in angular1
ConnectionWizardModule,
- PropertiesAssignmentModule
+ PropertiesAssignmentModule,
+ DesignerFrameModule
],
exports: [],
entryComponents: [],
diff --git a/catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts b/catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts
index f48aa4801f..846b84c69f 100644
--- a/catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts
+++ b/catalog-ui/src/app/ng2/components/layout/top-nav/top-nav.component.ts
@@ -24,6 +24,7 @@ import {MenuItemGroup, MenuItem} from "app/utils";
import {UserService} from "../../../services/user.service";
import {SdcConfigToken, ISdcConfig} from "../../../config/sdc-config.config";
import {TranslateService} from "../../../shared/translator/translate.service";
+import {DesignersConfiguration, Designer} from "app/models";
declare const window:any;
@@ -62,10 +63,20 @@ export class TopNavComponent {
let result = -1;
//set result to current state
- this.topLvlMenu.menuItems.forEach((item:MenuItem, index:number)=> {
+ this.topLvlMenu.menuItems.every((item:MenuItem, index:number)=> {
if (item.state === this.$state.current.name) {
- result = index;
+ if (this.$state.current.name === 'designers') {
+ const designerIdx = _.findIndex(DesignersConfiguration.designers, (designer: Designer) => designer.designerStateUrl === this.$state.params.path);
+ if (designerIdx !== -1) {
+ result = index + designerIdx;
+ return false;
+ }
+ } else {
+ result = index;
+ return false;
+ }
}
+ return true;
});
//if it's a different state , checking previous state param
@@ -109,6 +120,10 @@ export class TopNavComponent {
tmpArray.push(new MenuItem(hostedApp.navTitle, null, hostedApp.defaultState, "goToState", null, null));
}
});
+
+ _.each(DesignersConfiguration.designers, (designer: Designer) => {
+ tmpArray.push(new MenuItem(designer.displayName, null, "designers", "goToState", {path: designer.designerStateUrl}, null));
+ })
}
this.topLvlMenu = new MenuItemGroup(0, tmpArray, true);
@@ -124,9 +139,9 @@ export class TopNavComponent {
}
}
- goToState(state:string, params:Array<any>):Promise<boolean> {
+ goToState(state:string, params:any):Promise<boolean> {
return new Promise((resolve, reject) => {
- this.$state.go(state, params && params.length > 0 ? [0] : undefined);
+ this.$state.go(state, params || undefined);
resolve(true);
});
}
diff --git a/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.html b/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.html
new file mode 100644
index 0000000000..752e49e218
--- /dev/null
+++ b/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.html
@@ -0,0 +1,5 @@
+<div class="designer-frame">
+ <div class="w-sdc-main-container">
+ <iframe class="designer-iframe" [src]="designerUrl | safeUrlSanitizer"></iframe>
+ </div>
+</div>
diff --git a/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.less b/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.less
new file mode 100644
index 0000000000..4b9456b5b1
--- /dev/null
+++ b/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.less
@@ -0,0 +1,8 @@
+.designer-frame {
+
+ .designer-iframe {
+ width: 100%;
+ height: 100%;
+ border: none;
+ }
+}
diff --git a/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.ts b/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.ts
new file mode 100644
index 0000000000..b66008f022
--- /dev/null
+++ b/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.component.ts
@@ -0,0 +1,25 @@
+import {Component, OnInit, Input} from "@angular/core";
+import {Designer} from "app/models";
+
+@Component({
+ selector: 'designer-frame',
+ templateUrl: './designer-frame.component.html',
+ styleUrls:['designer-frame.component.less']
+})
+
+export class DesignerFrameComponent implements OnInit {
+
+ @Input() designer: Designer;
+ designerUrl: string;
+
+ constructor() {
+ }
+
+ ngOnInit(): void {
+
+ this.designerUrl = this.designer.designerProtocol + "://" +
+ this.designer.designerHost + ":" +
+ this.designer.designerPort +
+ this.designer.designerPath;
+ }
+}
diff --git a/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.module.ts b/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.module.ts
new file mode 100644
index 0000000000..1edf195230
--- /dev/null
+++ b/catalog-ui/src/app/ng2/components/ui/designer/designer-frame.module.ts
@@ -0,0 +1,25 @@
+import {NgModule} from "@angular/core";
+import { CommonModule } from '@angular/common';
+import {DesignerFrameComponent} from "./designer-frame.component";
+import {LayoutModule} from "../../layout/layout.module";
+import {GlobalPipesModule} from "../../../pipes/global-pipes.module";
+
+
+@NgModule({
+ declarations: [
+ DesignerFrameComponent
+ ],
+ imports: [
+ CommonModule,
+ LayoutModule,
+ GlobalPipesModule
+ ],
+ entryComponents: [DesignerFrameComponent],
+ exports: [
+ DesignerFrameComponent
+ ],
+ providers: []
+})
+export class DesignerFrameModule {
+
+}
diff --git a/catalog-ui/src/app/ng2/pipes/global-pipes.module.ts b/catalog-ui/src/app/ng2/pipes/global-pipes.module.ts
index 1d81a1a4bf..e89a816e95 100644
--- a/catalog-ui/src/app/ng2/pipes/global-pipes.module.ts
+++ b/catalog-ui/src/app/ng2/pipes/global-pipes.module.ts
@@ -3,21 +3,23 @@ import {SearchFilterPipe} from "./searchFilter.pipe";
import {KeysPipe} from "./keys.pipe";
import {GroupByPipe} from "./groupBy.pipe";
import {NgModule} from "@angular/core";
+import {SafeUrlSanitizerPipe} from "./safeUrlSanitizer.pipe";
@NgModule({
declarations: [
ContentAfterLastDotPipe,
GroupByPipe,
KeysPipe,
- SearchFilterPipe
-
+ SearchFilterPipe,
+ SafeUrlSanitizerPipe
],
-
+
exports: [
ContentAfterLastDotPipe,
GroupByPipe,
KeysPipe,
- SearchFilterPipe
+ SearchFilterPipe,
+ SafeUrlSanitizerPipe
]
})
diff --git a/catalog-ui/src/app/ng2/pipes/safeUrlSanitizer.pipe.ts b/catalog-ui/src/app/ng2/pipes/safeUrlSanitizer.pipe.ts
new file mode 100644
index 0000000000..9d8588030e
--- /dev/null
+++ b/catalog-ui/src/app/ng2/pipes/safeUrlSanitizer.pipe.ts
@@ -0,0 +1,10 @@
+import { Pipe, PipeTransform } from '@angular/core';
+import { DomSanitizer } from '@angular/platform-browser';
+
+@Pipe({ name: 'safeUrlSanitizer' })
+export class SafeUrlSanitizerPipe implements PipeTransform {
+ constructor(private sanitizer: DomSanitizer) {}
+ transform(url) {
+ return this.sanitizer.bypassSecurityTrustResourceUrl(url);
+ }
+}
diff --git a/catalog-ui/src/app/ng2/services/config.service.ts b/catalog-ui/src/app/ng2/services/config.service.ts
index 1c0ee18d33..8675ea7d3d 100644
--- a/catalog-ui/src/app/ng2/services/config.service.ts
+++ b/catalog-ui/src/app/ng2/services/config.service.ts
@@ -25,7 +25,7 @@
import { Injectable, Inject } from '@angular/core';
import { Http, Response } from '@angular/http';
import 'rxjs/add/operator/toPromise';
-import {IAppConfigurtaion, ValidationConfiguration, Validations} from "app/models";
+import {IAppConfigurtaion, ValidationConfiguration, Validations, Designers, DesignersConfiguration} from "app/models";
import {IApi} from "app/models/app-config";
import {SdcConfigToken, ISdcConfig} from "../config/sdc-config.config";
@@ -69,15 +69,18 @@ export class ConfigService {
return promise;
}
- loadDesignersConfiguration(): void {
+ loadDesignersConfiguration(): Promise<DesignersConfiguration> {
let url:string = this.api.no_proxy_root + this.api.GET_designers_configuration;
let promise: Promise<any> = this.http.get(url).map((res: Response) => res.json()).toPromise();
-
- promise.then((config:any) => {
- console.log(config);
+ promise.then((designersData: Designers) => {
+ DesignersConfiguration.designers = designersData;
}).catch((ex) => {
- console.error('Error was:', ex);
- })
+ console.error("Error loading designers configuration from BE", ex);
+
+ DesignersConfiguration.designers = [] as Designers;
+ });
+
+ return promise;
}
}