Home Reference Source Repository

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);
    });
  }
}