From 9b8d90c9cdc012ca444d35465dc2e77662e4becf Mon Sep 17 00:00:00 2001 From: JvD_Ericsson Date: Tue, 21 Feb 2023 14:07:50 +0000 Subject: Support delete non-normative data types Issue-ID: SDC-4411 Signed-off-by: JvD_Ericsson Change-Id: I246e50d848a17178369bfb643989d5447a887017 --- .../type-workspace/type-workspace.component.html | 13 ++++- .../type-workspace/type-workspace.component.less | 6 +++ .../type-workspace/type-workspace.component.ts | 58 +++++++++++++++++++++- .../pages/type-workspace/type-workspace.module.ts | 2 +- .../src/app/ng2/services/data-type.service.ts | 9 ++++ catalog-ui/src/assets/languages/en_US.json | 4 ++ 6 files changed, 87 insertions(+), 5 deletions(-) (limited to 'catalog-ui') diff --git a/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.html b/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.html index cdd8e41503..8986142fd9 100644 --- a/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.html +++ b/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.html @@ -20,7 +20,8 @@ -->
- + +
- + + + +
diff --git a/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.less b/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.less index a12642d271..91ac8d46ca 100644 --- a/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.less +++ b/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.less @@ -27,6 +27,12 @@ .sdc-workspace-container { .bg_p; + .loader { + z-index: 2; + display: flex; + position: relative; + } + .w-sdc-main-right-container { padding: 0; diff --git a/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.ts b/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.ts index e0f7ac77a0..11a11747ff 100644 --- a/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.ts +++ b/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.component.ts @@ -20,6 +20,7 @@ */ import {Component, Inject, Injector, OnInit} from '@angular/core'; +import {SdcMenuToken, IAppMenu} from "../../config/sdc-menu.config"; import {MenuItem, MenuItemGroup} from "../../../utils/menu-handler"; import {CacheService} from "../../services/cache.service"; import {DataTypeModel} from "../../../models/data-types"; @@ -29,7 +30,7 @@ import {TranslateService} from "../../shared/translator/translate.service"; import {HttpErrorResponse} from "@angular/common/http"; import {ServerErrorResponse} from "../../../models/server-error-response"; import {Observable} from "rxjs/Observable"; -import {SdcUiServices} from "onap-ui-angular/dist"; +import {SdcUiCommon, SdcUiComponents, SdcUiServices} from "onap-ui-angular/dist"; @Component({ selector: 'app-type-workspace', @@ -54,7 +55,9 @@ export class TypeWorkspaceComponent implements OnInit { private translateService: TranslateService, @Inject('$state') private $state: ng.ui.IStateService, @Inject('$stateParams') private stateParams, - private injector: Injector) { } + private injector: Injector, + private modalServiceSdcUI: SdcUiServices.ModalService, + @Inject(SdcMenuToken) public sdcMenu: IAppMenu) { } ngOnInit(): void { this.sdcVersion = this.cacheService.get('version'); @@ -115,6 +118,57 @@ export class TypeWorkspaceComponent implements OnInit { } } + private deleteDataType() { + const modalTitle: string = this.translateService.translate('DELETE_DATA_TYPE_TITLE_CONFIRMATION_TEXT'); + const modalMessage: string = this.translateService.translate('DELETE_DATA_TYPE_MESSAGE_CONFIRMATION_TEXT');; + const modalButton = { + testId: 'ok-button', + text: this.sdcMenu.alertMessages.okButton, + type: SdcUiCommon.ButtonType.warning, + callback: this.handleDeleteDataType(), + closeModal: true + } as SdcUiComponents.ModalButtonComponent; + this.modalServiceSdcUI.openWarningModal(modalTitle, modalMessage, 'alert-modal', [modalButton]); + } + + private handleDeleteDataType():Function { + return () => { + this.isLoading = true; + this.dataTypeService.deleteDataType(this.dataType.uniqueId).subscribe(()=> { + this.Notification.success({ + message: this.dataType.model + ' ' + this.dataType.name + ' ' + this.translateService.translate('DELETE_SUCCESS_MESSAGE_TEXT'), + title: this.translateService.translate("DELETE_SUCCESS_MESSAGE_TITLE") + }); + if (this.$state.params.previousState) { + switch (this.$state.params.previousState) { + case 'catalog': + case 'dashboard': + this.$state.go(this.$state.params.previousState); + break; + default: + this.$state.go('dashboard'); + break; + } + } + }, (error) => { + this.isLoading = false; + this.Notification.error({ + message: this.dataType.model + ' ' + this.dataType.name + ' ' + this.translateService.translate('DELETE_FAILURE_MESSAGE_TEXT'), + title: this.translateService.translate('DELETE_FAILURE_MESSAGE_TITLE') + }); + if (error instanceof HttpErrorResponse) { + const errorResponse: ServerErrorResponse = new ServerErrorResponse(error); + const modalService = this.injector.get(SdcUiServices.ModalService); + const errorDetails = { + 'Error Code': errorResponse.messageId, + 'Status Code': errorResponse.status + }; + modalService.openErrorDetailModal('Error', errorResponse.message, 'error-modal', errorDetails); + } + }); + } + } + private updateTypeBreadcrumb(): void { this.typeMenuItemGroup.updateSelectedMenuItemText(`Data Type: ${this.dataType.name}`); } diff --git a/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.module.ts b/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.module.ts index c517dd22c8..8cd3d89d6f 100644 --- a/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.module.ts +++ b/catalog-ui/src/app/ng2/pages/type-workspace/type-workspace.module.ts @@ -54,7 +54,7 @@ import {ConstraintsModule} from "../properties-assignment/constraints/constraint NgxDatatableModule, SvgIconModule, AutoCompleteModule, - ConstraintsModule + ConstraintsModule ], declarations: [ TypeWorkspaceComponent, diff --git a/catalog-ui/src/app/ng2/services/data-type.service.ts b/catalog-ui/src/app/ng2/services/data-type.service.ts index 636217fb68..d4af634cec 100644 --- a/catalog-ui/src/app/ng2/services/data-type.service.ts +++ b/catalog-ui/src/app/ng2/services/data-type.service.ts @@ -112,6 +112,15 @@ export class DataTypeService { }); } + public deleteDataType(dataTypeId: string): Observable { + const url = `${this.dataTypeUrl}/${dataTypeId}`; + let headers = new HttpHeaders({'USER_ID': this.authService.getLoggedinUser().userId}); + let options = {headers: headers}; + return this.httpClient.delete(url, options).map((res: Response) => { + return dataTypeId; + }); + } + public createImportedType(model: string, importingFile: File): Observable { const url = `${this.dataTypeUploadUrl}/datatypesyaml`; const formData = new FormData(); diff --git a/catalog-ui/src/assets/languages/en_US.json b/catalog-ui/src/assets/languages/en_US.json index a98bf4c8c1..58288840d6 100644 --- a/catalog-ui/src/assets/languages/en_US.json +++ b/catalog-ui/src/assets/languages/en_US.json @@ -581,6 +581,7 @@ "CREATED_LABEL": "Created", "CREATE_LABEL": "Create", "CLOSE_LABEL": "Close", + "DELETE_LABEL": "Delete", "MODIFIED_LABEL": "Modified", "UNIQUE_ID_LABEL": "Unique Id", "=========== SERVICE IMPORT ===========": "", @@ -590,6 +591,9 @@ "IMPORT_DATA_TYPE_FAILURE_PROCESSING_MESSAGE_TEXT": "Import Failure - error importing data type", "IMPORT_DATA_TYPE_SUCCESS_MESSAGE_TEXT": "Successfully imported", "IMPORT_DATA_TYPE_TITLE_TEXT": "Import Data Type", + "=========== DATA TYPE DELETE ===========": "", + "DELETE_DATA_TYPE_TITLE_CONFIRMATION_TEXT": "Delete Data Type Confirmation", + "DELETE_DATA_TYPE_MESSAGE_CONFIRMATION_TEXT": "This data type should only be deleted if it is not in use in any resources or services. Are you sure you want to proceed?", "=========== PROPERTIES ===========": "", "PROPERTY_LIST_EMPTY_MESSAGE": "There are no properties to display", "PROPERTY_SHOWING_LABEL": "Showing Properties", -- cgit 1.2.3-korg