add create another one menu item to instantiationStatus page
[vid.git] / vid-webpack-master / src / app / instantiationStatus / instantiationStatus.component.service.ts
index 0e4451c..4bfedd9 100644 (file)
@@ -12,13 +12,16 @@ import {updateDrawingBoardStatus} from "../shared/storeUtil/utils/global/global.
 import {Router, UrlTree} from "@angular/router";
 import {of} from "rxjs";
 import {MsoService} from "../shared/services/msoService/mso.service";
+import {ServiceAction} from "../shared/models/serviceInstanceActions";
+
 export let PENDING : string = "pending";
 export let INPROGRESS : string = "in_progress";
 export let PAUSE : string = "pause";
 export let X_O : string = "x-circle-o";
 export let SUCCESS_CIRCLE : string = "success-circle-o";
-export let STOPED : string = "stop";
+export let STOPPED : string = "stop";
 export let COMPLETED_WITH_ERRORS : string = "success_with_warning";
+export let UNKNOWN : string = "question-mark-circle-o";
 
 
 @Injectable()
@@ -26,7 +29,8 @@ export class InstantiationStatusComponentService {
   constructor( private _aaiService: AaiService,
                private _msoService: MsoService,
                private _router : Router,
-               private _store: NgRedux<AppState>) {
+               private _store: NgRedux<AppState>,
+               private _featureFlagsService:FeatureFlagsService) {
   }
 
   generateServiceInfoDataMapping(arr: ServiceInfoModel[]) : { [serviceInstanceId: string]: ServiceInfoModel[]}{
@@ -67,7 +71,7 @@ export class InstantiationStatusComponentService {
   }
 
   open(item: ServiceInfoModel): void {
-    if (FeatureFlagsService.getFlagState(Features.FLAG_1902_VNF_GROUPING, this._store)) {
+    if (this._featureFlagsService.getFlagState(Features.FLAG_1902_VNF_GROUPING)) {
       this._aaiService.getServiceModelById(item['serviceModelId']).subscribe((result)=>{
         const serviceModel =  new ServiceModel(result);
 
@@ -89,7 +93,7 @@ export class InstantiationStatusComponentService {
   }
 
   navigateToNewViewOnlyOrOldEditView(item: ServiceInfoModel) {
-    if (FeatureFlagsService.getFlagState(Features.FLAG_1902_NEW_VIEW_EDIT, this._store)) {
+    if (this._featureFlagsService.getFlagState(Features.FLAG_1902_NEW_VIEW_EDIT)) {
       this.navigateToNewViewEdit(item, DrawingBoardModes.VIEW);
     }
     else {
@@ -120,23 +124,35 @@ export class InstantiationStatusComponentService {
       ['/servicePlanning/' + mode],
       {
         queryParams:
-          {
-            serviceModelId: item.serviceModelId,
-            serviceInstanceId: item.serviceInstanceId,
-            serviceType : item.serviceType,
-            subscriberId : item.subscriberId,
-            jobId: item.jobId
-          }
+        mode==DrawingBoardModes.RECREATE ?
+          this.getRecreateQueryParams(item) :
+          this.getDefaultViewEditQueryParams(item)
       });
   }
 
+  private getDefaultViewEditQueryParams(item: ServiceInfoModel) {
+    return {
+      serviceModelId: item.serviceModelId,
+      serviceInstanceId: item.serviceInstanceId,
+      serviceType: item.serviceType,
+      subscriberId: item.subscriberId,
+      jobId: item.jobId
+    };
+  }
+
+  private getRecreateQueryParams(item: ServiceInfoModel) {
+    return {
+      serviceModelId: item.serviceModelId,
+      jobId: item.jobId
+    };
+  }
+
   getViewEditUrl(viewEditUrlTree:UrlTree): string {
     return '../../serviceModels.htm#' + viewEditUrlTree.toString();
-
   }
 
   getStatus(status : string) : ServiceStatus {
-    switch(status.toUpperCase()) {
+    switch(`${status}`.toUpperCase()) {
       case  'PENDING' :
         return new ServiceStatus(PENDING, 'primary', 'Pending: The action required will be sent as soon as possible.');
       case  'IN_PROGRESS' :
@@ -148,15 +164,30 @@ export class InstantiationStatusComponentService {
       case  'COMPLETED' :
         return new ServiceStatus(SUCCESS_CIRCLE, 'success', 'Completed successfully: Service is successfully instantiated, updated or deleted.');
       case  'STOPPED' :
-        return new ServiceStatus(STOPED, 'error', 'Stopped: Due to previous failure, will not be instantiated.');
+        return new ServiceStatus(STOPPED, 'error', 'Stopped: Due to previous failure, will not be instantiated.');
       case  'COMPLETED_WITH_ERRORS' :
         return new ServiceStatus(COMPLETED_WITH_ERRORS, 'success', 'Completed with errors: some of the planned actions where successfully committed while other have not.\n Open the service to check it out.');
+
+      default:
+        return new ServiceStatus(UNKNOWN, 'primary', `Unexpected status: "${status}"`);
     }
   }
 
   retry(item: ServiceInfoModel): void {
       this.navigateToNewViewEdit(item, DrawingBoardModes.RETRY_EDIT);
   }
+
+  recreate(item: ServiceInfoModel): void {
+    this.navigateToNewViewEdit(item, DrawingBoardModes.RECREATE);
+  }
+
+  isRecreateEnabled(item: ServiceInfoModel): boolean {
+    return item.action === ServiceAction.INSTANTIATE;
+  }
+
+  isRecreateVisible(): boolean {
+    return this._featureFlagsService.getFlagState(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE);
+  }
 }