diff options
Diffstat (limited to 'portal-FE-common/src/app/pages/widget-catalog')
4 files changed, 329 insertions, 0 deletions
diff --git a/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.html b/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.html new file mode 100644 index 00000000..927e264c --- /dev/null +++ b/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.html @@ -0,0 +1,100 @@ +<!-- + ============LICENSE_START========================================== + ONAP Portal + =================================================================== + Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + =================================================================== + + Unless otherwise specified, all software contained herein is licensed + under the Apache License, Version 2.0 (the "License"); + you may not use this software 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. + + Unless otherwise specified, all documentation contained herein is licensed + under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + you may not use this documentation except in compliance with the License. + You may obtain a copy of the License at + + https://creativecommons.org/licenses/by/4.0/ + + Unless required by applicable law or agreed to in writing, documentation + 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. + + ============LICENSE_END============================================ + + + --> +<div class="container"> + <div id="page-content"> + <div id="title"> + <h1>{{'Widget Catalog'}}</h1> + </div> + <div> + <div> + <div id="widgets"> + + + <div style="height: 100%"> + <gridster [options]="options" class="appCatalogue-boarder"> + + + <div *ngFor="let item of layout"> + <gridster-item [item]="item" > + <div class="gridster-box"> + <div class="gridster-box-header"> + + <mat-icon class="icon-content-gridguide">drag_handle</mat-icon> + <h3>{{ item.name | elipsis: 13}}</h3> + <span style="position: absolute;right:1em"> + <label id="widget-checkbox-label" class="checkbox"> + + <input type="checkbox" id="{{item.name.split(' ').join('-')}}-checkbox" + [(ngModel)]="item.select" (ngModelChange)="storeSelection(item)" /> + + + <i class="skin"></i> + </label> + </span> + + + </div> + <div class="gridster-box-content" > + <app-dynamic-widget [widgetType] = "item.name"></app-dynamic-widget> + </div> + + </div> + </gridster-item> + </div> + + + + </gridster> + </div> + </div> + </div> + <div id="widgets-disclaimer" class="w-ecomp-main-disclaimer"> + To request access to an application widget, please visit the <a>Get Access</a> page. + </div> + </div> + </div> +</div> +<div> + <div> + + </div> + <div> + <div></div> + <div></div> + </div> +</div>
\ No newline at end of file diff --git a/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.scss b/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.scss new file mode 100644 index 00000000..cbdfd12b --- /dev/null +++ b/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.scss @@ -0,0 +1,119 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * Copyright © 2019 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software 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. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * 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. + * + * ============LICENSE_END============================================ + * + * + */ + + + +:host { .toolbar { + height: 100px; + display: flex; + } gridster { + display: flex; + height: calc(100vh - 115px); + flex-direction: column; + }} + .icon-content-gridguide{ + cursor:move; + font-size: 22px; + } + .form-row { + margin-top: -14px; + } + .griditem-header{ + + + border-bottom: 1px; + border-bottom-color: solid gray; + + + + } + +.checkbox, .radio { + min-height: 10px; + padding-left: 0px; +} + +.appCatalogue-boarder{ + background-color: #eee; + border: 1px dashed white; + height: 100%; + + overflow-y: auto; + overflow-x: hidden; + } + + .gridster-box { + height: 100%; + border: 1px solid #ccc; + background-color: #fff; + transition: transform 0.5s ease-out; +} +.gridster-box-header { + background-color: #fff; + padding: 0 0px 0 10px; + border-bottom: 1px solid #ccc; + position: relative; + height: 50px !important; +} +.gridster-box-header h3 { + margin-top: 15px; + display: inline-block; + font-size: 70%; + font-family: "Omnes-ECOMP-W02", Arial; +} +.gridster-box-content { + //padding: 59px; + overflow-y: scroll; + height: 100%; + +} + +.gridster-box-header-btns { + top: 15px; + right: 10px; + position: absolute; +} +.checkbox input{ + margin: 6px; + left: 112px; + top: -20px; + } +.checkbox .skin { + left: 125px; + top: -18px; +}
\ No newline at end of file diff --git a/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.spec.ts b/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.spec.ts new file mode 100644 index 00000000..83de0040 --- /dev/null +++ b/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { WidgetCatalogComponent } from './widget-catalog.component'; + +describe('WidgetCatalogComponent', () => { + let component: WidgetCatalogComponent; + let fixture: ComponentFixture<WidgetCatalogComponent>; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ WidgetCatalogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(WidgetCatalogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.ts b/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.ts new file mode 100644 index 00000000..c36f9e11 --- /dev/null +++ b/portal-FE-common/src/app/pages/widget-catalog/widget-catalog.component.ts @@ -0,0 +1,85 @@ +import { Component, OnInit } from '@angular/core'; +import { GridsterConfig, GridsterItem } from 'angular-gridster2'; +import { WidgetCatalogService } from '../../shared/services/widget-catalog/widget-catalog.service'; +import { IWidgetCatalog } from '../../shared/model/widget-catalog.model'; +import { Observable } from 'rxjs'; +import { inflateRaw } from 'zlib'; +import { UsersService } from 'src/app/shared/services/users/users.service'; + + +@Component({ + selector: 'app-widget-catalog', + templateUrl: './widget-catalog.component.html', + styleUrls: ['./widget-catalog.component.scss'] +}) +export class WidgetCatalogComponent implements OnInit { + widgetCatalogData: IWidgetCatalog[]; + isCommonError: boolean = false; + isApiRunning: boolean = true; + userName: string; + + + get options(): GridsterConfig { + return this.widgetCatalogService.options; + } get layout(): GridsterItem[] { + return this.widgetCatalogService.layout; + } constructor(private widgetCatalogService: WidgetCatalogService, private userService: UsersService) { + + } + + ngOnInit() { + const widgetCatalogObservable = this.widgetCatalogService.getWidgetCatalog(); + this.widgetCatalogService.layout = []; + this.getUserWidgets(this.userName); + } + + + getUserWidgets(loginName: string) { + const widgetCatalogUserObservable = this.userService.getUserProfile(); + widgetCatalogUserObservable.subscribe((userProfile: any) => { + //console.log('UserProfile is ' + userProfile); + if (userProfile) { + const widgetCatalogObservable = this.widgetCatalogService.getUserWidgets(userProfile.orgUserId); + widgetCatalogObservable.subscribe(data => { + //console.log("What is coming from backend" + JSON.parse(data)); + this.widgetCatalogData = data; + console.log(this.widgetCatalogData); + for (let entry of this.widgetCatalogData) { + if (entry[1] == 'Events' || entry[1] == 'News' || entry[1] == 'Resources') { + var appCatalog = { + id: entry[0], + name: entry[1], + headerName: entry[2], + select: (entry[4] == 'S' || entry[4] === null) ? true : false + }; + this.widgetCatalogService.addItem(appCatalog); + } + } + }); + } + }); + + } + + getUserProfile(): Observable<any> { + const widgetCatalogObservable = this.userService.getUserProfile(); + return widgetCatalogObservable; + } + + storeSelection(widgetCatalogData: any) { + console.log("Store selection called " + widgetCatalogData.select); + if (widgetCatalogData) { + var appData = { + widgetId: widgetCatalogData.id, + select: widgetCatalogData.select, + pending:false + }; + this.widgetCatalogService.updateWidgetCatalog(appData).subscribe(data => { + //console.log("Update App sort data" + data); + }, error => { + console.log('updateWidgetCatalog error' + error); + }); + } + + } +}
\ No newline at end of file |