drawer-aggregator.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. export class DrawerAggregator {
  2. constructor(drawer, geometricObject, konvaObject, elementClass) {
  3. this.drawer = drawer;
  4. this.genericObject = geometricObject;
  5. this.konvaObject = konvaObject;
  6. this.aggregators = [];
  7. this.visible = true;
  8. if (elementClass != undefined) this.elementClass = elementClass;
  9. else {
  10. if (
  11. konvaObject.attrs != undefined &&
  12. konvaObject.attrs.class != undefined
  13. )
  14. this.elementClass = konvaObject.attrs.class;
  15. }
  16. }
  17. setGeometricObject(genericObject) {
  18. this.genericObject = genericObject;
  19. }
  20. setDrawer(drawer) {
  21. this.drawer = drawer;
  22. }
  23. setKonvaObject(konvaObject) {
  24. this.konvaObject = konvaObject;
  25. }
  26. setElementClass(elementClass) {
  27. this.elementClass = elementClass;
  28. }
  29. addAggregator(aggregator) {
  30. if (!this.aggregators.includes(aggregator)) {
  31. this.aggregators.push(aggregator);
  32. this.genericObject.dependentsOnThis.push(aggregator.genericObject);
  33. }
  34. }
  35. update(e) {
  36. this.drawer.update(this, e);
  37. this.updateAggregators(this.aggregators, e);
  38. }
  39. updateAggregators(aggregators, e) {
  40. aggregators.forEach(aggregator => {
  41. aggregator.drawer.update(aggregator, e);
  42. if (
  43. aggregator.aggregators == undefined ||
  44. aggregator.aggregators.length == 0
  45. ) {
  46. return;
  47. }
  48. this.updateAggregators(aggregator.aggregators, e);
  49. });
  50. }
  51. }