aldehyde 0.2.486 → 0.2.488

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/lib/controls/direct-file-view/index.d.ts.map +1 -1
  2. package/lib/controls/direct-file-view/index.js +2 -1
  3. package/lib/controls/direct-file-view/index.js.map +1 -1
  4. package/lib/controls/entry-control.d.ts +1 -0
  5. package/lib/controls/entry-control.d.ts.map +1 -1
  6. package/lib/controls/entry-control.js +2 -0
  7. package/lib/controls/entry-control.js.map +1 -1
  8. package/lib/draw-canvas-edit/components/asset-bar/index.d.ts.map +1 -1
  9. package/lib/draw-canvas-edit/components/asset-bar/index.js +26 -7
  10. package/lib/draw-canvas-edit/components/asset-bar/index.js.map +1 -1
  11. package/lib/draw-canvas-edit/components/asset-bar/index.less +1 -1
  12. package/lib/draw-canvas-edit/components/main-header/index.js +1 -1
  13. package/lib/draw-canvas-edit/components/render/draws/bg-draw.d.ts +1 -0
  14. package/lib/draw-canvas-edit/components/render/draws/bg-draw.d.ts.map +1 -1
  15. package/lib/draw-canvas-edit/components/render/draws/bg-draw.js +3 -2
  16. package/lib/draw-canvas-edit/components/render/draws/bg-draw.js.map +1 -1
  17. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.d.ts +1 -0
  18. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.d.ts.map +1 -1
  19. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.js +2 -1
  20. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.js.map +1 -1
  21. package/lib/draw-canvas-edit/components/render/draws/graph-draw.d.ts +1 -0
  22. package/lib/draw-canvas-edit/components/render/draws/graph-draw.d.ts.map +1 -1
  23. package/lib/draw-canvas-edit/components/render/draws/graph-draw.js +9 -8
  24. package/lib/draw-canvas-edit/components/render/draws/graph-draw.js.map +1 -1
  25. package/lib/draw-canvas-edit/components/render/draws/link-draw.d.ts +1 -0
  26. package/lib/draw-canvas-edit/components/render/draws/link-draw.d.ts.map +1 -1
  27. package/lib/draw-canvas-edit/components/render/draws/link-draw.js +24 -23
  28. package/lib/draw-canvas-edit/components/render/draws/link-draw.js.map +1 -1
  29. package/lib/draw-canvas-edit/components/render/draws/preview-draw.d.ts +1 -0
  30. package/lib/draw-canvas-edit/components/render/draws/preview-draw.d.ts.map +1 -1
  31. package/lib/draw-canvas-edit/components/render/draws/preview-draw.js +6 -5
  32. package/lib/draw-canvas-edit/components/render/draws/preview-draw.js.map +1 -1
  33. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.d.ts +1 -0
  34. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.d.ts.map +1 -1
  35. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.js +3 -2
  36. package/lib/draw-canvas-edit/components/render/draws/ref-line-draw.js.map +1 -1
  37. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.d.ts +1 -0
  38. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.d.ts.map +1 -1
  39. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.js +8 -7
  40. package/lib/draw-canvas-edit/components/render/draws/ruler-draw.js.map +1 -1
  41. package/lib/draw-canvas-edit/components/render/graphs/base-graph.js +3 -3
  42. package/lib/draw-canvas-edit/components/render/graphs/bezier.js +5 -5
  43. package/lib/draw-canvas-edit/components/render/graphs/circle.js +4 -4
  44. package/lib/draw-canvas-edit/components/render/graphs/curve.js +5 -5
  45. package/lib/draw-canvas-edit/components/render/graphs/line.js +5 -5
  46. package/lib/draw-canvas-edit/components/render/graphs/rect.js +4 -4
  47. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.d.ts +1 -0
  48. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.d.ts.map +1 -1
  49. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.js +7 -6
  50. package/lib/draw-canvas-edit/components/render/handlers/drag-handlers.js.map +1 -1
  51. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts +1 -0
  52. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts.map +1 -1
  53. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js +13 -8
  54. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js.map +1 -1
  55. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.d.ts +1 -0
  56. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.d.ts.map +1 -1
  57. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.js +2 -1
  58. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.js.map +1 -1
  59. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.d.ts +1 -0
  60. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.d.ts.map +1 -1
  61. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.js +5 -4
  62. package/lib/draw-canvas-edit/components/render/handlers/key-move-handlers.js.map +1 -1
  63. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.d.ts +1 -0
  64. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.d.ts.map +1 -1
  65. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.js +3 -2
  66. package/lib/draw-canvas-edit/components/render/handlers/link-handlers.js.map +1 -1
  67. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts +1 -0
  68. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts.map +1 -1
  69. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js +5 -4
  70. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js.map +1 -1
  71. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.d.ts +1 -0
  72. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.d.ts.map +1 -1
  73. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.js +1 -0
  74. package/lib/draw-canvas-edit/components/render/handlers/shutcut-handlers.js.map +1 -1
  75. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.d.ts +1 -0
  76. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.d.ts.map +1 -1
  77. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.js +1 -0
  78. package/lib/draw-canvas-edit/components/render/handlers/text-handlers.js.map +1 -1
  79. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.d.ts +1 -0
  80. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.d.ts.map +1 -1
  81. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.js +7 -6
  82. package/lib/draw-canvas-edit/components/render/handlers/zoom-handlers.js.map +1 -1
  83. package/lib/draw-canvas-edit/components/render/index.d.ts.map +1 -1
  84. package/lib/draw-canvas-edit/components/render/index.js +49 -49
  85. package/lib/draw-canvas-edit/components/render/index.js.map +1 -1
  86. package/lib/draw-canvas-edit/components/render/tools/align-tool.js +4 -4
  87. package/lib/draw-canvas-edit/components/render/tools/asset-tool.js +1 -1
  88. package/lib/draw-canvas-edit/components/render/tools/copy-tool.js +4 -4
  89. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.js +7 -7
  90. package/lib/draw-canvas-edit/components/render/tools/link-tool.js +9 -9
  91. package/lib/draw-canvas-edit/components/render/tools/position-tool.js +18 -18
  92. package/lib/draw-canvas-edit/components/render/tools/selection-tool.js +2 -2
  93. package/lib/draw-canvas-edit/components/render/tools/z-index-tool.js +16 -16
  94. package/lib/lowcode-components/bar-chart/index.d.ts +4 -1
  95. package/lib/lowcode-components/bar-chart/index.d.ts.map +1 -1
  96. package/lib/lowcode-components/bar-chart/index.js +3 -0
  97. package/lib/lowcode-components/bar-chart/index.js.map +1 -1
  98. package/lib/lowcode-components/column-3d-chart/index.d.ts +4 -1
  99. package/lib/lowcode-components/column-3d-chart/index.d.ts.map +1 -1
  100. package/lib/lowcode-components/column-3d-chart/index.js +3 -0
  101. package/lib/lowcode-components/column-3d-chart/index.js.map +1 -1
  102. package/lib/lowcode-components/column-chart/index.d.ts +6 -3
  103. package/lib/lowcode-components/column-chart/index.d.ts.map +1 -1
  104. package/lib/lowcode-components/column-chart/index.js +4 -1
  105. package/lib/lowcode-components/column-chart/index.js.map +1 -1
  106. package/lib/lowcode-components/line-bar-chart/index.d.ts +4 -1
  107. package/lib/lowcode-components/line-bar-chart/index.d.ts.map +1 -1
  108. package/lib/lowcode-components/line-bar-chart/index.js +3 -0
  109. package/lib/lowcode-components/line-bar-chart/index.js.map +1 -1
  110. package/lib/lowcode-components/line-chart/index.d.ts +5 -2
  111. package/lib/lowcode-components/line-chart/index.d.ts.map +1 -1
  112. package/lib/lowcode-components/line-chart/index.js +6 -2
  113. package/lib/lowcode-components/line-chart/index.js.map +1 -1
  114. package/lib/lowcode-components/pie-chart/index.d.ts +4 -1
  115. package/lib/lowcode-components/pie-chart/index.d.ts.map +1 -1
  116. package/lib/lowcode-components/pie-chart/index.js +3 -0
  117. package/lib/lowcode-components/pie-chart/index.js.map +1 -1
  118. package/lib/module/dtmpl-edit-card.d.ts +1 -1
  119. package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
  120. package/lib/module/dtmpl-edit-card.js +50 -7
  121. package/lib/module/dtmpl-edit-card.js.map +1 -1
  122. package/lib/module/dtmpl-edit-page.d.ts +1 -1
  123. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  124. package/lib/module/dtmpl-edit-page.js +50 -7
  125. package/lib/module/dtmpl-edit-page.js.map +1 -1
  126. package/lib/table/act-table.d.ts +2 -0
  127. package/lib/table/act-table.d.ts.map +1 -1
  128. package/lib/table/act-table.js +20 -17
  129. package/lib/table/act-table.js.map +1 -1
  130. package/lib/table/page-chart.d.ts +15 -0
  131. package/lib/table/page-chart.d.ts.map +1 -0
  132. package/lib/table/page-chart.js +147 -0
  133. package/lib/table/page-chart.js.map +1 -0
  134. package/lib/table/page-chart.less +10 -0
  135. package/lib/table/relation-table.d.ts +2 -0
  136. package/lib/table/relation-table.d.ts.map +1 -1
  137. package/lib/table/row-table.d.ts +11 -0
  138. package/lib/table/row-table.d.ts.map +1 -0
  139. package/lib/table/row-table.js +11 -0
  140. package/lib/table/row-table.js.map +1 -0
  141. package/lib/tmpl/interface.d.ts +12 -1
  142. package/lib/tmpl/interface.d.ts.map +1 -1
  143. package/lib/tmpl/interface.js.map +1 -1
  144. package/lib/tmpl/tmpl-config-analysis.js +1 -1
  145. package/lib/tmpl/tmpl-config-analysis.js.map +1 -1
  146. package/package.json +1 -1
  147. package/src/aldehyde/controls/direct-file-view/index.tsx +2 -1
  148. package/src/aldehyde/controls/entry-control.tsx +3 -0
  149. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +1 -1
  150. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +19 -6
  151. package/src/aldehyde/draw-canvas-edit/components/main-header/index.tsx +1 -1
  152. package/src/aldehyde/draw-canvas-edit/components/render/draws/bg-draw.ts +3 -2
  153. package/src/aldehyde/draw-canvas-edit/components/render/draws/contextmenu-draw.ts +2 -1
  154. package/src/aldehyde/draw-canvas-edit/components/render/draws/graph-draw.ts +249 -249
  155. package/src/aldehyde/draw-canvas-edit/components/render/draws/link-draw.ts +1415 -1414
  156. package/src/aldehyde/draw-canvas-edit/components/render/draws/preview-draw.ts +274 -273
  157. package/src/aldehyde/draw-canvas-edit/components/render/draws/ref-line-draw.ts +71 -70
  158. package/src/aldehyde/draw-canvas-edit/components/render/draws/ruler-draw.ts +166 -165
  159. package/src/aldehyde/draw-canvas-edit/components/render/graphs/base-graph.ts +3 -3
  160. package/src/aldehyde/draw-canvas-edit/components/render/graphs/bezier.ts +5 -5
  161. package/src/aldehyde/draw-canvas-edit/components/render/graphs/circle.ts +4 -4
  162. package/src/aldehyde/draw-canvas-edit/components/render/graphs/curve.ts +5 -5
  163. package/src/aldehyde/draw-canvas-edit/components/render/graphs/line.ts +5 -5
  164. package/src/aldehyde/draw-canvas-edit/components/render/graphs/rect.ts +4 -4
  165. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-handlers.ts +7 -6
  166. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-outside-handlers.ts +8 -3
  167. package/src/aldehyde/draw-canvas-edit/components/render/handlers/graph-handlers.ts +2 -1
  168. package/src/aldehyde/draw-canvas-edit/components/render/handlers/key-move-handlers.ts +5 -4
  169. package/src/aldehyde/draw-canvas-edit/components/render/handlers/link-handlers.ts +3 -2
  170. package/src/aldehyde/draw-canvas-edit/components/render/handlers/selection-handlers.ts +5 -4
  171. package/src/aldehyde/draw-canvas-edit/components/render/handlers/shutcut-handlers.ts +1 -0
  172. package/src/aldehyde/draw-canvas-edit/components/render/handlers/text-handlers.ts +1 -0
  173. package/src/aldehyde/draw-canvas-edit/components/render/handlers/zoom-handlers.ts +7 -6
  174. package/src/aldehyde/draw-canvas-edit/components/render/index.ts +48 -49
  175. package/src/aldehyde/draw-canvas-edit/components/render/tools/align-tool.ts +4 -4
  176. package/src/aldehyde/draw-canvas-edit/components/render/tools/asset-tool.ts +1 -1
  177. package/src/aldehyde/draw-canvas-edit/components/render/tools/copy-tool.ts +4 -4
  178. package/src/aldehyde/draw-canvas-edit/components/render/tools/import-export-tool.ts +7 -7
  179. package/src/aldehyde/draw-canvas-edit/components/render/tools/link-tool.ts +9 -9
  180. package/src/aldehyde/draw-canvas-edit/components/render/tools/position-tool.ts +18 -18
  181. package/src/aldehyde/draw-canvas-edit/components/render/tools/selection-tool.ts +2 -2
  182. package/src/aldehyde/draw-canvas-edit/components/render/tools/z-index-tool.ts +16 -16
  183. package/src/aldehyde/lowcode-components/bar-chart/index.tsx +5 -1
  184. package/src/aldehyde/lowcode-components/column-3d-chart/index.tsx +5 -1
  185. package/src/aldehyde/lowcode-components/column-chart/index.tsx +7 -3
  186. package/src/aldehyde/lowcode-components/line-bar-chart/index.tsx +5 -1
  187. package/src/aldehyde/lowcode-components/line-chart/index.tsx +9 -5
  188. package/src/aldehyde/lowcode-components/pie-chart/index.tsx +5 -1
  189. package/src/aldehyde/module/dtmpl-edit-card.tsx +47 -7
  190. package/src/aldehyde/module/dtmpl-edit-page.tsx +47 -8
  191. package/src/aldehyde/table/act-table.tsx +31 -25
  192. package/src/aldehyde/table/page-chart.less +10 -0
  193. package/src/aldehyde/table/page-chart.tsx +192 -0
  194. package/src/aldehyde/table/row-table.tsx +23 -0
  195. package/src/aldehyde/tmpl/interface.tsx +13 -1
  196. package/src/aldehyde/tmpl/tmpl-config-analysis.tsx +1 -1
@@ -1,249 +1,249 @@
1
- import Konva from 'konva';
2
- import { GraphAnchor, BaseDraw, Draw, Render, AssetType } from '../types';
3
- import { Circle, Rect, Line, Bezier, Curve } from '../graphs';
4
- import { GraphDraw as DrawGraph, LinkDraw, PreviewDraw } from '../draws';
5
-
6
- // 矩形、圆、曲线等基础图形绘制
7
-
8
- export interface GraphDrawState {
9
- adjusting: boolean; // 调整中
10
- adjustGroupId: string; // 调整组ID
11
- adjustAnchor?: GraphAnchor; // 调整点
12
- startPointCurrent: Konva.Vector2d; // 鼠标按下调整点位置
13
- graphCurrent?: Konva.Group; // 图形 group
14
- graphCurrentSnap?: Konva.Group; // 图形 group 镜像,用于计算位置、大小的偏移
15
- }
16
-
17
- export interface GraphDrawOption { }
18
-
19
- export class GraphDraw extends BaseDraw implements Draw {
20
-
21
- option: {}
22
- on = {}
23
-
24
- state: GraphDrawState = {
25
- adjusting: false,
26
- adjustGroupId: '',
27
- startPointCurrent: { x: 0, y: 0 }
28
- }
29
-
30
- constructor(render: Render, layer: Konva.Layer, option: GraphDrawOption) {
31
- super(render, layer);
32
- this.option = option;
33
- this.group.name(this.constructor.name);
34
- }
35
-
36
- /**
37
- * 获取鼠标位置,并处理为 相对大小
38
- * @param attract 含磁贴计算
39
- * @returns
40
- */
41
- getStagePoint(attract = false) {
42
- const pos = this.render.stage.getPointerPosition();
43
- if (pos) {
44
- const stageState = this.render.getStageState();
45
- if (attract) {
46
- // 磁贴
47
- const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
48
- return {
49
- x: this.render.toStageValue(transformerPos.x - stageState.x),
50
- y: this.render.toStageValue(transformerPos.y - stageState.y)
51
- }
52
- } else {
53
- return {
54
- x: this.render.toStageValue(pos.x - stageState.x),
55
- y: this.render.toStageValue(pos.y - stageState.y)
56
- }
57
- }
58
- }
59
- return null;
60
- }
61
-
62
- override draw() {
63
- this.clear();
64
- // 所有图形
65
- const graphs = this.render.layer.find('.asset').filter((o) => o.attrs.assetType === AssetType.Graph) as Konva.Group[];
66
- for (const graph of graphs) {
67
- // 非选中状态才显示 调整点
68
- if (!graph.attrs.selected) {
69
- let anchorAndShadows: {
70
- anchor: GraphAnchor
71
- anchorShadow: Konva.Circle
72
- shape?: Konva.Shape | undefined
73
- }[] = [];
74
-
75
- switch (graph.attrs.graphType) { // 判断绘制的图形
76
- case "Circle":
77
- anchorAndShadows = Circle.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
78
- break;
79
- case "Rect":
80
- anchorAndShadows = Rect.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
81
- break;
82
- case "Line":
83
- anchorAndShadows = Line.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
84
- break;
85
- case "Curve":
86
- anchorAndShadows = Curve.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
87
- break;
88
- case "Bezier":
89
- anchorAndShadows = Bezier.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
90
- break;
91
- }
92
-
93
- for (const anchorAndShadow of anchorAndShadows) {
94
- const { shape } = anchorAndShadow;
95
- if (shape) {
96
- // 鼠标按下
97
- shape.on('mousedown', () => {
98
- const pos = this.getStagePoint(); // 获取鼠标坐标点
99
- if (pos) {
100
- this.state.adjusting = true;
101
- this.state.adjustAnchor = shape.attrs.anchor;
102
- this.state.adjustGroupId = graph.id();
103
- this.state.startPointCurrent = pos;
104
- this.state.graphCurrent = graph;
105
- this.state.graphCurrentSnap = graph.clone();
106
- graph.setAttr('adjusting', true);
107
- shape.setAttr('adjusting', true);
108
- if (this.state.adjustAnchor) {
109
- switch (shape.attrs.anchor?.type) {
110
- case "Line":
111
- // 使用 直线、折线 静态处理方法
112
- Line.adjustStart(this.render, graph, this.state.adjustAnchor, pos);
113
- break;
114
- case "Curve":
115
- // 使用 直线、折线 静态处理方法
116
- Curve.adjustStart(this.render, graph, this.state.adjustAnchor, pos);
117
- break;
118
- case "Bezier":
119
- // 使用 直线、折线 静态处理方法
120
- Bezier.adjustStart(this.render, graph, this.state.adjustAnchor, pos);
121
- break;
122
- }
123
- }
124
- }
125
- })
126
-
127
- // 调整中
128
- this.render.stage.on('mousemove', () => {
129
- if (this.state.adjusting && this.state.graphCurrent && this.state.graphCurrentSnap) {
130
- if (shape.attrs.adjusting) {
131
- // 调整 圆/椭圆 图形
132
- const pos = this.getStagePoint(true);
133
- if (pos) {
134
- switch (shape.attrs.anchor?.type) {
135
- case "Circle":
136
- // 使用 圆/椭圆 静态处理方法
137
- Circle.adjust(
138
- this.render,
139
- graph,
140
- this.state.graphCurrentSnap,
141
- shape,
142
- anchorAndShadows,
143
- this.state.startPointCurrent,
144
- pos,
145
- graph.findOne('.hoverRect')
146
- );
147
- break;
148
- case "Rect":
149
- // 使用 圆/椭圆 静态处理方法
150
- Rect.adjust(
151
- this.render,
152
- graph,
153
- this.state.graphCurrentSnap,
154
- shape,
155
- anchorAndShadows,
156
- this.state.startPointCurrent,
157
- pos,
158
- graph.findOne('.hoverRect')
159
- );
160
- break;
161
- case "Line":
162
- // 使用 直线、折线 静态处理方法
163
- Line.adjust(
164
- this.render,
165
- graph,
166
- this.state.graphCurrentSnap,
167
- shape,
168
- anchorAndShadows,
169
- this.state.startPointCurrent,
170
- pos,
171
- graph.findOne('.hoverRect')
172
- );
173
- break;
174
- case "Curve":
175
- // 使用 直线、折线 静态处理方法
176
- Curve.adjust(
177
- this.render,
178
- graph,
179
- this.state.graphCurrentSnap,
180
- shape,
181
- anchorAndShadows,
182
- this.state.startPointCurrent,
183
- pos,
184
- graph.findOne('.hoverRect')
185
- );
186
- break;
187
- case "Bezier":
188
- // 使用 直线、折线 静态处理方法
189
- Bezier.adjust(
190
- this.render,
191
- graph,
192
- this.state.graphCurrentSnap,
193
- shape,
194
- anchorAndShadows,
195
- this.state.startPointCurrent,
196
- pos,
197
- graph.findOne('.hoverRect')
198
- );
199
- break;
200
- }
201
- // 重绘
202
- this.render.redraw([
203
- DrawGraph.name,
204
- LinkDraw.name,
205
- PreviewDraw.name
206
- ]);
207
- }
208
- }
209
- }
210
- });
211
-
212
- // 调整结束
213
- this.render.stage.on('mouseup', () => {
214
- graph.setAttr('adjusting', false);
215
- // 防止二次 hover 失效
216
- graph.setAttr('hover', false);
217
- graph.setAttr('hoverAnchor', false);
218
- if (this.state.adjusting) {
219
- // 更新历史
220
- this.render.updateHistory();
221
- // 重绘
222
- this.render.redraw([
223
- DrawGraph.name,
224
- LinkDraw.name,
225
- PreviewDraw.name
226
- ]);
227
- }
228
- this.state.adjusting = false;
229
- this.state.adjustAnchor = undefined;
230
- this.state.adjustGroupId = '';
231
- // 恢复显示所有 调整点
232
- for (const { shape } of anchorAndShadows) {
233
- if (shape) {
234
- shape.setAttr('adjusting', false);
235
- }
236
- }
237
- document.body.style.cursor = 'default';
238
- // 销毁 镜像
239
- this.state.graphCurrentSnap?.destroy();
240
- // 对齐线清除
241
- this.render.attractTool.alignLinesClear();
242
- })
243
- this.group.add(shape);
244
- }
245
- }
246
- }
247
- }
248
- }
249
- }
1
+ import Konva from 'konva';
2
+ import { GraphAnchor, BaseDraw, Draw, Render, AssetType } from '../types';
3
+ import { Circle, Rect, Line, Bezier, Curve } from '../graphs';
4
+ import { LinkDraw, PreviewDraw } from '../draws';
5
+
6
+ // 矩形、圆、曲线等基础图形绘制
7
+
8
+ export interface GraphDrawState {
9
+ adjusting: boolean; // 调整中
10
+ adjustGroupId: string; // 调整组ID
11
+ adjustAnchor?: GraphAnchor; // 调整点
12
+ startPointCurrent: Konva.Vector2d; // 鼠标按下调整点位置
13
+ graphCurrent?: Konva.Group; // 图形 group
14
+ graphCurrentSnap?: Konva.Group; // 图形 group 镜像,用于计算位置、大小的偏移
15
+ }
16
+
17
+ export interface GraphDrawOption { }
18
+
19
+ export class GraphDraw extends BaseDraw implements Draw {
20
+ static readonly NAME = 'GraphDraw';
21
+ option: {}
22
+ on = {}
23
+
24
+ state: GraphDrawState = {
25
+ adjusting: false,
26
+ adjustGroupId: '',
27
+ startPointCurrent: { x: 0, y: 0 }
28
+ }
29
+
30
+ constructor(render: Render, layer: Konva.Layer, option: GraphDrawOption) {
31
+ super(render, layer);
32
+ this.option = option;
33
+ this.group.name(GraphDraw.NAME);
34
+ }
35
+
36
+ /**
37
+ * 获取鼠标位置,并处理为 相对大小
38
+ * @param attract 含磁贴计算
39
+ * @returns
40
+ */
41
+ getStagePoint(attract = false) {
42
+ const pos = this.render.stage.getPointerPosition();
43
+ if (pos) {
44
+ const stageState = this.render.getStageState();
45
+ if (attract) {
46
+ // 磁贴
47
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
48
+ return {
49
+ x: this.render.toStageValue(transformerPos.x - stageState.x),
50
+ y: this.render.toStageValue(transformerPos.y - stageState.y)
51
+ }
52
+ } else {
53
+ return {
54
+ x: this.render.toStageValue(pos.x - stageState.x),
55
+ y: this.render.toStageValue(pos.y - stageState.y)
56
+ }
57
+ }
58
+ }
59
+ return null;
60
+ }
61
+
62
+ override draw() {
63
+ this.clear();
64
+ // 所有图形
65
+ const graphs = this.render.layer.find('.asset').filter((o) => o.attrs.assetType === AssetType.Graph) as Konva.Group[];
66
+ for (const graph of graphs) {
67
+ // 非选中状态才显示 调整点
68
+ if (!graph.attrs.selected) {
69
+ let anchorAndShadows: {
70
+ anchor: GraphAnchor
71
+ anchorShadow: Konva.Circle
72
+ shape?: Konva.Shape | undefined
73
+ }[] = [];
74
+
75
+ switch (graph.attrs.graphType) { // 判断绘制的图形
76
+ case "Circle":
77
+ anchorAndShadows = Circle.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
78
+ break;
79
+ case "Rect":
80
+ anchorAndShadows = Rect.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
81
+ break;
82
+ case "Line":
83
+ anchorAndShadows = Line.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
84
+ break;
85
+ case "Curve":
86
+ anchorAndShadows = Curve.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
87
+ break;
88
+ case "Bezier":
89
+ anchorAndShadows = Bezier.draw(graph, this.render, this.state.adjustAnchor).anchorAndShadows;
90
+ break;
91
+ }
92
+
93
+ for (const anchorAndShadow of anchorAndShadows) {
94
+ const { shape } = anchorAndShadow;
95
+ if (shape) {
96
+ // 鼠标按下
97
+ shape.on('mousedown', () => {
98
+ const pos = this.getStagePoint(); // 获取鼠标坐标点
99
+ if (pos) {
100
+ this.state.adjusting = true;
101
+ this.state.adjustAnchor = shape.attrs.anchor;
102
+ this.state.adjustGroupId = graph.id();
103
+ this.state.startPointCurrent = pos;
104
+ this.state.graphCurrent = graph;
105
+ this.state.graphCurrentSnap = graph.clone();
106
+ graph.setAttr('adjusting', true);
107
+ shape.setAttr('adjusting', true);
108
+ if (this.state.adjustAnchor) {
109
+ switch (shape.attrs.anchor?.type) {
110
+ case "Line":
111
+ // 使用 直线、折线 静态处理方法
112
+ Line.adjustStart(this.render, graph, this.state.adjustAnchor, pos);
113
+ break;
114
+ case "Curve":
115
+ // 使用 直线、折线 静态处理方法
116
+ Curve.adjustStart(this.render, graph, this.state.adjustAnchor, pos);
117
+ break;
118
+ case "Bezier":
119
+ // 使用 直线、折线 静态处理方法
120
+ Bezier.adjustStart(this.render, graph, this.state.adjustAnchor, pos);
121
+ break;
122
+ }
123
+ }
124
+ }
125
+ })
126
+
127
+ // 调整中
128
+ this.render.stage.on('mousemove', () => {
129
+ if (this.state.adjusting && this.state.graphCurrent && this.state.graphCurrentSnap) {
130
+ if (shape.attrs.adjusting) {
131
+ // 调整 圆/椭圆 图形
132
+ const pos = this.getStagePoint(true);
133
+ if (pos) {
134
+ switch (shape.attrs.anchor?.type) {
135
+ case "Circle":
136
+ // 使用 圆/椭圆 静态处理方法
137
+ Circle.adjust(
138
+ this.render,
139
+ graph,
140
+ this.state.graphCurrentSnap,
141
+ shape,
142
+ anchorAndShadows,
143
+ this.state.startPointCurrent,
144
+ pos,
145
+ graph.findOne('.hoverRect')
146
+ );
147
+ break;
148
+ case "Rect":
149
+ // 使用 圆/椭圆 静态处理方法
150
+ Rect.adjust(
151
+ this.render,
152
+ graph,
153
+ this.state.graphCurrentSnap,
154
+ shape,
155
+ anchorAndShadows,
156
+ this.state.startPointCurrent,
157
+ pos,
158
+ graph.findOne('.hoverRect')
159
+ );
160
+ break;
161
+ case "Line":
162
+ // 使用 直线、折线 静态处理方法
163
+ Line.adjust(
164
+ this.render,
165
+ graph,
166
+ this.state.graphCurrentSnap,
167
+ shape,
168
+ anchorAndShadows,
169
+ this.state.startPointCurrent,
170
+ pos,
171
+ graph.findOne('.hoverRect')
172
+ );
173
+ break;
174
+ case "Curve":
175
+ // 使用 直线、折线 静态处理方法
176
+ Curve.adjust(
177
+ this.render,
178
+ graph,
179
+ this.state.graphCurrentSnap,
180
+ shape,
181
+ anchorAndShadows,
182
+ this.state.startPointCurrent,
183
+ pos,
184
+ graph.findOne('.hoverRect')
185
+ );
186
+ break;
187
+ case "Bezier":
188
+ // 使用 直线、折线 静态处理方法
189
+ Bezier.adjust(
190
+ this.render,
191
+ graph,
192
+ this.state.graphCurrentSnap,
193
+ shape,
194
+ anchorAndShadows,
195
+ this.state.startPointCurrent,
196
+ pos,
197
+ graph.findOne('.hoverRect')
198
+ );
199
+ break;
200
+ }
201
+ // 重绘
202
+ this.render.redraw([
203
+ GraphDraw.NAME,
204
+ LinkDraw.NAME,
205
+ PreviewDraw.NAME
206
+ ]);
207
+ }
208
+ }
209
+ }
210
+ });
211
+
212
+ // 调整结束
213
+ this.render.stage.on('mouseup', () => {
214
+ graph.setAttr('adjusting', false);
215
+ // 防止二次 hover 失效
216
+ graph.setAttr('hover', false);
217
+ graph.setAttr('hoverAnchor', false);
218
+ if (this.state.adjusting) {
219
+ // 更新历史
220
+ this.render.updateHistory();
221
+ // 重绘
222
+ this.render.redraw([
223
+ GraphDraw.NAME,
224
+ LinkDraw.NAME,
225
+ PreviewDraw.NAME
226
+ ]);
227
+ }
228
+ this.state.adjusting = false;
229
+ this.state.adjustAnchor = undefined;
230
+ this.state.adjustGroupId = '';
231
+ // 恢复显示所有 调整点
232
+ for (const { shape } of anchorAndShadows) {
233
+ if (shape) {
234
+ shape.setAttr('adjusting', false);
235
+ }
236
+ }
237
+ document.body.style.cursor = 'default';
238
+ // 销毁 镜像
239
+ this.state.graphCurrentSnap?.destroy();
240
+ // 对齐线清除
241
+ this.render.attractTool.alignLinesClear();
242
+ })
243
+ this.group.add(shape);
244
+ }
245
+ }
246
+ }
247
+ }
248
+ }
249
+ }