-export class AttributeModel implements IAttributeModel {
-
- //server data
- uniqueId:string;
- name:string;
- defaultValue:string;
- description:string;
- type:string;
- schema:SchemaAttributeGroupModel;
- status:string;
- value:string;
- hidden:boolean;
- parentUniqueId:string;
- //custom data
- resourceInstanceUniqueId:string;
- readonly:boolean;
- valueUniqueUid:string;
-
- constructor(attribute?:AttributeModel) {
- if (attribute) {
- this.uniqueId = attribute.uniqueId;
- this.name = attribute.name;
- this.defaultValue = attribute.defaultValue;
- this.description = attribute.description;
- this.type = attribute.type;
- this.status = attribute.status;
- this.schema = attribute.schema;
- this.value = attribute.value;
- this.hidden = attribute.hidden;
- this.parentUniqueId = attribute.parentUniqueId;
- this.resourceInstanceUniqueId = attribute.resourceInstanceUniqueId;
- this.readonly = attribute.readonly;
- this.valueUniqueUid = attribute.valueUniqueUid;
- }
-
- 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));
- }
-
- this.convertValueToView();
+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;
+
+ getOutputValues: AttributeOutputDetail[];
+ subAttributeOutputPath: string;
+ outputPath: string;
+
+ 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.getOutputValues = attribute.getOutputValues;
+ this.subAttributeOutputPath = attribute.subAttributeOutputPath;
+ this.outputPath = attribute.outputPath;
+ } else {
+ this._default = '';
+ }
+
+ 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 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);