drawer-aggregator.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. }
  33. }
  34. update(e) {
  35. this.drawer.update(this, e);
  36. this.updateAggregators(this.aggregators, e);
  37. }
  38. updateAggregators(aggregators, e) {
  39. aggregators.forEach(aggregator => {
  40. aggregator.drawer.update(aggregator, e);
  41. if (
  42. aggregator.aggregators == undefined ||
  43. aggregator.aggregators.length == 0
  44. ) {
  45. return;
  46. }
  47. this.updateAggregators(aggregator.aggregators, e);
  48. });
  49. }
  50. }