Visualization of the VF Module Sequencing
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / objectsToTree / shared.tree.service.ts
index de859e4..51fcf52 100644 (file)
@@ -1,7 +1,7 @@
 import {Injectable} from "@angular/core";
 import {NgRedux} from "@angular-redux/store";
 import {AppState} from "../../../shared/store/reducers";
-import {ServiceInstanceActions} from "../../../shared/models/serviceInstanceActions";
+import {PauseStatus, ServiceInstanceActions} from "../../../shared/models/serviceInstanceActions";
 import {MessageBoxData} from "../../../shared/components/messageBox/messageBox.data";
 import {MessageBoxService} from "../../../shared/components/messageBox/messageBox.service";
 import * as _ from "lodash";
@@ -120,14 +120,24 @@ export class SharedTreeService {
 
   addingStatusProperty(node) {
     node['statusProperties'] = [];
-    node['statusProperties'].push({key: 'Prov Status:', value: node.provStatus, testId: 'provStatus'});
-    node['statusProperties'].push({key: 'Orch Status:', value: node.orchStatus, testId: 'orchStatus'});
+    node['statusProperties'].push({key: 'Prov Status: ', value: node.provStatus, testId: 'provStatus'});
+    node['statusProperties'].push({key: 'Orch Status: ', value: node.orchStatus, testId: 'orchStatus'});
+    if(node.type === 'VFmodule') {
+      node['statusProperties'].push({key: 'Model Version: ', value: this.getNodeModelVersion(node), testId: 'modelVersion'});
+    }
     if (node.inMaint) {
       node['statusProperties'].push({key: 'In-maintenance', value: '', testId: 'inMaint'});
     }
     return node;
   }
 
+   getNodeModelVersion(node): string | undefined {
+    if(!_.isNil(node.instanceModelInfo) && !_.isNil(node.instanceModelInfo.modelVersion)){
+      return node.instanceModelInfo.modelVersion;
+    }
+    return undefined;
+  }
+
   /**********************************************
    * should delete or remove child instance's
    "new" -> should remove
@@ -212,6 +222,19 @@ export class SharedTreeService {
     }
   }
 
+  shouldShowRemovePause(node) : boolean {
+    if(FeatureFlagsService.getFlagState(Features.FLAG_2008_REMOVE_PAUSE_INSTANTIATION, this._store)){
+      return node.pauseInstantiation === PauseStatus.AFTER_COMPLETION;
+    }
+    return false;
+  }
+
+  shouldShowPauseInstantiation(node): boolean {
+    if(FeatureFlagsService.getFlagState(Features.FLAG_2008_REMOVE_PAUSE_INSTANTIATION, this._store)){
+      return (FeatureFlagsService.getFlagState(Features.FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION, this._store) && node.pauseInstantiation == null);
+    }
+    return (FeatureFlagsService.getFlagState(Features.FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION, this._store));
+  }
   /****************************************************
    * should return true if customer can upgrade a VFM *
    ****************************************************/
@@ -222,7 +245,18 @@ export class SharedTreeService {
 
   isVfMoudleCouldBeUpgraded(node, serviceModelId): boolean{
     return (FeatureFlagsService.getFlagState(Features.FLAG_FLASH_REPLACE_VF_MODULE, this._store) &&
-      ((this.isThereAnUpdatedLatestVersion(serviceModelId)) || this.isVfmoduleAlmostPartOfModelOnlyCustomizationUuidDiffer(node, serviceModelId)))
+      (this.isThereAnUpdatedLatestVersion(serviceModelId) || this.isVfModuleCustomizationIdNotExistsOnModel(node, serviceModelId)))
+  }
+
+  isVfModuleCustomizationIdNotExistsOnModel(vfModuleNode, serviceModelId) {
+
+    // prevent undefined
+    if (_.isNil(vfModuleNode.data) || _.isNil(vfModuleNode.data.modelCustomizationId)) {
+      return false;
+    }
+
+    let vfModulesHierarchyByGivenModelId = this._store.getState().service.serviceHierarchy[serviceModelId].vfModules;
+    return  !_.some(vfModulesHierarchyByGivenModelId, vfmodel => vfmodel.customizationUuid === vfModuleNode.data.modelCustomizationId);
   }
 
 
@@ -466,17 +500,44 @@ export class SharedTreeService {
     });
   }
 
+  getModelVersionEitherFromInstanceOrFromHierarchy(selectedNodeData, model): string | undefined {
+    return this.getNamedFieldFromInstanceOrFromHierarchy(selectedNodeData, "modelVersion", model, "version");
+  }
+
+  getModelCustomizationIdEitherFromInstanceOrFromHierarchy(selectedNodeData, model): string | undefined {
+    return this.getNamedFieldFromInstanceOrFromHierarchy(selectedNodeData, "modelCustomizationId", model, "customizationUuid");
+  }
+
+  getModelInvariantIdEitherFromInstanceOrFromHierarchy(selectedNodeData, model): string | undefined {
+    return this.getNamedFieldFromInstanceOrFromHierarchy(selectedNodeData, "modelInvariantId", model, "invariantUuid");
+  }
+
+  getModelVersionIdEitherFromInstanceOrFromHierarchy(selectedNodeData, model): string | undefined {
+    return this.getNamedFieldFromInstanceOrFromHierarchy (selectedNodeData, "modelVersionId", model, "uuid");
+  }
 
-  addGeneralInfoItems(modelInfoSpecificItems: ModelInformationItem[], type: ComponentInfoType, model, instance):ComponentInfoModel {
+
+
+  getNamedFieldFromInstanceOrFromHierarchy(selectedNodeData, instanceModelInfoFieldName, model, modelFieldName): string | undefined {
+    if (instanceModelInfoFieldName && selectedNodeData && selectedNodeData.instanceModelInfo
+      && selectedNodeData.instanceModelInfo[instanceModelInfoFieldName]) {
+      return selectedNodeData.instanceModelInfo[instanceModelInfoFieldName];
+    } else if (modelFieldName && model && model[modelFieldName]) {
+      return model[modelFieldName];
+    }
+    return undefined;
+  }
+
+  addGeneralInfoItems(modelInfoSpecificItems: ModelInformationItem[], type: ComponentInfoType, model, selectedNodeData):ComponentInfoModel {
     let modelInfoItems: ModelInformationItem[] = [
-      ModelInformationItem.createInstance("Model version", model ? model.version : null),
-      ModelInformationItem.createInstance("Model customization ID", model ? model.customizationUuid : null),
-      ModelInformationItem.createInstance("Instance ID", instance ? instance.instanceId : null),
-      ModelInformationItem.createInstance("Instance type", instance ? instance.instanceType : null),
-      ModelInformationItem.createInstance("In maintenance", instance? instance.inMaint : null),
+      ModelInformationItem.createInstance("Model version", this.getModelVersionEitherFromInstanceOrFromHierarchy(selectedNodeData, model)),
+      ModelInformationItem.createInstance("Model customization ID", this.getModelCustomizationIdEitherFromInstanceOrFromHierarchy(selectedNodeData, model)),
+      ModelInformationItem.createInstance("Instance ID", selectedNodeData ? selectedNodeData.instanceId : null),
+      ModelInformationItem.createInstance("Instance type", selectedNodeData ? selectedNodeData.instanceType : null),
+      ModelInformationItem.createInstance("In maintenance", selectedNodeData? selectedNodeData.inMaint : null),
     ];
     modelInfoItems = modelInfoItems.concat(modelInfoSpecificItems);
-    return this.getComponentInfoModelByModelInformationItems(modelInfoItems, type, instance);
+    return this.getComponentInfoModelByModelInformationItems(modelInfoItems, type, selectedNodeData);
   }
 
   getComponentInfoModelByModelInformationItems(modelInfoItems: ModelInformationItem[], type: ComponentInfoType, instance){
@@ -490,4 +551,8 @@ export class SharedTreeService {
       !_.isNil(model.max) ? String(model.max) : Constants.ModelInfo.UNLIMITED_DEFAULT
     );
   }
+
+  isAddPositionFlagTrue():boolean{
+    return FeatureFlagsService.getFlagState(Features.FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER, this._store);
+  }
 }