Add UI support for adding tosca artifact types

UI support for adding artifacts to an interface operation implementation

Issue-ID: SDC-3768
Signed-off-by: aribeiro <anderson.ribeiro@est.tech>
Change-Id: I71b3e49a160521e35a45515ad7adef836f901e78
diff --git a/catalog-ui/src/app/models/artifacts.ts b/catalog-ui/src/app/models/artifacts.ts
index e290dc6..e6e76e0 100644
--- a/catalog-ui/src/app/models/artifacts.ts
+++ b/catalog-ui/src/app/models/artifacts.ts
@@ -24,6 +24,7 @@
 import * as _ from "lodash";
 import {ArtifactType} from './../utils';
 import {HeatParameterModel} from "./heat-parameters";
+import {PropertyBEModel} from "./properties-inputs/property-be-model";
 
 //this object contains keys, each key contain ArtifactModel
 export class ArtifactGroupModel {
@@ -76,6 +77,7 @@
     originalDescription:string;
     envArtifact:ArtifactModel;
     allowDeleteAndUpdate: boolean;
+    properties:Array<PropertyBEModel>;
 
     constructor(artifact?:ArtifactModel) {
         if (artifact) {
@@ -104,6 +106,7 @@
             this.selected = artifact.selected ? artifact.selected : false;
             this.originalDescription = artifact.description;
             this.isFromCsar = artifact.isFromCsar;
+            this.properties = _.sortBy(_.cloneDeep(artifact.properties), 'name');
         }
     }
 
diff --git a/catalog-ui/src/app/models/interfaceOperation.ts b/catalog-ui/src/app/models/interfaceOperation.ts
index 5c69688..109babb 100644
--- a/catalog-ui/src/app/models/interfaceOperation.ts
+++ b/catalog-ui/src/app/models/interfaceOperation.ts
@@ -19,6 +19,8 @@
 
 'use strict';
 
+import {ArtifactModel} from "./artifacts";
+
 export class InputOperationParameter {
     name: string;
     type: string;
@@ -36,6 +38,22 @@
     }
 }
 
+export class PropertyOperationParameter {
+    name: string;
+    type: string;
+    value?: string;
+    propertyId: string;
+
+    constructor(param?: any) {
+        if (param) {
+            this.name = param.name;
+            this.type = param.type;
+            this.value = param.value;
+            this.propertyId = param.propertyId;
+        }
+    }
+}
+
 export interface IOperationParamsList {
     listToscaDataDefinition: Array<InputOperationParameter>;
 }
@@ -45,7 +63,7 @@
     description: string;
     uniqueId: string;
     inputs: IOperationParamsList;
-    implementation?: InterfaceOperationImplementation;
+    implementation: ArtifactModel;
 
     constructor(operation?: any) {
         if (operation) {
@@ -64,8 +82,8 @@
     operationType: string;
     description: string;
     uniqueId: string;
-    implementation?: InterfaceOperationImplementation;
     inputParams: IOperationParamsList;
+    implementation: ArtifactModel;
 
     constructor(operation?: any) {
         super(operation);
@@ -76,6 +94,7 @@
             this.operationType = operation.operationType;
             this.uniqueId = operation.uniqueId;
             this.inputParams = operation.inputParams;
+            this.implementation = operation.implementation;
         }
     }
 
@@ -84,10 +103,6 @@
     }
 }
 
-export class InterfaceOperationImplementation {
-    artifactName: string;
-}
-
 export class ComponentInstanceInterfaceModel {
     type: string;
     uniqueId: string;
diff --git a/catalog-ui/src/app/models/toscaArtifact.ts b/catalog-ui/src/app/models/toscaArtifact.ts
new file mode 100644
index 0000000..eb87728
--- /dev/null
+++ b/catalog-ui/src/app/models/toscaArtifact.ts
@@ -0,0 +1,45 @@
+/*
+* ============LICENSE_START=======================================================
+*  Copyright (C) 2021 Nordix Foundation. All rights reserved.
+*  ================================================================================
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*        http://www.apache.org/licenses/LICENSE-2.0
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*
+*  SPDX-License-Identifier: Apache-2.0
+*  ============LICENSE_END=========================================================
+*/
+
+import {PropertyBEModel} from "./properties-inputs/property-be-model";
+
+export class ToscaArtifactModel {
+  type: string;
+  file: string;
+  repository: string
+  description: string
+  deploy_path: string;
+  artifact_version: string;
+  checksum: string;
+  checksum_algorithm: string;
+  propertiesData: Array<PropertyBEModel>;
+
+  constructor(param?: any) {
+    this.type = param.type;
+    this.file = param.file;
+    this.repository = param.repository;
+    this.description = param.description;
+    this.deploy_path = param.deploy_path;
+    this.artifact_version = param.artifact_version;
+    this.checksum = param.checksum;
+    this.checksum_algorithm = param.checksum_algorithm;
+    this.propertiesData = param.propertiesData;
+  }
+
+}