From 91e3434fc7c515416ff2da10d55acf1d2dbcde71 Mon Sep 17 00:00:00 2001 From: Sudarshan Kumar Date: Thu, 23 Jan 2020 17:06:22 +0530 Subject: Adding new components with portal-FE-common added layout, admins, functional-menu, portal-admins, plugins components along with helpers class, models, pipes and dependent angular services. Issue-ID: PORTAL-795 Change-Id: I8e9771fcee5d0e58c4a48711c943761f29ae48b8 Signed-off-by: Sudarshan Kumar --- .../new-portal-admin.component.html | 54 +++++++++ .../new-portal-admin.component.scss | 37 ++++++ .../new-portal-admin.component.spec.ts | 62 +++++++++++ .../new-portal-admin/new-portal-admin.component.ts | 94 ++++++++++++++++ .../portal-admins/portal-admins.component.html | 87 +++++++++++++++ .../portal-admins/portal-admins.component.scss | 43 +++++++ .../portal-admins/portal-admins.component.spec.ts | 62 +++++++++++ .../pages/portal-admins/portal-admins.component.ts | 124 +++++++++++++++++++++ 8 files changed, 563 insertions(+) create mode 100644 portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.html create mode 100644 portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.scss create mode 100644 portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.spec.ts create mode 100644 portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.ts create mode 100644 portal-FE-common/src/app/pages/portal-admins/portal-admins.component.html create mode 100644 portal-FE-common/src/app/pages/portal-admins/portal-admins.component.scss create mode 100644 portal-FE-common/src/app/pages/portal-admins/portal-admins.component.spec.ts create mode 100644 portal-FE-common/src/app/pages/portal-admins/portal-admins.component.ts (limited to 'portal-FE-common/src/app/pages/portal-admins') diff --git a/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.html b/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.html new file mode 100644 index 00000000..bdd99730 --- /dev/null +++ b/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.html @@ -0,0 +1,54 @@ + + +
+ + + +
\ No newline at end of file diff --git a/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.scss b/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.scss new file mode 100644 index 00000000..7a773398 --- /dev/null +++ b/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.scss @@ -0,0 +1,37 @@ +/*- + * ============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============================================ + * + * + */ \ No newline at end of file diff --git a/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.spec.ts b/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.spec.ts new file mode 100644 index 00000000..cd85fca1 --- /dev/null +++ b/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.spec.ts @@ -0,0 +1,62 @@ +/*- + * ============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============================================ + * + * + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NewPortalAdminComponent } from './new-portal-admin.component'; + +describe('NewPortalAdminComponent', () => { + let component: NewPortalAdminComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NewPortalAdminComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NewPortalAdminComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.ts b/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.ts new file mode 100644 index 00000000..d5cde04b --- /dev/null +++ b/portal-FE-common/src/app/pages/portal-admins/new-portal-admin/new-portal-admin.component.ts @@ -0,0 +1,94 @@ +/*- + * ============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============================================ + * + * + */ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { NgbActiveModal, NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap'; +import { PortalAdmin } from 'src/app/shared/model/PortalAdmin'; +import { PortalAdminsService } from 'src/app/shared/services'; +import { HttpErrorResponse } from '@angular/common/http'; +import { ConfirmationModalComponent } from 'src/app/modals/confirmation-modal/confirmation-modal.component'; +import { InformationModalComponent } from 'src/app/modals/information-modal/information-modal.component'; + +@Component({ + selector: 'app-new-portal-admin', + templateUrl: './new-portal-admin.component.html', + styleUrls: ['./new-portal-admin.component.scss'] +}) +export class NewPortalAdminComponent implements OnInit { + + constructor(public activeModal: NgbActiveModal, private portalAdminsService: PortalAdminsService, + public ngbModal: NgbModal) { } + @Input() title: string; + @Input() id: number; + changedSelectedUser: PortalAdmin; + closeResult: string; + searchTitleText = 'Enter First Name, Last Name or Org User Id'; + placeholderText = 'Search'; + @Output() passBackNewPortalAdmin: EventEmitter = new EventEmitter(); + + ngOnInit() { + } + + changeSelectedUser(user: PortalAdmin) { + this.changedSelectedUser = user; + } + + addNewPortalAdmin(changedSelectedUser: PortalAdmin) { + const modalRef = this.ngbModal.open(InformationModalComponent); + modalRef.componentInstance.title = "Admin Update"; + modalRef.componentInstance.message = `Are you sure you want to add ${changedSelectedUser.firstName} ${changedSelectedUser.lastName} as a Portal Admin?`; + modalRef.result.then((result) => { + if (result === 'Ok') { + this.portalAdminsService.addPortalAdmin(this.changedSelectedUser.orgUserId).subscribe(_data => { + this.passBackNewPortalAdmin.emit(_data); + }, (_err: HttpErrorResponse) => { + this.passBackNewPortalAdmin.emit(_err); + const modalErrorRef = this.ngbModal.open(ConfirmationModalComponent); + modalErrorRef.componentInstance.title = "Error"; + if (_err.status === 409) { //Conflict + modalErrorRef.componentInstance.message = "This user already exists as a portal admin!"; + } else { + modalErrorRef.componentInstance.message = "There was a unknown problem adding the portal admin." + "Please try again later. Error Status: " + _err.status; + } + }); + } + }, (reason) => { + return; + }); + + } +} diff --git a/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.html b/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.html new file mode 100644 index 00000000..26e59e45 --- /dev/null +++ b/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.html @@ -0,0 +1,87 @@ + + +
+
+

Portal Admins

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
First Name {{element.firstName}} + Last Name {{element.lastName}} + User ID {{element.loginId}} + Delete + + + +
+ +
\ No newline at end of file diff --git a/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.scss b/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.scss new file mode 100644 index 00000000..4c65595a --- /dev/null +++ b/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.scss @@ -0,0 +1,43 @@ +/*- + * ============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============================================ + * + * + */ +@import '../pages.component'; + +.icon-trash{ + cursor: pointer; + font-size: 20px; +} diff --git a/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.spec.ts b/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.spec.ts new file mode 100644 index 00000000..0e3c969f --- /dev/null +++ b/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.spec.ts @@ -0,0 +1,62 @@ +/*- + * ============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============================================ + * + * + */ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PortalAdminsComponent } from './portal-admins.component'; + +describe('PortalAdminsComponent', () => { + let component: PortalAdminsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PortalAdminsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PortalAdminsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.ts b/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.ts new file mode 100644 index 00000000..5dfe026d --- /dev/null +++ b/portal-FE-common/src/app/pages/portal-admins/portal-admins.component.ts @@ -0,0 +1,124 @@ +/*- + * ============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============================================ + * + * + */ +import { OnInit, Component, ViewChild, NgModuleRef } from '@angular/core'; +import { MatSort, MatPaginator } from '@angular/material'; +import { MatTableDataSource } from '@angular/material'; +import { PortalAdminsService } from 'src/app/shared/services'; +import { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap'; +import { NewPortalAdminComponent } from './new-portal-admin/new-portal-admin.component'; +import { InformationModalComponent } from 'src/app/modals/information-modal/information-modal.component'; +import { PortalAdmin } from 'src/app/shared/model/PortalAdmin'; +import { HttpErrorResponse } from '@angular/common/http'; +import { ConfirmationModalComponent } from 'src/app/modals/confirmation-modal/confirmation-modal.component'; + +@Component({ + selector: 'app-portal-admins', + templateUrl: './portal-admins.component.html', + styleUrls: ['./portal-admins.component.scss'] +}) +export class PortalAdminsComponent implements OnInit { + portalAdmins: PortalAdmin[] = []; + showSpinner = true; + closeResult: string; + constructor(private portalAdminsService: PortalAdminsService, private ngbModal: NgbModal) { } + displayedColumns: string[] = ['firstName', 'lastName', 'loginId', 'delete']; + dataSource = new MatTableDataSource(this.portalAdmins); + @ViewChild(MatSort) sort: MatSort; + @ViewChild(MatPaginator) paginator: MatPaginator; + ngOnInit() { + this.getAllPortalAdmins(); + } + + getAllPortalAdmins() { + this.portalAdminsService.getPortalAdmins().subscribe((_data: PortalAdmin[]) => { + this.showSpinner = false; + // _data is the array of data that you getting from the db. + this.portalAdmins = _data; + this.dataSource = new MatTableDataSource(this.portalAdmins); + this.dataSource.sort = this.sort; + this.dataSource.paginator = this.paginator; + }, (_err: HttpErrorResponse) =>{ + const modalErrorRef = this.ngbModal.open(ConfirmationModalComponent); + modalErrorRef.componentInstance.title = "Error"; + if (_err.status) { //Conflict + modalErrorRef.componentInstance.message = 'Error Status: ' + _err.status + ' There was a unknown problem adding the portal admin.' + 'Please try again later.'; + } + }) + } + + applyFilter(filterValue: string) { + this.dataSource.filter = filterValue.trim().toLowerCase(); + } + + addPortalAdminEntry() { + const modalRef = this.ngbModal.open(NewPortalAdminComponent); + modalRef.componentInstance.title = 'Add Portal Admin'; + modalRef.componentInstance.id = 1; + modalRef.componentInstance.passBackNewPortalAdmin.subscribe((_result: any) => { + modalRef.close(); + this.showSpinner = true; + this.getAllPortalAdmins(); + }) + } + + removePortalAdmin(deletePortalAdmin: any) { + const modalRef = this.ngbModal.open(InformationModalComponent); + modalRef.componentInstance.title = 'Confirmation'; + modalRef.componentInstance.message = `Are you sure you want to delete ${deletePortalAdmin.firstName} ${deletePortalAdmin.lastName} ?`; + modalRef.result.then((result) => { + if (result === 'Ok') { + this.portalAdminsService.removePortalAdmin(deletePortalAdmin.userId, deletePortalAdmin.loginId).subscribe(_data => { + this.showSpinner = true; + this.getAllPortalAdmins(); + }) + } + }, (reason) => { + this.closeResult = `Dismissed ${this.getDismissReason(reason)}`; + }); + } + + private getDismissReason(reason: any): string { + if (reason === ModalDismissReasons.ESC) { + return 'by pressing ESC'; + } else if (reason === ModalDismissReasons.BACKDROP_CLICK) { + return 'by clicking on a backdrop'; + } else { + return `with: ${reason}`; + } + } +} \ No newline at end of file -- cgit 1.2.3-korg