import {ModelComponent} from "../ModelComponent"; import {ItemGroupCharacteristic} from "./ItemgroupCharacteristic"; import {AbstractItemGroup} from "./AbstractItemGroup"; import {Item} from "./Item"; export abstract class ItemGroup extends ModelComponent { itemGroupCharacteristics: ItemGroupCharacteristic[] = [] parentGroup: AbstractItemGroup | undefined manuallyInheritedItems: Item[] = [] addItemgroupCharacteristic(itemgroupCharacteristic: ItemGroupCharacteristic) { this.itemGroupCharacteristics.push(itemgroupCharacteristic); this.addCharacteristicValueForManuallyItems(itemgroupCharacteristic); console.log("[Itemgroup] Add ItemgroupCharacteristic ", itemgroupCharacteristic); this.addCharacteristicValue(itemgroupCharacteristic); } protected abstract addCharacteristicValue(characteristic: ItemGroupCharacteristic): void; private addCharacteristicValueForManuallyItems(characteristic: ItemGroupCharacteristic) { this.manuallyInheritedItems.forEach(item => { item.addCharacteristic(characteristic); }) } inheritManualItem(item: Item) { if(this.manuallyInheritedItems.find(inheritedItems => inheritedItems.componentName === item.componentName) == undefined) { this.manuallyInheritedItems.push(item); item.addInheritedGroup(this); } } }