add "new view/edit" button in the Instantiation Status page
[vid.git] / vid-webpack-master / src / app / instantiationStatus / instantiationStatus.component.ts
index f3f6519..4dccb9e 100644 (file)
@@ -1,4 +1,4 @@
-import {Component, ViewChild} from '@angular/core';
+import {Component, OnInit, ViewChild} from '@angular/core';
 import {ServiceInfoService} from '../shared/server/serviceInfo/serviceInfo.service';
 import {ServiceInfoModel} from '../shared/server/serviceInfo/serviceInfo.model';
 import {InstantiationStatusComponentService} from './instantiationStatus.component.service';
@@ -11,7 +11,8 @@ import {LogService} from '../shared/utils/log/log.service';
 import {AppState} from "../shared/store/reducers";
 import {NgRedux} from '@angular-redux/store';
 import {JobStatus, ServiceAction} from "../shared/models/serviceInstanceActions";
-import {DrawingBoardModes} from "../drawingBoard/service-planning/drawing-board.modes";
+import {ActivatedRoute} from "@angular/router";
+import {FeatureFlagsService, Features} from "../shared/services/featureFlag/feature-flags.service";
 
 export interface MenuAction{
   name: string;
@@ -28,7 +29,7 @@ export interface MenuAction{
   templateUrl : './instantiationStatus.component.html',
   styleUrls : ['./instantiationStatus.component.scss']
 })
-export class InstantiationStatusComponent {
+export class InstantiationStatusComponent implements OnInit {
 
   TIMER_TIME_IN_SECONDS : number = 0;
   timer = null;
@@ -38,7 +39,7 @@ export class InstantiationStatusComponent {
   instantiationStatusComponentService: InstantiationStatusComponentService;
   configurationService : ConfigurationService;
   serviceInfoData: ServiceInfoModel[] = null;
-  @ViewChild(ContextMenuComponent) public contextMenu: ContextMenuComponent;
+  @ViewChild(ContextMenuComponent, {static: false}) public contextMenu: ContextMenuComponent;
 
   public contextMenuActions: Array<MenuAction> = [
     {
@@ -57,6 +58,22 @@ export class InstantiationStatusComponent {
       enabled: (item: ServiceInfoModel) =>  this.isOpenEnabled(item),
       visible: () =>  true,
     },
+    {
+      name: "New View/Edit",
+      dataTestId: "context-menu-new-view-edit",
+      className: "fa-pencil",
+      click: (item: ServiceInfoModel) => this.instantiationStatusComponentService.forwardToNewViewEdit(item),
+      enabled: () => true,
+      visible: () => this.instantiationStatusComponentService.isNewViewEditVisible(),
+    },
+    {
+      name: "Create another one",
+      dataTestId: "context-menu-create-another-one",
+      className: "fa-clone",
+      click: (item: ServiceInfoModel) => this.instantiationStatusComponentService.recreate(item),
+      enabled: (item: ServiceInfoModel) =>  this.instantiationStatusComponentService.isRecreateEnabled(item),
+      visible: () =>  this.instantiationStatusComponentService.isRecreateVisible(),
+    },
     {
       name: "Audit info",
       dataTestId: "context-menu-audit-info",
@@ -85,12 +102,14 @@ export class InstantiationStatusComponent {
   ];
 
   flags: any;
+  filterText: string;
   constructor(private _serviceInfoService: ServiceInfoService,
               private _instantiationStatusComponentService : InstantiationStatusComponentService,
               private _contextMenuService: ContextMenuService,
               private _configurationService : ConfigurationService,
               private _scrollToService: ScrollToService,
               private _logService : LogService,
+              private route: ActivatedRoute,
               private _store: NgRedux<AppState>) {
     this.instantiationStatusComponentService = _instantiationStatusComponentService;
     this.configurationService = this._configurationService;
@@ -101,6 +120,11 @@ export class InstantiationStatusComponent {
     });
   }
 
+  ngOnInit() {
+    let filterTextParam =  this.route.snapshot.queryParams["filterText"];
+    this.filterText = filterTextParam ? filterTextParam : "" ;
+  }
+
   activateInterval() {
     if (this.TIMER_TIME_IN_SECONDS > 0) {
       this.timer = setInterval(() => {
@@ -115,7 +139,7 @@ export class InstantiationStatusComponent {
 
   refreshData(): void {
     this.dataIsReady = false;
-    this._serviceInfoService.getServicesJobInfo(true, this.lastUpdatedDate === null)
+    this._serviceInfoService.getServicesJobInfo(this.lastUpdatedDate === null)
       .subscribe((res: ServiceInfoModel[]) => {
         this._instantiationStatusComponentService.convertObjectToArray(res).subscribe((res) => {
           this._logService.info('refresh instantiation status table', res);
@@ -144,7 +168,7 @@ export class InstantiationStatusComponent {
       this.refreshData();
     });
   }
-  
+
   retryItem(item: ServiceInfoModel) : void {
     if (item.isRetryEnabled) {
       this._instantiationStatusComponentService.retry(item);
@@ -230,4 +254,8 @@ export class InstantiationStatusComponent {
       }, 0)
     }
   }
+
+  isInstantiationStatusFilterFlagOn() {
+    return FeatureFlagsService.getFlagState(Features.FLAG_2004_INSTANTIATION_STATUS_FILTER, this._store);
+  }
 }