/* * Copyright (C) Sapphirecode - All Rights Reserved * This file is part of Modelling which is released under MIT. * See file 'LICENSE' for full license details. * Created by Timo Hocker , May 2020 */ import { DataApply } from './interfaces/DataApply'; export abstract class ControlModel implements DataApply { protected data: Record = {}; public constructor (obj: Record) { this.data = obj; } public get_data (): Record { return this.data; } public apply_object (obj: Record): void { for (const key of Object.keys (obj)) { if ([ 'string', 'number', 'boolean' ].indexOf (typeof obj[key]) > -1) this.data[key] = obj[key] as string|number|boolean; } } public apply (da: DataApply): void { this.apply_object (da.get_data ()); } public apply_to (da: DataApply): void { da.apply (this); } public get (key: string): string|number|boolean { return this.data[key]; } public set (key: string, value: string|number|boolean): void { this.data[key] = value; } public update (): void { this.verify (); } public abstract verify(): void; }