src/app/core/drawers/drawer-aggregator.js
export class DrawerAggregator {
constructor(drawer, geometricObject, konvaObject, elementClass) {
this.drawer = drawer;
this.genericObject = geometricObject;
this.konvaObject = konvaObject;
this.aggregators = [];
this.visible = true;
if (elementClass != undefined) this.elementClass = elementClass;
else {
if (
konvaObject.attrs != undefined &&
konvaObject.attrs.class != undefined
)
this.elementClass = konvaObject.attrs.class;
}
}
setGeometricObject(genericObject) {
this.genericObject = genericObject;
}
setDrawer(drawer) {
this.drawer = drawer;
}
setKonvaObject(konvaObject) {
this.konvaObject = konvaObject;
}
setElementClass(elementClass) {
this.elementClass = elementClass;
}
addAggregator(aggregator) {
if (!this.aggregators.includes(aggregator)) {
this.aggregators.push(aggregator);
this.genericObject.dependentsOnThis.push(aggregator.genericObject);
}
}
update(e) {
this.drawer.update(this, e);
this.updateAggregators(this.aggregators, e);
}
updateAggregators(aggregators, e) {
aggregators.forEach(aggregator => {
aggregator.drawer.update(aggregator, e);
if (
aggregator.aggregators == undefined ||
aggregator.aggregators.length == 0
) {
return;
}
this.updateAggregators(aggregator.aggregators, e);
});
}
}