37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
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);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|