UI Support for operation milestones
[sdc.git] / catalog-ui / src / app / models / operation.ts
index d9d0858..3b2f203 100644 (file)
@@ -2,16 +2,20 @@
 
 export class OperationParameter {
     name: string;
-    type: String;
-    inputId: string;
-    required: boolean;
+    type: string;
+    inputId?: string;
+    required?: boolean;
+    property?: string;
+    mandatory?: boolean;
 
-    constructor(param?: OperationParameter) {
+    constructor(param?: any) {
         if (param) {
             this.name = param.name;
             this.type = param.type;
-            this.inputId = param.inputId;
+            this.inputId = param.inputId ;
             this.required = param.required;
+            this.property = param.property;
+            this.mandatory = param.mandatory;
         }
     }
 }
@@ -24,6 +28,7 @@ export class WORKFLOW_ASSOCIATION_OPTIONS {
     static NONE = 'NONE';
     static NEW = 'NEW';
     static EXISTING = 'EXISTING';
+    static EXTERNAL = 'EXTERNAL';
 }
 
 export class BEOperationModel {
@@ -37,8 +42,13 @@ export class BEOperationModel {
     workflowAssociationType: string;
     workflowId: string;
     workflowVersionId: string;
+    workflowName: string;
+    workflowVersion: string;
 
-    implementation?: { artifactUUID: string; };
+    implementation?: {
+        artifactName: string;
+        artifactUUID: string;
+    };
 
     constructor(operation?: any) {
         if (operation) {
@@ -52,7 +62,9 @@ export class BEOperationModel {
             this.workflowAssociationType = operation.workflowAssociationType;
             this.workflowId = operation.workflowId;
             this.workflowVersionId = operation.workflowVersionId;
-            this.implementation = operation.implementation;
+            this.workflowName = operation.workflowName;
+            this.workflowVersion = operation.workflowVersion;
+            this.implementation = operation.implementation || {};
         }
     }
 
@@ -72,24 +84,74 @@ export class BEOperationModel {
     }
 }
 
-export class OperationModel extends BEOperationModel {
+export class OperationModel extends BEOperationModel{
     interfaceType: string;
     interfaceId: string;
+    operationType: string;
+    description: string;
+    uniqueId: string;
+    artifactFileName?: string;
+    artifactData?: any;
+
+    inputParams: IOperationParamsList;
+    outputParams: IOperationParamsList;
+
+    workflowId: string;
+    workflowVersionId: string;
+    workflowName: string;
+    workflowVersion: string;
+
+    milestones: Object;
+
+    protected OperationTypeEnum: Array<String> = [
+        'Create',
+        'Delete',
+        'Instantiate',
+        'Start',
+        'Stop'
+    ];
 
     constructor(operation?: any) {
         super(operation);
         if (operation) {
             this.interfaceId = operation.interfaceId;
             this.interfaceType = operation.interfaceType;
+            this.description = operation.description;
+            this.inputParams = operation.inputParams;
+            this.operationType = operation.operationType;
+            this.outputParams = operation.outputParams;
+            this.uniqueId = operation.uniqueId;
+            this.workflowId = operation.workflowId;
+            this.workflowVersionId = operation.workflowVersionId;
+            this.artifactFileName = operation.artifactFileName;
+            this.artifactData = operation.artifactData;
+            this.workflowName = operation.workflowName;
+            this.workflowVersion = operation.workflowVersion;
+            this.milestones = operation.milestones;
         }
     }
 
     public displayType(): string {
-        const lastDot = this.interfaceType ? this.interfaceType.lastIndexOf('.') : -1;
-        return lastDot === -1 ? this.interfaceType : this.interfaceType.substr(lastDot + 1);
+        return displayType(this.interfaceType);
+    }
+
+    public createInputParamsList(inputParams: Array<OperationParameter>): void {
+        this.inputParams = {
+            listToscaDataDefinition: inputParams
+        };
+    }
+
+    public createOutputParamsList(outputParams: Array<OperationParameter>): void {
+        this.outputParams = {
+            listToscaDataDefinition: outputParams
+        };
     }
 }
 
+export interface CreateOperationResponse extends OperationModel {
+    artifactUUID: string;
+}
+
 export class InterfaceModel {
     type: string;
     uniqueId: string;
@@ -104,7 +166,8 @@ export class InterfaceModel {
     }
 
     public displayType(): string {
-        const lastDot = this.type ? this.type.lastIndexOf('.') : -1;
-        return lastDot === -1 ? this.type : this.type.substr(lastDot + 1);
+        return displayType(this.type);
     }
 }
+
+const displayType = (type:string) => type && type.substr(type.lastIndexOf('.') + 1);
\ No newline at end of file