selectable-drawer.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { Drawer } from "./drawer";
  2. import { stageManager as StageManager } from "../application/stage-manager";
  3. import { ELEMENTS_CLASS } from "../enums/elements-class-enum";
  4. import { app as App } from "../../app";
  5. import { COMPONENT_TYPE } from "../enums/component-type-enum";
  6. const HOVER_STYLE = {
  7. fill: "#33BCFF",
  8. strokeWidth: 6,
  9. stroke: "#33BCFF"
  10. };
  11. const STYLE_STROKE = {
  12. fill: "grey",
  13. strokeWidth: 2,
  14. stroke: "grey"
  15. };
  16. const STYLE_POINT = {
  17. fill: "#9bc364",
  18. fill2: "#828783",
  19. strokeWidth: 1,
  20. stroke: "#9bc364"
  21. };
  22. export class SelectableDrawer extends Drawer {
  23. constructor() {
  24. super();
  25. this.setElementClass(ELEMENTS_CLASS.SELECTOR);
  26. }
  27. static setSelectableIfIntersectionChanged(konvaObject) {
  28. konvaObject.on("mouseover", function () {
  29. const selectedTool = App.getSelectedTool();
  30. if (
  31. selectedTool != undefined &&
  32. selectedTool.drawer != undefined && (
  33. selectedTool.drawer.elementClass == ELEMENTS_CLASS.INTERSECTION_POINT
  34. )
  35. ) {
  36. this.strokeWidth(HOVER_STYLE.strokeWidth);
  37. this.stroke(HOVER_STYLE.stroke);
  38. StageManager.getCurrentKonvaStage().draw();
  39. }
  40. });
  41. konvaObject.on("mouseout", function () {
  42. if (konvaObject == undefined) return;
  43. this.strokeWidth(STYLE_STROKE.strokeWidth);
  44. this.stroke(konvaObject.attrs.style.stroke);
  45. StageManager.getCurrentKonvaStage().draw();
  46. });
  47. return konvaObject;
  48. }
  49. static setSelectableIfSelectorChanged(konvaObject) {
  50. konvaObject.on("mouseover", function () {
  51. const selectedTool = App.getSelectedTool();
  52. if (
  53. selectedTool != undefined &&
  54. selectedTool.drawer != undefined &&
  55. selectedTool.options.type === COMPONENT_TYPE.SELECTOR
  56. || selectedTool.drawer.elementClass == ELEMENTS_CLASS.CIRCUMFERENCE
  57. || selectedTool.drawer.elementClass == ELEMENTS_CLASS.LINE_SEGMENT
  58. ) {
  59. this.strokeWidth(HOVER_STYLE.strokeWidth);
  60. this.stroke(HOVER_STYLE.stroke);
  61. StageManager.getCurrentKonvaStage().draw();
  62. }
  63. });
  64. konvaObject.on("mouseout", function () {
  65. if (konvaObject == undefined) return;
  66. this.strokeWidth(STYLE_STROKE.strokeWidth);
  67. this.stroke(konvaObject.attrs.style.stroke);
  68. StageManager.getCurrentKonvaStage().draw();
  69. });
  70. return konvaObject;
  71. }
  72. static setSelectable(konvaObject) {
  73. konvaObject.on("mouseover", function () {
  74. this.strokeWidth(HOVER_STYLE.strokeWidth);
  75. this.stroke(HOVER_STYLE.stroke);
  76. StageManager.getCurrentKonvaStage().draw();
  77. });
  78. konvaObject.on("mouseout", function () {
  79. this.strokeWidth(STYLE_POINT.strokeWidth);
  80. this.stroke(konvaObject.attrs.style.stroke);
  81. StageManager.getCurrentKonvaStage().draw();
  82. });
  83. return konvaObject;
  84. }
  85. }