aldehyde 0.2.485 → 0.2.487
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.
- package/lib/controls/entry-control.d.ts +1 -0
- package/lib/controls/entry-control.d.ts.map +1 -1
- package/lib/controls/entry-control.js +2 -0
- package/lib/controls/entry-control.js.map +1 -1
- package/lib/controls/select/index.d.ts +1 -1
- package/lib/controls/select/index.d.ts.map +1 -1
- package/lib/controls/select/index.js +6 -6
- package/lib/controls/select/index.js.map +1 -1
- package/lib/draw-canvas-edit/components/asset-bar/index.d.ts.map +1 -1
- package/lib/draw-canvas-edit/components/asset-bar/index.js +26 -7
- package/lib/draw-canvas-edit/components/asset-bar/index.js.map +1 -1
- package/lib/draw-canvas-edit/components/asset-bar/index.less +1 -1
- package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts.map +1 -1
- package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js +9 -5
- package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js.map +1 -1
- package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts.map +1 -1
- package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js +1 -0
- package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js.map +1 -1
- package/lib/draw-canvas-edit/components/render/index.d.ts.map +1 -1
- package/lib/draw-canvas-edit/components/render/index.js +3 -6
- package/lib/draw-canvas-edit/components/render/index.js.map +1 -1
- package/lib/draw-canvas-edit/components/render/tools/component-factory.d.ts.map +1 -1
- package/lib/draw-canvas-edit/components/render/tools/component-factory.js +4 -5
- package/lib/draw-canvas-edit/components/render/tools/component-factory.js.map +1 -1
- package/lib/draw-canvas-edit/components/render/types.d.ts +1 -0
- package/lib/draw-canvas-edit/components/render/types.d.ts.map +1 -1
- package/lib/draw-canvas-edit/components/render/types.js.map +1 -1
- package/lib/draw-canvas-edit/components/setting-form/index.d.ts.map +1 -1
- package/lib/draw-canvas-edit/components/setting-form/index.js +5 -3
- package/lib/draw-canvas-edit/components/setting-form/index.js.map +1 -1
- package/lib/draw-canvas-edit/index.d.ts.map +1 -1
- package/lib/draw-canvas-edit/index.js +12 -3
- package/lib/draw-canvas-edit/index.js.map +1 -1
- package/lib/module/dtmpl-edit-card.d.ts +1 -1
- package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
- package/lib/module/dtmpl-edit-card.js +40 -7
- package/lib/module/dtmpl-edit-card.js.map +1 -1
- package/lib/module/dtmpl-edit-page.d.ts +1 -1
- package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
- package/lib/module/dtmpl-edit-page.js +40 -7
- package/lib/module/dtmpl-edit-page.js.map +1 -1
- package/lib/table/act-table.d.ts +1 -0
- package/lib/table/act-table.d.ts.map +1 -1
- package/lib/table/act-table.js +5 -2
- package/lib/table/act-table.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/entry-control.tsx +3 -0
- package/src/aldehyde/controls/select/index.tsx +2 -3
- package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +1 -1
- package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +19 -6
- package/src/aldehyde/draw-canvas-edit/components/render/draws/graph-draw.ts +249 -249
- package/src/aldehyde/draw-canvas-edit/components/render/draws/link-draw.ts +1414 -1414
- package/src/aldehyde/draw-canvas-edit/components/render/draws/preview-draw.ts +273 -273
- package/src/aldehyde/draw-canvas-edit/components/render/draws/ref-line-draw.ts +70 -70
- package/src/aldehyde/draw-canvas-edit/components/render/draws/ruler-draw.ts +165 -165
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-outside-handlers.ts +4 -0
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/selection-handlers.ts +1 -0
- package/src/aldehyde/draw-canvas-edit/components/render/index.ts +2 -6
- package/src/aldehyde/draw-canvas-edit/components/render/tools/component-factory.ts +4 -5
- package/src/aldehyde/draw-canvas-edit/components/render/types.ts +1 -0
- package/src/aldehyde/draw-canvas-edit/components/setting-form/index.tsx +5 -3
- package/src/aldehyde/draw-canvas-edit/index.tsx +12 -3
- package/src/aldehyde/module/dtmpl-edit-card.tsx +37 -7
- package/src/aldehyde/module/dtmpl-edit-page.tsx +38 -8
- package/src/aldehyde/table/act-table.tsx +5 -2
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import Konva from 'konva';
|
|
2
|
-
import { BaseDraw, Draw, Handler, Render } from '../types';
|
|
3
|
-
|
|
4
|
-
// 参考线
|
|
5
|
-
|
|
6
|
-
export interface RefLineDrawOption {
|
|
7
|
-
padding: number
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export class RefLineDraw extends BaseDraw implements Draw, Handler {
|
|
11
|
-
option: RefLineDrawOption;
|
|
12
|
-
|
|
13
|
-
constructor(render: Render, layer: Konva.Layer, option: RefLineDrawOption) {
|
|
14
|
-
super(render, layer);
|
|
15
|
-
this.option = option;
|
|
16
|
-
this.group.listening(false);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
override draw() {
|
|
20
|
-
this.clear();
|
|
21
|
-
const stageState = this.render.getStageState();
|
|
22
|
-
const group = new Konva.Group();
|
|
23
|
-
const pos = this.render.stage.getPointerPosition();
|
|
24
|
-
if (pos) {
|
|
25
|
-
if (pos.y >= this.option.padding) {
|
|
26
|
-
// 横
|
|
27
|
-
group.add(
|
|
28
|
-
new Konva.Line({
|
|
29
|
-
name: this.constructor.name,
|
|
30
|
-
points: [
|
|
31
|
-
[this.render.toStageValue(-stageState.x), this.render.toStageValue(pos.y - stageState.y)],
|
|
32
|
-
[this.render.toStageValue(stageState.width - stageState.x + this.render.rulerSize), this.render.toStageValue(pos.y - stageState.y)]
|
|
33
|
-
].flat(),
|
|
34
|
-
stroke: 'rgba(255,0,0,0.2)',
|
|
35
|
-
strokeWidth: this.render.toStageValue(1),
|
|
36
|
-
listening: false
|
|
37
|
-
})
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
if (pos.x >= this.option.padding) {
|
|
41
|
-
// 竖
|
|
42
|
-
group.add(
|
|
43
|
-
new Konva.Line({
|
|
44
|
-
name: this.constructor.name,
|
|
45
|
-
points: [
|
|
46
|
-
[this.render.toStageValue(pos.x - stageState.x), this.render.toStageValue(-stageState.y)],
|
|
47
|
-
[this.render.toStageValue(pos.x - stageState.x), this.render.toStageValue(stageState.height - stageState.y + this.render.rulerSize)]
|
|
48
|
-
].flat(),
|
|
49
|
-
stroke: 'rgba(255,0,0,0.2)',
|
|
50
|
-
strokeWidth: this.render.toStageValue(1),
|
|
51
|
-
listening: false
|
|
52
|
-
})
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
this.group.add(group);
|
|
57
|
-
}
|
|
58
|
-
handlers = {
|
|
59
|
-
dom: {
|
|
60
|
-
mousemove: () => {
|
|
61
|
-
// 更新参考线
|
|
62
|
-
this.draw();
|
|
63
|
-
},
|
|
64
|
-
mouseout: () => {
|
|
65
|
-
// 清除参考线
|
|
66
|
-
this.clear();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
1
|
+
import Konva from 'konva';
|
|
2
|
+
import { BaseDraw, Draw, Handler, Render } from '../types';
|
|
3
|
+
|
|
4
|
+
// 参考线
|
|
5
|
+
|
|
6
|
+
export interface RefLineDrawOption {
|
|
7
|
+
padding: number
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export class RefLineDraw extends BaseDraw implements Draw, Handler {
|
|
11
|
+
option: RefLineDrawOption;
|
|
12
|
+
|
|
13
|
+
constructor(render: Render, layer: Konva.Layer, option: RefLineDrawOption) {
|
|
14
|
+
super(render, layer);
|
|
15
|
+
this.option = option;
|
|
16
|
+
this.group.listening(false);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override draw() {
|
|
20
|
+
this.clear();
|
|
21
|
+
const stageState = this.render.getStageState();
|
|
22
|
+
const group = new Konva.Group();
|
|
23
|
+
const pos = this.render.stage.getPointerPosition();
|
|
24
|
+
if (pos) {
|
|
25
|
+
if (pos.y >= this.option.padding) {
|
|
26
|
+
// 横
|
|
27
|
+
group.add(
|
|
28
|
+
new Konva.Line({
|
|
29
|
+
name: this.constructor.name,
|
|
30
|
+
points: [
|
|
31
|
+
[this.render.toStageValue(-stageState.x), this.render.toStageValue(pos.y - stageState.y)],
|
|
32
|
+
[this.render.toStageValue(stageState.width - stageState.x + this.render.rulerSize), this.render.toStageValue(pos.y - stageState.y)]
|
|
33
|
+
].flat(),
|
|
34
|
+
stroke: 'rgba(255,0,0,0.2)',
|
|
35
|
+
strokeWidth: this.render.toStageValue(1),
|
|
36
|
+
listening: false
|
|
37
|
+
})
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
if (pos.x >= this.option.padding) {
|
|
41
|
+
// 竖
|
|
42
|
+
group.add(
|
|
43
|
+
new Konva.Line({
|
|
44
|
+
name: this.constructor.name,
|
|
45
|
+
points: [
|
|
46
|
+
[this.render.toStageValue(pos.x - stageState.x), this.render.toStageValue(-stageState.y)],
|
|
47
|
+
[this.render.toStageValue(pos.x - stageState.x), this.render.toStageValue(stageState.height - stageState.y + this.render.rulerSize)]
|
|
48
|
+
].flat(),
|
|
49
|
+
stroke: 'rgba(255,0,0,0.2)',
|
|
50
|
+
strokeWidth: this.render.toStageValue(1),
|
|
51
|
+
listening: false
|
|
52
|
+
})
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
this.group.add(group);
|
|
57
|
+
}
|
|
58
|
+
handlers = {
|
|
59
|
+
dom: {
|
|
60
|
+
mousemove: () => {
|
|
61
|
+
// 更新参考线
|
|
62
|
+
this.draw();
|
|
63
|
+
},
|
|
64
|
+
mouseout: () => {
|
|
65
|
+
// 清除参考线
|
|
66
|
+
this.clear();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,165 +1,165 @@
|
|
|
1
|
-
import Konva from 'konva';
|
|
2
|
-
import { BaseDraw, Render, Draw } from '../types';
|
|
3
|
-
|
|
4
|
-
// 画布比例尺
|
|
5
|
-
|
|
6
|
-
export interface RulerDrawOption {
|
|
7
|
-
size: number
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export class RulerDraw extends BaseDraw implements Draw {
|
|
11
|
-
option: RulerDrawOption;
|
|
12
|
-
|
|
13
|
-
constructor(render: Render, layer: Konva.Layer, option: RulerDrawOption) {
|
|
14
|
-
super(render, layer);
|
|
15
|
-
this.option = option;
|
|
16
|
-
this.group.listening(false);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
override draw() {
|
|
20
|
-
this.clear();
|
|
21
|
-
const stageState = this.render.getStageState();
|
|
22
|
-
// 格子大小
|
|
23
|
-
const cellSize = 20;
|
|
24
|
-
const fontSizeMax = 12;
|
|
25
|
-
const lenX = Math.ceil(this.render.toStageValue(stageState.width) / cellSize); // 列数
|
|
26
|
-
const lenY = Math.ceil(this.render.toStageValue(stageState.height) / cellSize); // 行数
|
|
27
|
-
const startX = -Math.ceil(this.render.toStageValue(stageState.x - this.option.size) / cellSize);
|
|
28
|
-
const startY = -Math.ceil(this.render.toStageValue(stageState.y - this.option.size) / cellSize);
|
|
29
|
-
const group = new Konva.Group();
|
|
30
|
-
// 比例尺 - 上
|
|
31
|
-
const groupTop = new Konva.Group({
|
|
32
|
-
x: this.render.toStageValue(-stageState.x + this.option.size),
|
|
33
|
-
y: this.render.toStageValue(-stageState.y),
|
|
34
|
-
width: this.render.toStageValue(stageState.width - this.option.size + this.render.rulerSize),
|
|
35
|
-
height: this.render.toStageValue(this.option.size)
|
|
36
|
-
});
|
|
37
|
-
// 比例尺 - 左
|
|
38
|
-
const groupLeft = new Konva.Group({
|
|
39
|
-
x: this.render.toStageValue(-stageState.x),
|
|
40
|
-
y: this.render.toStageValue(-stageState.y + this.option.size),
|
|
41
|
-
width: this.render.toStageValue(this.option.size),
|
|
42
|
-
height: this.render.toStageValue(stageState.height - this.option.size + this.render.rulerSize)
|
|
43
|
-
});
|
|
44
|
-
{
|
|
45
|
-
groupTop.add(
|
|
46
|
-
// 上
|
|
47
|
-
new Konva.Rect({
|
|
48
|
-
name: this.constructor.name,
|
|
49
|
-
x: 0,
|
|
50
|
-
y: 0,
|
|
51
|
-
width: groupTop.width(),
|
|
52
|
-
height: groupTop.height(),
|
|
53
|
-
fill: '#ddd'
|
|
54
|
-
})
|
|
55
|
-
);
|
|
56
|
-
for (let x = lenX + startX - 1; x >= startX; x--) {
|
|
57
|
-
const nx = -groupTop.x() + cellSize * x;
|
|
58
|
-
const long = (this.render.toStageValue(this.option.size) / 5) * 4;
|
|
59
|
-
const short = (this.render.toStageValue(this.option.size) / 5) * 3;
|
|
60
|
-
if (nx >= 0) {
|
|
61
|
-
groupTop.add(
|
|
62
|
-
new Konva.Line({
|
|
63
|
-
name: this.constructor.name,
|
|
64
|
-
points: [
|
|
65
|
-
[nx, x % 5 ? long : short],
|
|
66
|
-
[nx, this.render.toStageValue(this.option.size)]
|
|
67
|
-
].flat(),
|
|
68
|
-
stroke: '#999',
|
|
69
|
-
strokeWidth: this.render.toStageValue(1),
|
|
70
|
-
listening: false
|
|
71
|
-
})
|
|
72
|
-
);
|
|
73
|
-
if (x % 5 === 0) {
|
|
74
|
-
let fontSize = fontSizeMax;
|
|
75
|
-
const text = new Konva.Text({
|
|
76
|
-
name: this.constructor.name,
|
|
77
|
-
y: this.render.toStageValue(this.option.size / 2 - fontSize),
|
|
78
|
-
text: (x * cellSize).toString(),
|
|
79
|
-
fontSize: this.render.toStageValue(fontSize),
|
|
80
|
-
fill: '#999',
|
|
81
|
-
align: 'center',
|
|
82
|
-
verticalAlign: 'middle',
|
|
83
|
-
lineHeight: 1.6
|
|
84
|
-
});
|
|
85
|
-
while (this.render.toStageValue(text.width()) > this.render.toStageValue(cellSize) * 4.6) {
|
|
86
|
-
fontSize -= 1;
|
|
87
|
-
text.fontSize(this.render.toStageValue(fontSize));
|
|
88
|
-
text.y(this.render.toStageValue(this.option.size / 2 - fontSize));
|
|
89
|
-
}
|
|
90
|
-
text.x(nx - text.width() / 2);
|
|
91
|
-
groupTop.add(text);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
{
|
|
97
|
-
groupLeft.add(
|
|
98
|
-
// 左
|
|
99
|
-
new Konva.Rect({
|
|
100
|
-
name: this.constructor.name,
|
|
101
|
-
x: 0,
|
|
102
|
-
y: 0,
|
|
103
|
-
width: groupLeft.width(),
|
|
104
|
-
height: groupLeft.height(),
|
|
105
|
-
fill: '#ddd'
|
|
106
|
-
})
|
|
107
|
-
);
|
|
108
|
-
for (let y = lenY + startY - 1; y >= startY; y--) {
|
|
109
|
-
const ny = -groupLeft.y() + cellSize * y;
|
|
110
|
-
const long = (this.render.toStageValue(this.option.size) / 5) * 4;
|
|
111
|
-
const short = (this.render.toStageValue(this.option.size) / 5) * 3;
|
|
112
|
-
if (ny >= 0) {
|
|
113
|
-
groupLeft.add(
|
|
114
|
-
new Konva.Line({
|
|
115
|
-
name: this.constructor.name,
|
|
116
|
-
points: [
|
|
117
|
-
[y % 5 ? long : short, ny],
|
|
118
|
-
[this.render.toStageValue(this.option.size), ny]
|
|
119
|
-
].flat(),
|
|
120
|
-
stroke: '#999',
|
|
121
|
-
strokeWidth: this.render.toStageValue(1),
|
|
122
|
-
listening: false
|
|
123
|
-
})
|
|
124
|
-
);
|
|
125
|
-
if (y % 5 === 0) {
|
|
126
|
-
let fontSize = fontSizeMax;
|
|
127
|
-
const text = new Konva.Text({
|
|
128
|
-
name: this.constructor.name,
|
|
129
|
-
x: 0,
|
|
130
|
-
y: ny,
|
|
131
|
-
text: (y * cellSize).toString(),
|
|
132
|
-
fontSize: this.render.toStageValue(fontSize),
|
|
133
|
-
fill: '#999',
|
|
134
|
-
align: 'right',
|
|
135
|
-
verticalAlign: 'bottom',
|
|
136
|
-
lineHeight: 1.6,
|
|
137
|
-
wrap: 'none'
|
|
138
|
-
});
|
|
139
|
-
while (text.width() > short * 0.8) {
|
|
140
|
-
fontSize -= 1;
|
|
141
|
-
text.fontSize(this.render.toStageValue(fontSize));
|
|
142
|
-
}
|
|
143
|
-
text.y(ny - text.height() / 2);
|
|
144
|
-
text.width(short - this.render.toStageValue(1));
|
|
145
|
-
groupLeft.add(text);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
group.add(
|
|
151
|
-
// 角
|
|
152
|
-
new Konva.Rect({
|
|
153
|
-
name: this.constructor.name,
|
|
154
|
-
x: this.render.toStageValue(-stageState.x),
|
|
155
|
-
y: this.render.toStageValue(-stageState.y),
|
|
156
|
-
width: this.render.toStageValue(this.option.size),
|
|
157
|
-
height: this.render.toStageValue(this.option.size),
|
|
158
|
-
fill: '#ddd'
|
|
159
|
-
})
|
|
160
|
-
);
|
|
161
|
-
group.add(groupTop);
|
|
162
|
-
group.add(groupLeft);
|
|
163
|
-
this.group.add(group);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
1
|
+
import Konva from 'konva';
|
|
2
|
+
import { BaseDraw, Render, Draw } from '../types';
|
|
3
|
+
|
|
4
|
+
// 画布比例尺
|
|
5
|
+
|
|
6
|
+
export interface RulerDrawOption {
|
|
7
|
+
size: number
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export class RulerDraw extends BaseDraw implements Draw {
|
|
11
|
+
option: RulerDrawOption;
|
|
12
|
+
|
|
13
|
+
constructor(render: Render, layer: Konva.Layer, option: RulerDrawOption) {
|
|
14
|
+
super(render, layer);
|
|
15
|
+
this.option = option;
|
|
16
|
+
this.group.listening(false);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override draw() {
|
|
20
|
+
this.clear();
|
|
21
|
+
const stageState = this.render.getStageState();
|
|
22
|
+
// 格子大小
|
|
23
|
+
const cellSize = 20;
|
|
24
|
+
const fontSizeMax = 12;
|
|
25
|
+
const lenX = Math.ceil(this.render.toStageValue(stageState.width) / cellSize); // 列数
|
|
26
|
+
const lenY = Math.ceil(this.render.toStageValue(stageState.height) / cellSize); // 行数
|
|
27
|
+
const startX = -Math.ceil(this.render.toStageValue(stageState.x - this.option.size) / cellSize);
|
|
28
|
+
const startY = -Math.ceil(this.render.toStageValue(stageState.y - this.option.size) / cellSize);
|
|
29
|
+
const group = new Konva.Group();
|
|
30
|
+
// 比例尺 - 上
|
|
31
|
+
const groupTop = new Konva.Group({
|
|
32
|
+
x: this.render.toStageValue(-stageState.x + this.option.size),
|
|
33
|
+
y: this.render.toStageValue(-stageState.y),
|
|
34
|
+
width: this.render.toStageValue(stageState.width - this.option.size + this.render.rulerSize),
|
|
35
|
+
height: this.render.toStageValue(this.option.size)
|
|
36
|
+
});
|
|
37
|
+
// 比例尺 - 左
|
|
38
|
+
const groupLeft = new Konva.Group({
|
|
39
|
+
x: this.render.toStageValue(-stageState.x),
|
|
40
|
+
y: this.render.toStageValue(-stageState.y + this.option.size),
|
|
41
|
+
width: this.render.toStageValue(this.option.size),
|
|
42
|
+
height: this.render.toStageValue(stageState.height - this.option.size + this.render.rulerSize)
|
|
43
|
+
});
|
|
44
|
+
{
|
|
45
|
+
groupTop.add(
|
|
46
|
+
// 上
|
|
47
|
+
new Konva.Rect({
|
|
48
|
+
name: this.constructor.name,
|
|
49
|
+
x: 0,
|
|
50
|
+
y: 0,
|
|
51
|
+
width: groupTop.width(),
|
|
52
|
+
height: groupTop.height(),
|
|
53
|
+
fill: '#ddd'
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
for (let x = lenX + startX - 1; x >= startX; x--) {
|
|
57
|
+
const nx = -groupTop.x() + cellSize * x;
|
|
58
|
+
const long = (this.render.toStageValue(this.option.size) / 5) * 4;
|
|
59
|
+
const short = (this.render.toStageValue(this.option.size) / 5) * 3;
|
|
60
|
+
if (nx >= 0) {
|
|
61
|
+
groupTop.add(
|
|
62
|
+
new Konva.Line({
|
|
63
|
+
name: this.constructor.name,
|
|
64
|
+
points: [
|
|
65
|
+
[nx, x % 5 ? long : short],
|
|
66
|
+
[nx, this.render.toStageValue(this.option.size)]
|
|
67
|
+
].flat(),
|
|
68
|
+
stroke: '#999',
|
|
69
|
+
strokeWidth: this.render.toStageValue(1),
|
|
70
|
+
listening: false
|
|
71
|
+
})
|
|
72
|
+
);
|
|
73
|
+
if (x % 5 === 0) {
|
|
74
|
+
let fontSize = fontSizeMax;
|
|
75
|
+
const text = new Konva.Text({
|
|
76
|
+
name: this.constructor.name,
|
|
77
|
+
y: this.render.toStageValue(this.option.size / 2 - fontSize),
|
|
78
|
+
text: (x * cellSize).toString(),
|
|
79
|
+
fontSize: this.render.toStageValue(fontSize),
|
|
80
|
+
fill: '#999',
|
|
81
|
+
align: 'center',
|
|
82
|
+
verticalAlign: 'middle',
|
|
83
|
+
lineHeight: 1.6
|
|
84
|
+
});
|
|
85
|
+
while (this.render.toStageValue(text.width()) > this.render.toStageValue(cellSize) * 4.6) {
|
|
86
|
+
fontSize -= 1;
|
|
87
|
+
text.fontSize(this.render.toStageValue(fontSize));
|
|
88
|
+
text.y(this.render.toStageValue(this.option.size / 2 - fontSize));
|
|
89
|
+
}
|
|
90
|
+
text.x(nx - text.width() / 2);
|
|
91
|
+
groupTop.add(text);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
{
|
|
97
|
+
groupLeft.add(
|
|
98
|
+
// 左
|
|
99
|
+
new Konva.Rect({
|
|
100
|
+
name: this.constructor.name,
|
|
101
|
+
x: 0,
|
|
102
|
+
y: 0,
|
|
103
|
+
width: groupLeft.width(),
|
|
104
|
+
height: groupLeft.height(),
|
|
105
|
+
fill: '#ddd'
|
|
106
|
+
})
|
|
107
|
+
);
|
|
108
|
+
for (let y = lenY + startY - 1; y >= startY; y--) {
|
|
109
|
+
const ny = -groupLeft.y() + cellSize * y;
|
|
110
|
+
const long = (this.render.toStageValue(this.option.size) / 5) * 4;
|
|
111
|
+
const short = (this.render.toStageValue(this.option.size) / 5) * 3;
|
|
112
|
+
if (ny >= 0) {
|
|
113
|
+
groupLeft.add(
|
|
114
|
+
new Konva.Line({
|
|
115
|
+
name: this.constructor.name,
|
|
116
|
+
points: [
|
|
117
|
+
[y % 5 ? long : short, ny],
|
|
118
|
+
[this.render.toStageValue(this.option.size), ny]
|
|
119
|
+
].flat(),
|
|
120
|
+
stroke: '#999',
|
|
121
|
+
strokeWidth: this.render.toStageValue(1),
|
|
122
|
+
listening: false
|
|
123
|
+
})
|
|
124
|
+
);
|
|
125
|
+
if (y % 5 === 0) {
|
|
126
|
+
let fontSize = fontSizeMax;
|
|
127
|
+
const text = new Konva.Text({
|
|
128
|
+
name: this.constructor.name,
|
|
129
|
+
x: 0,
|
|
130
|
+
y: ny,
|
|
131
|
+
text: (y * cellSize).toString(),
|
|
132
|
+
fontSize: this.render.toStageValue(fontSize),
|
|
133
|
+
fill: '#999',
|
|
134
|
+
align: 'right',
|
|
135
|
+
verticalAlign: 'bottom',
|
|
136
|
+
lineHeight: 1.6,
|
|
137
|
+
wrap: 'none'
|
|
138
|
+
});
|
|
139
|
+
while (text.width() > short * 0.8) {
|
|
140
|
+
fontSize -= 1;
|
|
141
|
+
text.fontSize(this.render.toStageValue(fontSize));
|
|
142
|
+
}
|
|
143
|
+
text.y(ny - text.height() / 2);
|
|
144
|
+
text.width(short - this.render.toStageValue(1));
|
|
145
|
+
groupLeft.add(text);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
group.add(
|
|
151
|
+
// 角
|
|
152
|
+
new Konva.Rect({
|
|
153
|
+
name: this.constructor.name,
|
|
154
|
+
x: this.render.toStageValue(-stageState.x),
|
|
155
|
+
y: this.render.toStageValue(-stageState.y),
|
|
156
|
+
width: this.render.toStageValue(this.option.size),
|
|
157
|
+
height: this.render.toStageValue(this.option.size),
|
|
158
|
+
fill: '#ddd'
|
|
159
|
+
})
|
|
160
|
+
);
|
|
161
|
+
group.add(groupTop);
|
|
162
|
+
group.add(groupLeft);
|
|
163
|
+
this.group.add(group);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -21,6 +21,7 @@ export class DragOutsideHandlers implements Handler {
|
|
|
21
21
|
},
|
|
22
22
|
drop: async (e: GlobalEventHandlersEventMap['drop']) => {
|
|
23
23
|
const componentItem = JSON.parse(e.dataTransfer?.getData('componentItem') || '{}');
|
|
24
|
+
const defaultValues = JSON.parse(e.dataTransfer?.getData('defaultValues') || '{}');
|
|
24
25
|
const src = e.dataTransfer?.getData('src');
|
|
25
26
|
const componentType = e.dataTransfer?.getData('componentType'); // 组件类型
|
|
26
27
|
const showPoints = e.dataTransfer?.getData('showPoints'); // 是否显示连接点
|
|
@@ -56,6 +57,9 @@ export class DragOutsideHandlers implements Handler {
|
|
|
56
57
|
group.setAttrs({ x, y });
|
|
57
58
|
// 更新坐标记录
|
|
58
59
|
this.render.setAssetSettings(group, this.render.getAssetSettings(group), false);
|
|
60
|
+
if (Object.keys(defaultValues).length > 0) { // 设置默认值
|
|
61
|
+
this.render.setAssetSettings(group, { ...this.render.getAssetSettings(group), ...defaultValues }, false);
|
|
62
|
+
}
|
|
59
63
|
// 设置连接点
|
|
60
64
|
this.render.componentFactory.createComponentLinkPoints({ group, points, showPoints });
|
|
61
65
|
// 组件鼠标移入移出事件
|
|
@@ -302,6 +302,7 @@ export class SelectionHandlers implements Handler {
|
|
|
302
302
|
}
|
|
303
303
|
this.render.emit('asset-position-change', groups);
|
|
304
304
|
this.render.emit('asset-rotation-change', groups);
|
|
305
|
+
this.render.emit('asset-size-change', groups);
|
|
305
306
|
}
|
|
306
307
|
this.render.redraw([GraphDraw.name, LinkDraw.name, PreviewDraw.name]);
|
|
307
308
|
},
|
|
@@ -540,11 +540,8 @@ export class Render {
|
|
|
540
540
|
|
|
541
541
|
// 获取素材设置
|
|
542
542
|
getAssetSettings(asset?: Konva.Node): AssetSettings {
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
}
|
|
546
|
-
const attrs = asset.attrs;
|
|
547
|
-
const base = attrs.assetSettings ?? { ...Render.AssetSettingsDefault };
|
|
543
|
+
const attrs = asset?.attrs || {};
|
|
544
|
+
const base = attrs?.assetSettings ?? { ...Render.AssetSettingsDefault };
|
|
548
545
|
return {
|
|
549
546
|
// 特定
|
|
550
547
|
...base,
|
|
@@ -554,7 +551,6 @@ export class Render {
|
|
|
554
551
|
fontSize: base.fontSize || this.getPageSettings().fontSize,
|
|
555
552
|
textFill: base.textFill || this.getPageSettings().textFill,
|
|
556
553
|
// 绘制图形,默认不填充
|
|
557
|
-
fill: base.fill || "transparent",
|
|
558
554
|
x: parseFloat((asset?.position().x ?? 0).toFixed(1)),
|
|
559
555
|
y: parseFloat((asset?.position().y ?? 0).toFixed(1)),
|
|
560
556
|
rotation: parseFloat((asset?.rotation() ?? 0).toFixed(1)),
|
|
@@ -133,17 +133,16 @@ export class ComponentFactory {
|
|
|
133
133
|
async createTypedComponent(options: CreateImageComponentOptions) {
|
|
134
134
|
const { src, type, componentType } = options;
|
|
135
135
|
let comGroup: { group: Konva.Group; points: AssetInfoPoint[] };
|
|
136
|
-
let group: Konva.Group;
|
|
137
|
-
let points: AssetInfoPoint[];
|
|
138
136
|
switch (componentType) {
|
|
139
137
|
case "workstation": // 工位
|
|
140
|
-
|
|
138
|
+
comGroup = await this.workstationComponent.create(src, type);
|
|
139
|
+
break;
|
|
141
140
|
default:
|
|
142
141
|
comGroup = await this.createImageComponent({ src, type, componentType });
|
|
143
|
-
group = comGroup.group;
|
|
144
|
-
points = comGroup.points;
|
|
145
142
|
break;
|
|
146
143
|
}
|
|
144
|
+
const group: Konva.Group = comGroup.group;
|
|
145
|
+
const points: AssetInfoPoint[] = comGroup.points;
|
|
147
146
|
return { group, points };
|
|
148
147
|
}
|
|
149
148
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useMemo, useState } from 'react';
|
|
1
|
+
import React, { useEffect, useMemo, useState, useRef } from 'react';
|
|
2
2
|
import { Form as AntdForm, Collapse, Row, Col } from "antd";
|
|
3
3
|
import _ from "lodash";
|
|
4
4
|
import FormItemGroup from "../../../form/form-Item-group";
|
|
@@ -124,6 +124,7 @@ const Index = (props: Props) => {
|
|
|
124
124
|
const [form] = AntdForm.useForm();
|
|
125
125
|
const [formConfigs, setFormConfigs] = useState<{ [key: string]: any }>([]);
|
|
126
126
|
const { translate } = useLocale();
|
|
127
|
+
const isValChangeRef = useRef<boolean>(false);
|
|
127
128
|
|
|
128
129
|
// 自定义表单项
|
|
129
130
|
const customFormItem = (items: { [key: string]: any }[], layout?: "vertical" | "horizontal") => {
|
|
@@ -234,6 +235,7 @@ const Index = (props: Props) => {
|
|
|
234
235
|
|
|
235
236
|
// 更新数据
|
|
236
237
|
const onValuesChange = (val: { [key: string]: any }) => {
|
|
238
|
+
isValChangeRef.current = true;
|
|
237
239
|
const temVal = val;
|
|
238
240
|
Object.keys(val).forEach((key) => { // 使用公共表单组件,转换指定类型值
|
|
239
241
|
const extControlType = formConfigs.find((item: any) => item.id === key)?.extControlType;
|
|
@@ -261,7 +263,6 @@ const Index = (props: Props) => {
|
|
|
261
263
|
background = null;
|
|
262
264
|
backgroundImg = null;
|
|
263
265
|
}
|
|
264
|
-
form.setFieldsValue({ background, backgroundImg, ...temVal });
|
|
265
266
|
// 默认画布配置
|
|
266
267
|
onPageSettingsChange({ ...pageSettings, background, backgroundImg, ...temVal });
|
|
267
268
|
}
|
|
@@ -284,9 +285,10 @@ const Index = (props: Props) => {
|
|
|
284
285
|
|
|
285
286
|
// 表单数据实时回显更新
|
|
286
287
|
useEffect(() => {
|
|
287
|
-
if (formConfigs?.length && formData) {
|
|
288
|
+
if (formConfigs?.length && formData && !isValChangeRef.current) {
|
|
288
289
|
formSetFieldsValue();
|
|
289
290
|
}
|
|
291
|
+
isValChangeRef.current = false;
|
|
290
292
|
}, [formData, formConfigs]);
|
|
291
293
|
|
|
292
294
|
return <AntdForm
|
|
@@ -81,7 +81,7 @@ const Index = (props: Props) => {
|
|
|
81
81
|
render.on('selection-change', (nodes: Konva.Node[]) => { // 监听选中组件
|
|
82
82
|
assetCurrentRef.current = nodes.length === 1 ? nodes[0] : undefined;
|
|
83
83
|
setAssetCurrent(assetCurrentRef.current);
|
|
84
|
-
setAssetSettings(
|
|
84
|
+
setAssetSettings(assetCurrentRef.current ? render.getAssetSettings(assetCurrentRef.current) : undefined);
|
|
85
85
|
});
|
|
86
86
|
render.on('link-selection-change', (link?: Konva.Line) => { // 监听选中连线
|
|
87
87
|
setLinkCurrent(link);
|
|
@@ -101,6 +101,13 @@ const Index = (props: Props) => {
|
|
|
101
101
|
setAssetSettings(s => s ? { ...s, rotation: +rotation.toFixed(1) } : undefined);
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
|
+
render.on('asset-size-change', (nodes: Konva.Node[]) => { // 监听组件宽高变化
|
|
105
|
+
const node = nodes.find(n => n.id() === assetCurrentRef.current?.id());
|
|
106
|
+
if (node) {
|
|
107
|
+
const settings = render.getAssetSettings(node);
|
|
108
|
+
setAssetSettings(s => s ? { ...s, width: settings.width, height: settings.height } : undefined);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
104
111
|
render.on('texting-change', setTexting); // 监听插入文本状态
|
|
105
112
|
render.on('graph-type-change', setGraphType); // 监听插入基础图形类型
|
|
106
113
|
}, []);
|
|
@@ -135,8 +142,10 @@ const Index = (props: Props) => {
|
|
|
135
142
|
if (!(assetCurrent && renderRef.current)) {
|
|
136
143
|
return;
|
|
137
144
|
}
|
|
138
|
-
setAssetSettings(
|
|
139
|
-
|
|
145
|
+
setAssetSettings(oldVal => {
|
|
146
|
+
renderRef.current.setAssetSettings(assetCurrent, { ...oldVal, ...val }, true);
|
|
147
|
+
return { ...oldVal, ...val };
|
|
148
|
+
});
|
|
140
149
|
}
|
|
141
150
|
|
|
142
151
|
// 更新连线配置
|