aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--catalog-ui/src/app/ng2/services/component-services/component.service.ts4
-rw-r--r--catalog-ui/src/app/view-models/workspace/workspace-view-model.ts44
-rw-r--r--catalog-ui/src/app/view-models/workspace/workspace-view.html7
-rw-r--r--catalog-ui/src/assets/languages/en_US.json6
4 files changed, 61 insertions, 0 deletions
diff --git a/catalog-ui/src/app/ng2/services/component-services/component.service.ts b/catalog-ui/src/app/ng2/services/component-services/component.service.ts
index 3889b73f49..c9bb4d59f5 100644
--- a/catalog-ui/src/app/ng2/services/component-services/component.service.ts
+++ b/catalog-ui/src/app/ng2/services/component-services/component.service.ts
@@ -418,6 +418,10 @@ export class ComponentServiceNg2 {
return this.http.get<InstanceBePropertiesMap>(this.baseUrl + component.getTypeUrl() + component.uniqueId + '/filteredproperties/' + filterData.propertyName, {params: params});
}
+ deleteComponent(componentType: string, componentId: string) {
+ return this.http.delete(this.baseUrl + this.getServerTypeUrl(componentType) + componentId + "?deleteAction=DELETE", {});
+ }
+
createServiceProperty(component: Component, propertyModel: PropertyBEModel): Observable<PropertyBEModel> {
let serverObject = {};
serverObject[propertyModel.name] = propertyModel;
diff --git a/catalog-ui/src/app/view-models/workspace/workspace-view-model.ts b/catalog-ui/src/app/view-models/workspace/workspace-view-model.ts
index dad7b13e2a..532df0e2f9 100644
--- a/catalog-ui/src/app/view-models/workspace/workspace-view-model.ts
+++ b/catalog-ui/src/app/view-models/workspace/workspace-view-model.ts
@@ -45,6 +45,7 @@ import {
import {
CacheService
} from 'app/services-ng2';
+import { SdcUiCommon, SdcUiComponents, SdcUiServices } from 'onap-ui-angular';
import { AutomatedUpgradeService } from '../../ng2/pages/automated-upgrade/automated-upgrade.service';
import { CatalogService } from '../../ng2/services/catalog.service';
import { ComponentServiceNg2 } from '../../ng2/services/component-services/component.service';
@@ -151,6 +152,7 @@ export class WorkspaceViewModel {
'ComponentServiceNg2',
'AutomatedUpgradeService',
'EventBusService',
+ 'ModalServiceSdcUI',
'PluginsService',
'WorkspaceNg1BridgeService',
'workspaceService'
@@ -176,6 +178,7 @@ export class WorkspaceViewModel {
private ComponentServiceNg2: ComponentServiceNg2,
private AutomatedUpgradeService: AutomatedUpgradeService,
private eventBusService: EventBusService,
+ private modalServiceSdcUI: SdcUiServices.ModalService,
private pluginsService: PluginsService,
private workspaceNg1BridgeService: WorkspaceNg1BridgeService,
private workspaceService: WorkspaceService) {
@@ -613,7 +616,48 @@ export class WorkspaceViewModel {
this.ChangeLifecycleStateHandler.changeLifecycleState(this.$scope.component, data, this.$scope, onSuccess);
};
+ this.$scope.deleteArchivedComponent = (): void => {
+ const modalTitle: string = this.$filter('translate')("COMPONENT_VIEW_DELETE_MODAL_TITLE");
+ const modalMessage: string = this.$filter('translate')("COMPONENT_VIEW_DELETE_MODAL_TEXT");
+ const modalButton = {
+ testId: 'ok-button',
+ text: this.sdcMenu.alertMessages.okButton,
+ type: SdcUiCommon.ButtonType.warning,
+ callback: this.$scope.handleDeleteArchivedComponent,
+ closeModal: true
+ } as SdcUiComponents.ModalButtonComponent;
+ this.modalServiceSdcUI.openWarningModal(modalTitle, modalMessage, 'alert-modal', [modalButton]);
+ };
+ this.$scope.handleDeleteArchivedComponent = (): void => {
+ this.$scope.isLoading = true;
+ const typeComponent = this.$scope.component.componentType;
+ this.ComponentServiceNg2.deleteComponent(typeComponent, this.$scope.component.uniqueId).subscribe(()=> {
+ this.deleteArchiveCache();
+ this.Notification.success({
+ message: this.$scope.component.name + ' ' + this.$filter('translate')("DELETE_SUCCESS_MESSAGE_TEXT"),
+ title: this.$filter('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;
+ }
+ }
+ this.$scope.isLoading = false;
+ }, () => {
+ this.Notification.error({
+ message: this.$scope.component.name + ' ' + this.$filter('translate')('DELETE_FAILURE_MESSAGE_TEXT'),
+ title: this.$filter('translate')('DELETE_FAILURE_MESSAGE_TITLE')
+ });
+ this.$scope.isLoading = false;
+ });
+ };
this.$scope.isViewMode = ():boolean => {
return this.$scope.mode === WorkspaceMode.VIEW;
diff --git a/catalog-ui/src/app/view-models/workspace/workspace-view.html b/catalog-ui/src/app/view-models/workspace/workspace-view.html
index 2d5b234fbf..21cebeb388 100644
--- a/catalog-ui/src/app/view-models/workspace/workspace-view.html
+++ b/catalog-ui/src/app/view-models/workspace/workspace-view.html
@@ -90,6 +90,13 @@
data-ng-class="{'disabled' : !isValidForm || isDisableMode() || isViewMode() || unsavedChanges}" ng-click="changeLifecycleState('deleteVersion')"
class="sprite-new delete-btn" data-tests-id="delete_version" sdc-smart-tooltip="Delete" prevent-double-click>Delete</span>
+ <span ng-if="!isCreateMode() && component.isArchived"
+ ng-click="deleteArchivedComponent()"
+ class="sprite-new delete-btn"
+ data-tests-id="delete_archive_version"
+ sdc-smart-tooltip="Delete Service"
+ prevent-double-click>Delete</span>
+
<span data-ng-click = "archiveComponent()"
ng-model-options="{ debounce: 300 }"
data-ng-class="{'disabled' : !component.isLatestVersion()}"
diff --git a/catalog-ui/src/assets/languages/en_US.json b/catalog-ui/src/assets/languages/en_US.json
index 88bd40767f..aa5e368102 100644
--- a/catalog-ui/src/assets/languages/en_US.json
+++ b/catalog-ui/src/assets/languages/en_US.json
@@ -241,6 +241,9 @@
"=========== ARTIFACT VIEW ===========": "",
"ARTIFACT_VIEW_DELETE_MODAL_TITLE": "Delete Artifact Confirmation",
"ARTIFACT_VIEW_DELETE_MODAL_TEXT": "Are you sure you want to delete '{{name}}'?",
+ "========== COMPONENT VIEW ===========": "",
+ "COMPONENT_VIEW_DELETE_MODAL_TITLE": "Delete Component Confirmation",
+ "COMPONENT_VIEW_DELETE_MODAL_TEXT": "All versions of this component will be permanently deleted. This action cannot be undone. Are you sure you want to proceed?",
"=========== PROPERTY VIEW ===========": "",
"PROPERTY_VIEW_DELETE_MODAL_TITLE": "Delete Property Confirmation",
"PROPERTY_VIEW_DELETE_MODAL_TEXT": "Are you sure you want to delete '{{name}}'?",
@@ -353,6 +356,9 @@
"RESTORE_SUCCESS_MESSAGE_TEXT": "successfully restored",
"ARCHIVE_SUCCESS_MESSAGE_TITLE": "Archive",
"ARCHIVE_SUCCESS_MESSAGE_TEXT": "successfully archived",
+ "=========== FAILURE MESSAGES ===========": "",
+ "DELETE_FAILURE_MESSAGE_TEXT": "Deletion Failed",
+ "DELETE_FAILURE_MESSAGE_TITLE": "Delete",
"=========== ON BOARDING MODAL ===========": "",
"ON_BOARDING_MODAL_SUB_TITLE": "Select one of the software product component below:",
"ON_BOARDING_GENERAL_INFO": "Displays a table of VSPs created using Onboarding.\nEach row displays details for a single VSP.\nWhen expanded you can either import CSAR files that are yet to be imported or update CSAR files that were previously imported.",