diff options
Diffstat (limited to 'catalog-ui/src/app/models/attributes.ts')
-rw-r--r-- | catalog-ui/src/app/models/attributes.ts | 218 |
1 files changed, 114 insertions, 104 deletions
diff --git a/catalog-ui/src/app/models/attributes.ts b/catalog-ui/src/app/models/attributes.ts index a51358cdc4..ae5eac0281 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 { - - //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 = ''; - } - - 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)); + } + + 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); } - 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); - } + //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; - }; + public toJSON = (): any => { + if (!this.resourceInstanceUniqueId) { + this.value = undefined; + } + this.readonly = undefined; + this.resourceInstanceUniqueId = undefined; + return this; + }; } |