import IEntity = require('../IEntity'); import List = require('../List'); import LocalizedString = require('../Locale/LocalizedString'); import QuadrantValueEnum = require('./QuadrantValueEnum'); import QuadrantDescription = require('./QuadrantDescription'); import SectionEnum = require('../Section/SectionEnum'); import SectionFactory = require('../Section/SectionFactory'); import ILocalizedStringObject = require('../Locale/ILocalizedStringObject'); export = MatrixDescription; class MatrixDescription implements IEntity { get Section() { return this.section; } get Description() { return this.description; } get Icon() { return this.icon; } constructor( private section: SectionEnum, private icon: string, private description: LocalizedString, private quadrantDescriptionList: List ) { } getQuadrantDescription(quadrant: QuadrantValueEnum) { return this.quadrantDescriptionList.findOneOnly((quadrantDescription: QuadrantDescription) => { return quadrantDescription.Quadrant == quadrant; }); } toObject() { return MatrixDescription.toObject(this); } static toObject(entity: MatrixDescription) { var description: ILocalizedStringObject = entity.description.toObject(); return { section: SectionEnum[entity.section], icon: entity.icon, description: description, quadrantDescriptions: entity.quadrantDescriptionList.toArray(QuadrantDescription.toObject) }; } static fromObject(object: any) { return new MatrixDescription( SectionFactory.createSectionEnum(object.section), object.icon, new LocalizedString(object.description), new List(object.quadrantDescriptions, QuadrantDescription.fromObject) ); } }