UNPKG

@pilotlab/lux-attributes

Version:

A luxurious user experience framework, developed by your friends at Pilot.

69 lines (57 loc) 2.45 kB
import is from '@pilotlab/lux-is'; import { DataType } from './attributeEnums'; import Attribute from './attribute'; import AttributeTools from './attributeTools'; import IAttributeCreateOptions from './interfaces/iAttributeCreateOptions'; import AttributeFactoryBase from './attributeFactoryBase'; import IAttributesFactory from './interfaces/iAttributesFactory'; import AttributesFactory from './attributesFactory'; import IAttribute from './interfaces/iAttribute'; import IAttributes from './interfaces/iAttributes'; import IAttributeFactory from './interfaces/iAttributeFactory'; export class AttributeFactory extends AttributeFactoryBase<IAttribute, IAttributes> implements IAttributeFactory { constructor() { super(); this.p_collection = new AttributesFactory(this); } get collection():IAttributesFactory { return this.p_collection; } protected p_collection:IAttributesFactory; instance(createOptions:IAttributeCreateOptions, key:string):IAttribute { function createAttribute():Attribute { const attribute:Attribute = new Attribute( key, createOptions.value, createOptions.dataType, createOptions.label ); attribute.validate = createOptions.validate; attribute.omit = createOptions.omit; return attribute; } if (is.notEmpty(createOptions)) { switch (AttributeTools.getBaseDataType(createOptions.dataType)) { case DataType.ARRAY: return createAttribute(); case DataType.BOOLEAN: return createAttribute(); case DataType.COLLECTION: return createAttribute(); case DataType.DATE_TIME: return createAttribute(); case DataType.FUNCTION: return createAttribute(); case DataType.NUMBER: return createAttribute(); case DataType.STRING: return createAttribute(); case DataType.UNDEFINED: case DataType.NULL: case DataType.ANY: case DataType.OBJECT: default: return createAttribute(); } } else return new Attribute(''); } } // End class export default AttributeFactory;