Implement Attributes/Outputs FE
Change-Id: I014bb0ebc07f3fea4266a4f295172eadee546705
Signed-off-by: Vasyl Razinkov <vasyl.razinkov@est.tech>
Issue-ID: SDC-3448
diff --git a/catalog-ui/src/app/models/attributes.ts b/catalog-ui/src/app/models/attributes.ts
index a51358c..ae5eac0 100644
--- a/catalog-ui/src/app/models/attributes.ts
+++ b/catalog-ui/src/app/models/attributes.ts
@@ -20,120 +20,130 @@
'use strict';
import * as _ from "lodash";
-import {SchemaAttributeGroupModel, SchemaAttribute} from "./schema-attribute";
-import {SchemaPropertyGroupModel, SchemaProperty} from "./aschema-property";
+import {SchemaAttribute, SchemaAttributeGroupModel} from "./schema-attribute";
+import {AttributeOutputDetail} from "app/models/attributes-outputs/attribute-output-detail";
+import {AttributeBEModel} from "app/models/attributes-outputs/attribute-be-model";
export class AttributesGroup {
- constructor(attributesObj?:AttributesGroup) {
- _.forEach(attributesObj, (attributes:Array<AttributeModel>, instance) => {
- this[instance] = [];
- _.forEach(attributes, (attribute:AttributeModel):void => {
- attribute.resourceInstanceUniqueId = instance;
- attribute.readonly = true;
- this[instance].push(new AttributeModel(attribute));
- });
- });
- }
+ constructor(attributesObj?: AttributesGroup) {
+ _.forEach(attributesObj, (attributes: Array<AttributeModel>, instance) => {
+ this[instance] = [];
+ _.forEach(attributes, (attribute: AttributeModel): void => {
+ attribute.resourceInstanceUniqueId = instance;
+ attribute.readonly = true;
+ this[instance].push(new AttributeModel(attribute));
+ });
+ });
+ }
}
export interface IAttributeModel {
- //server data
- uniqueId:string;
- name:string;
- _default:string;
- description:string;
- type:string;
- schema:SchemaAttributeGroupModel;
- status:string;
- value:string;
- parentUniqueId:string;
- //custom data
- resourceInstanceUniqueId:string;
- readonly:boolean;
- valueUniqueUid:string;
+ //server data
+ uniqueId: string;
+ name: string;
+ _default: string;
+ description: string;
+ type: string;
+ schema: SchemaAttributeGroupModel;
+ status: string;
+ value: string;
+ parentUniqueId: string;
+ //custom data
+ resourceInstanceUniqueId: string;
+ readonly: boolean;
+ valueUniqueUid: string;
}
-export class AttributeModel implements IAttributeModel {
+export class AttributeModel extends AttributeBEModel implements IAttributeModel {
- //server data
- uniqueId:string;
- name:string;
- _default:string;
- description:string;
- type:string;
- schema:SchemaAttributeGroupModel;
- status:string;
- value:string;
- parentUniqueId:string;
- //custom data
- resourceInstanceUniqueId:string;
- readonly:boolean;
- valueUniqueUid:string;
+ //server data
+ uniqueId: string;
+ name: string;
+ _default: string;
+ description: string;
+ type: string;
+ schema: SchemaAttributeGroupModel;
+ status: string;
+ value: string;
+ parentUniqueId: string;
+ //custom data
+ resourceInstanceUniqueId: string;
+ readonly: boolean;
+ valueUniqueUid: string;
- constructor(attribute?:AttributeModel) {
- if (attribute) {
- this.uniqueId = attribute.uniqueId;
- this.name = attribute.name;
- this._default = attribute._default;
- this.description = attribute.description;
- this.type = attribute.type;
- this.status = attribute.status;
- this.schema = attribute.schema;
- this.value = attribute.value;
- this.parentUniqueId = attribute.parentUniqueId;
- this.resourceInstanceUniqueId = attribute.resourceInstanceUniqueId;
- this.readonly = attribute.readonly;
- this.valueUniqueUid = attribute.valueUniqueUid;
- } else {
- this._default = '';
- }
+ getOutputValues: AttributeOutputDetail[];
+ subAttributeOutputPath: string;
+ outputPath: string;
- if (!this.schema || !this.schema.property) {
- this.schema = new SchemaPropertyGroupModel(new SchemaProperty());
- } else {
- //forcing creating new object, so editing different one than the object in the table
- this.schema = new SchemaAttributeGroupModel(new SchemaAttribute(this.schema.property));
- }
+ constructor(attribute?: AttributeModel) {
+ super(attribute);
+ if (attribute) {
+ this.uniqueId = attribute.uniqueId;
+ this.name = attribute.name;
+ this._default = attribute._default;
+ this.description = attribute.description;
+ this.type = attribute.type;
+ this.status = attribute.status;
+ this.schema = attribute.schema;
+ this.value = attribute.value;
+ this.parentUniqueId = attribute.parentUniqueId;
+ this.resourceInstanceUniqueId = attribute.resourceInstanceUniqueId;
+ this.readonly = attribute.readonly;
+ this.valueUniqueUid = attribute.valueUniqueUid;
- this.convertValueToView();
+ this.getOutputValues = attribute.getOutputValues;
+ this.subAttributeOutputPath = attribute.subAttributeOutputPath;
+ this.outputPath = attribute.outputPath;
+ } else {
+ this._default = '';
}
- public convertToServerObject():string {
- if (this._default && this.type === 'map') {
- this._default = '{' + this._default + '}';
- }
- if (this._default && this.type === 'list') {
- this._default = '[' + this._default + ']';
- }
- this._default = this._default != "" && this._default != "[]" && this._default != "{}" ? this._default : null;
-
- return JSON.stringify(this);
- };
-
-
- public convertValueToView() {
- //unwrapping value {} or [] if type is complex
- if (this._default && (this.type === 'map' || this.type === 'list') &&
- ['[', '{'].indexOf(this._default.charAt(0)) > -1 &&
- [']', '}'].indexOf(this._default.slice(-1)) > -1) {
- this._default = this._default.slice(1, -1);
- }
-
- //also for value - for the modal in canvas
- if (this.value && (this.type === 'map' || this.type === 'list') &&
- ['[', '{'].indexOf(this.value.charAt(0)) > -1 &&
- [']', '}'].indexOf(this.value.slice(-1)) > -1) {
- this.value = this.value.slice(1, -1);
- }
+ if (!this.schema || !this.schema.property) {
+ this.schema = new SchemaAttributeGroupModel(new SchemaAttribute());
+ } else {
+ //forcing creating new object, so editing different one than the object in the table
+ this.schema = new SchemaAttributeGroupModel(new SchemaAttribute(this.schema.property));
}
- public toJSON = ():any => {
- if (!this.resourceInstanceUniqueId) {
- this.value = undefined;
- }
- this.readonly = undefined;
- this.resourceInstanceUniqueId = undefined;
- return this;
- };
+ this.convertValueToView();
+ }
+
+ public convertToServerObject(): string {
+ if (this._default && this.type === 'map') {
+ this._default = '{' + this._default + '}';
+ }
+ if (this._default && this.type === 'list') {
+ this._default = '[' + this._default + ']';
+ }
+ this._default = this._default != "" && this._default != "[]" && this._default != "{}" ? this._default : null;
+
+ return JSON.stringify(this);
+ }
+
+
+ public convertValueToView() {
+ //unwrapping value {} or [] if type is complex
+ if (this._default && (this.type === 'map' || this.type === 'list') &&
+ ['[', '{'].indexOf(this._default.charAt(0)) > -1 &&
+ [']', '}'].indexOf(this._default.slice(-1)) > -1) {
+ this._default = this._default.slice(1, -1);
+ }
+
+ //also for value - for the modal in canvas
+ if (this.value && (this.type === 'map' || this.type === 'list') &&
+ ['[', '{'].indexOf(this.value.charAt(0)) > -1 &&
+ [']', '}'].indexOf(this.value.slice(-1)) > -1) {
+ this.value = this.value.slice(1, -1);
+ }
+ }
+
+ public toJSON = (): any => {
+ if (!this.resourceInstanceUniqueId) {
+ this.value = undefined;
+ }
+ this.readonly = undefined;
+ this.resourceInstanceUniqueId = undefined;
+ return this;
+ };
}