@api-client/ui 0.2.2 → 0.2.3
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/package.json +7 -2
- package/test/env.ts +15 -0
- package/test/tsconfig.json +1 -7
- package/web-test-runner.config.js +5 -1
- package/build/src/visualization/elements/VizAssociationElement.d.ts +0 -4
- package/build/src/visualization/elements/VizAssociationElement.d.ts.map +0 -1
- package/build/src/visualization/elements/VizAssociationElement.js +0 -4
- package/build/src/visualization/elements/VizAssociationElement.js.map +0 -1
- package/build/src/visualization/elements/VizWorkspaceElement.d.ts +0 -110
- package/build/src/visualization/elements/VizWorkspaceElement.d.ts.map +0 -1
- package/build/src/visualization/elements/VizWorkspaceElement.js +0 -321
- package/build/src/visualization/elements/VizWorkspaceElement.js.map +0 -1
- package/build/src/visualization/elements/WorkspaceStyles.d.ts +0 -3
- package/build/src/visualization/elements/WorkspaceStyles.d.ts.map +0 -1
- package/build/src/visualization/elements/WorkspaceStyles.js +0 -168
- package/build/src/visualization/elements/WorkspaceStyles.js.map +0 -1
- package/build/src/visualization/lib/AnchorFinder.d.ts +0 -64
- package/build/src/visualization/lib/AnchorFinder.d.ts.map +0 -1
- package/build/src/visualization/lib/AnchorFinder.js +0 -107
- package/build/src/visualization/lib/AnchorFinder.js.map +0 -1
- package/build/src/visualization/lib/AnchorUtils.d.ts +0 -10
- package/build/src/visualization/lib/AnchorUtils.d.ts.map +0 -1
- package/build/src/visualization/lib/AnchorUtils.js +0 -44
- package/build/src/visualization/lib/AnchorUtils.js.map +0 -1
- package/build/src/visualization/lib/AssociationAnchors.d.ts +0 -134
- package/build/src/visualization/lib/AssociationAnchors.d.ts.map +0 -1
- package/build/src/visualization/lib/AssociationAnchors.js +0 -351
- package/build/src/visualization/lib/AssociationAnchors.js.map +0 -1
- package/build/src/visualization/lib/LabelSketch.d.ts +0 -16
- package/build/src/visualization/lib/LabelSketch.d.ts.map +0 -1
- package/build/src/visualization/lib/LabelSketch.js +0 -53
- package/build/src/visualization/lib/LabelSketch.js.map +0 -1
- package/build/src/visualization/lib/LineSketch.d.ts +0 -26
- package/build/src/visualization/lib/LineSketch.d.ts.map +0 -1
- package/build/src/visualization/lib/LineSketch.js +0 -55
- package/build/src/visualization/lib/LineSketch.js.map +0 -1
- package/build/src/visualization/lib/Point.d.ts +0 -74
- package/build/src/visualization/lib/Point.d.ts.map +0 -1
- package/build/src/visualization/lib/Point.js +0 -121
- package/build/src/visualization/lib/Point.js.map +0 -1
- package/build/src/visualization/lib/PositionUtils.d.ts +0 -65
- package/build/src/visualization/lib/PositionUtils.d.ts.map +0 -1
- package/build/src/visualization/lib/PositionUtils.js +0 -205
- package/build/src/visualization/lib/PositionUtils.js.map +0 -1
- package/build/src/visualization/lib/SelectionManager.d.ts +0 -183
- package/build/src/visualization/lib/SelectionManager.d.ts.map +0 -1
- package/build/src/visualization/lib/SelectionManager.js +0 -481
- package/build/src/visualization/lib/SelectionManager.js.map +0 -1
- package/build/src/visualization/lib/ShapeArtist.d.ts +0 -45
- package/build/src/visualization/lib/ShapeArtist.d.ts.map +0 -1
- package/build/src/visualization/lib/ShapeArtist.js +0 -209
- package/build/src/visualization/lib/ShapeArtist.js.map +0 -1
- package/build/src/visualization/lib/SvgMarkers.d.ts +0 -14
- package/build/src/visualization/lib/SvgMarkers.d.ts.map +0 -1
- package/build/src/visualization/lib/SvgMarkers.js +0 -77
- package/build/src/visualization/lib/SvgMarkers.js.map +0 -1
- package/build/src/visualization/lib/TipSketch.d.ts +0 -26
- package/build/src/visualization/lib/TipSketch.d.ts.map +0 -1
- package/build/src/visualization/lib/TipSketch.js +0 -77
- package/build/src/visualization/lib/TipSketch.js.map +0 -1
- package/build/src/visualization/lib/TouchSupport.d.ts +0 -14
- package/build/src/visualization/lib/TouchSupport.d.ts.map +0 -1
- package/build/src/visualization/lib/TouchSupport.js +0 -55
- package/build/src/visualization/lib/TouchSupport.js.map +0 -1
- package/build/src/visualization/lib/Utils.d.ts +0 -25
- package/build/src/visualization/lib/Utils.d.ts.map +0 -1
- package/build/src/visualization/lib/Utils.js +0 -59
- package/build/src/visualization/lib/Utils.js.map +0 -1
- package/build/src/visualization/lib/VisualizationTypes.d.ts +0 -216
- package/build/src/visualization/lib/VisualizationTypes.d.ts.map +0 -1
- package/build/src/visualization/lib/VisualizationTypes.js +0 -3
- package/build/src/visualization/lib/VisualizationTypes.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceAlignment.d.ts +0 -51
- package/build/src/visualization/lib/WorkspaceAlignment.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceAlignment.js +0 -243
- package/build/src/visualization/lib/WorkspaceAlignment.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceDebugging.d.ts +0 -104
- package/build/src/visualization/lib/WorkspaceDebugging.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceDebugging.js +0 -286
- package/build/src/visualization/lib/WorkspaceDebugging.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceEdges.d.ts +0 -293
- package/build/src/visualization/lib/WorkspaceEdges.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceEdges.js +0 -1073
- package/build/src/visualization/lib/WorkspaceEdges.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceGestures.d.ts +0 -119
- package/build/src/visualization/lib/WorkspaceGestures.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceGestures.js +0 -376
- package/build/src/visualization/lib/WorkspaceGestures.js.map +0 -1
- package/build/src/visualization/lib/WorkspaceSizing.d.ts +0 -66
- package/build/src/visualization/lib/WorkspaceSizing.d.ts.map +0 -1
- package/build/src/visualization/lib/WorkspaceSizing.js +0 -168
- package/build/src/visualization/lib/WorkspaceSizing.js.map +0 -1
- package/build/src/visualization/lib/lines/RectilinearLine.d.ts +0 -114
- package/build/src/visualization/lib/lines/RectilinearLine.d.ts.map +0 -1
- package/build/src/visualization/lib/lines/RectilinearLine.js +0 -605
- package/build/src/visualization/lib/lines/RectilinearLine.js.map +0 -1
- package/build/src/visualization/lib/tips/RectilinearTip.d.ts +0 -26
- package/build/src/visualization/lib/tips/RectilinearTip.d.ts.map +0 -1
- package/build/src/visualization/lib/tips/RectilinearTip.js +0 -149
- package/build/src/visualization/lib/tips/RectilinearTip.js.map +0 -1
- package/build/src/visualization/lib/tips/TipArtist.d.ts +0 -22
- package/build/src/visualization/lib/tips/TipArtist.d.ts.map +0 -1
- package/build/src/visualization/lib/tips/TipArtist.js +0 -31
- package/build/src/visualization/lib/tips/TipArtist.js.map +0 -1
- package/build/src/visualization/lib/types.d.ts +0 -164
- package/build/src/visualization/lib/types.d.ts.map +0 -1
- package/build/src/visualization/lib/types.js +0 -2
- package/build/src/visualization/lib/types.js.map +0 -1
- package/build/src/visualization/plugin/dnd/DragAndDropPlugin.d.ts +0 -126
- package/build/src/visualization/plugin/dnd/DragAndDropPlugin.d.ts.map +0 -1
- package/build/src/visualization/plugin/dnd/DragAndDropPlugin.js +0 -260
- package/build/src/visualization/plugin/dnd/DragAndDropPlugin.js.map +0 -1
- package/build/src/visualization/plugin/group-selection/GroupSelection.d.ts +0 -93
- package/build/src/visualization/plugin/group-selection/GroupSelection.d.ts.map +0 -1
- package/build/src/visualization/plugin/group-selection/GroupSelection.js +0 -250
- package/build/src/visualization/plugin/group-selection/GroupSelection.js.map +0 -1
- package/build/src/visualization/plugin/positioning/DataModelLayout.d.ts +0 -10
- package/build/src/visualization/plugin/positioning/DataModelLayout.d.ts.map +0 -1
- package/build/src/visualization/plugin/positioning/DataModelLayout.js +0 -105
- package/build/src/visualization/plugin/positioning/DataModelLayout.js.map +0 -1
- package/build/src/visualization/plugin/positioning/WorkspaceLayout.d.ts +0 -93
- package/build/src/visualization/plugin/positioning/WorkspaceLayout.d.ts.map +0 -1
- package/build/src/visualization/plugin/positioning/WorkspaceLayout.js +0 -96
- package/build/src/visualization/plugin/positioning/WorkspaceLayout.js.map +0 -1
- package/build/src/visualization/viz-association.d.ts +0 -7
- package/build/src/visualization/viz-association.d.ts.map +0 -1
- package/build/src/visualization/viz-association.js +0 -3
- package/build/src/visualization/viz-association.js.map +0 -1
- package/build/src/visualization/viz-workspace.d.ts +0 -7
- package/build/src/visualization/viz-workspace.d.ts.map +0 -1
- package/build/src/visualization/viz-workspace.js +0 -3
- package/build/src/visualization/viz-workspace.js.map +0 -1
- package/src/visualization/elements/VizAssociationElement.ts +0 -3
- package/src/visualization/elements/VizWorkspaceElement.ts +0 -302
- package/src/visualization/elements/WorkspaceStyles.ts +0 -168
- package/src/visualization/lib/AnchorFinder.ts +0 -112
- package/src/visualization/lib/AnchorUtils.ts +0 -53
- package/src/visualization/lib/AssociationAnchors.ts +0 -418
- package/src/visualization/lib/LabelSketch.ts +0 -67
- package/src/visualization/lib/LineSketch.ts +0 -62
- package/src/visualization/lib/Point.ts +0 -134
- package/src/visualization/lib/PositionUtils.ts +0 -218
- package/src/visualization/lib/SelectionManager.ts +0 -513
- package/src/visualization/lib/ShapeArtist.ts +0 -222
- package/src/visualization/lib/SvgMarkers.ts +0 -80
- package/src/visualization/lib/TipSketch.ts +0 -91
- package/src/visualization/lib/TouchSupport.ts +0 -72
- package/src/visualization/lib/Utils.ts +0 -63
- package/src/visualization/lib/VisualizationTypes.ts +0 -232
- package/src/visualization/lib/WorkspaceAlignment.ts +0 -261
- package/src/visualization/lib/WorkspaceDebugging.ts +0 -313
- package/src/visualization/lib/WorkspaceEdges.ts +0 -1153
- package/src/visualization/lib/WorkspaceGestures.ts +0 -400
- package/src/visualization/lib/WorkspaceSizing.ts +0 -181
- package/src/visualization/lib/lines/RectilinearLine.ts +0 -589
- package/src/visualization/lib/tips/RectilinearTip.ts +0 -156
- package/src/visualization/lib/tips/TipArtist.ts +0 -34
- package/src/visualization/lib/types.ts +0 -173
- package/src/visualization/plugin/dnd/DragAndDropPlugin.ts +0 -294
- package/src/visualization/plugin/group-selection/GroupSelection.ts +0 -271
- package/src/visualization/plugin/positioning/DataModelLayout.ts +0 -114
- package/src/visualization/plugin/positioning/WorkspaceLayout.ts +0 -149
- package/src/visualization/viz-association.ts +0 -9
- package/src/visualization/viz-workspace.ts +0 -9
- package/test/env.d.ts +0 -9
- package/test/env.js +0 -7
- package/test/visualization/lib/AnchorFinder.test.ts +0 -313
- package/test/visualization/lib/AnchorUtils.test.ts +0 -178
- package/test/visualization/lib/PositionUtils.test.ts +0 -406
- package/test/visualization/lib/test-styles.css +0 -80
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import { assert, fixture, html } from '@open-wc/testing'
|
|
2
|
-
import {
|
|
3
|
-
findClosestAnchors,
|
|
4
|
-
readEastAnchorPoints,
|
|
5
|
-
readWestAnchorPoints,
|
|
6
|
-
readNorthAnchorPoints,
|
|
7
|
-
readSouthAnchorPoints,
|
|
8
|
-
} from '../../../src/visualization/lib/AnchorFinder.js'
|
|
9
|
-
import VizWorkspaceElement from '../../../src/visualization/elements/VizWorkspaceElement.js'
|
|
10
|
-
import '../../../src/visualization/viz-workspace.js'
|
|
11
|
-
|
|
12
|
-
describe('AnchorFinder', () => {
|
|
13
|
-
async function objectsFixture(): Promise<VizWorkspaceElement> {
|
|
14
|
-
return fixture(html`
|
|
15
|
-
<viz-workspace style="width: 1200px; height: 800px;">
|
|
16
|
-
<div class="workspace-dummy big" style="transform: translate(0px, 0px)"></div>
|
|
17
|
-
<div class="workspace-dummy big" style="transform: translate(0px, 0px)"></div>
|
|
18
|
-
</viz-workspace>
|
|
19
|
-
`)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async function objectFixture(): Promise<VizWorkspaceElement> {
|
|
23
|
-
return fixture(html`
|
|
24
|
-
<viz-workspace style="width: 1200px; height: 800px;">
|
|
25
|
-
<div class="workspace-dummy" style="transform: translate(0px, 0px)"></div>
|
|
26
|
-
</viz-workspace>
|
|
27
|
-
`)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// let styles: HTMLLinkElement;
|
|
31
|
-
// before(async () => {
|
|
32
|
-
// styles = document.createElement('link');
|
|
33
|
-
// styles.rel = 'stylesheet';
|
|
34
|
-
// styles.href = '/test/visualization/lib/test-styles.css';
|
|
35
|
-
// document.body.appendChild(styles);
|
|
36
|
-
// await nextFrame();
|
|
37
|
-
// await aTimeout(100);
|
|
38
|
-
// });
|
|
39
|
-
|
|
40
|
-
// after(() => {
|
|
41
|
-
// document.body.removeChild(styles);
|
|
42
|
-
// });
|
|
43
|
-
|
|
44
|
-
describe('readEastAnchorPoints()', () => {
|
|
45
|
-
let el: HTMLElement
|
|
46
|
-
|
|
47
|
-
beforeEach(async () => {
|
|
48
|
-
const workspace = await objectFixture()
|
|
49
|
-
el = workspace.querySelector('div')!
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
it('reads anchors', () => {
|
|
53
|
-
el.style.transform = 'translate(10px, 20px)'
|
|
54
|
-
const box = el.getBoundingClientRect()
|
|
55
|
-
|
|
56
|
-
const result = readEastAnchorPoints(box, 0)
|
|
57
|
-
assert.typeOf(result, 'array', 'returns an array')
|
|
58
|
-
assert.lengthOf(result, 3, 'has 3 points')
|
|
59
|
-
const [p1, p2, p3] = result
|
|
60
|
-
|
|
61
|
-
assert.equal(p1.x, 51, 'p1.x has value')
|
|
62
|
-
assert.equal(p1.y, 21, 'p1.y has value')
|
|
63
|
-
assert.equal(p2.x, 51, 'p2.x has value')
|
|
64
|
-
assert.equal(p2.y, 61, 'p2.y has value')
|
|
65
|
-
assert.equal(p3.x, 51, 'p3.x has value')
|
|
66
|
-
assert.equal(p3.y, 101, 'p3.y has value')
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
it('reads anchors with padding', () => {
|
|
70
|
-
el.style.transform = 'translate(10px, 20px)'
|
|
71
|
-
const box = el.getBoundingClientRect()
|
|
72
|
-
const result = readEastAnchorPoints(box, 10)
|
|
73
|
-
const [p1, p2, p3] = result
|
|
74
|
-
assert.equal(p1.x, 51, 'p1.x has value')
|
|
75
|
-
assert.equal(p1.y, 31, 'p1.y has value')
|
|
76
|
-
assert.equal(p2.x, 51, 'p2.x has value')
|
|
77
|
-
assert.equal(p2.y, 61, 'p2.y has value')
|
|
78
|
-
assert.equal(p3.x, 51, 'p3.x has value')
|
|
79
|
-
assert.equal(p3.y, 91, 'p3.y has value')
|
|
80
|
-
})
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
describe('readWestAnchorPoints()', () => {
|
|
84
|
-
let el: HTMLElement
|
|
85
|
-
|
|
86
|
-
beforeEach(async () => {
|
|
87
|
-
const workspace = await objectFixture()
|
|
88
|
-
el = workspace.querySelector('div')!
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
it('reads anchors', () => {
|
|
92
|
-
el.style.transform = 'translate(10px, 20px)'
|
|
93
|
-
const box = el.getBoundingClientRect()
|
|
94
|
-
const result = readWestAnchorPoints(box, 0)
|
|
95
|
-
assert.typeOf(result, 'array', 'returns an array')
|
|
96
|
-
assert.lengthOf(result, 3, 'has 3 points')
|
|
97
|
-
const [p1, p2, p3] = result
|
|
98
|
-
assert.equal(p1.x, 11, 'p1.x has value')
|
|
99
|
-
assert.equal(p1.y, 21, 'p1.y has value')
|
|
100
|
-
assert.equal(p2.x, 11, 'p2.x has value')
|
|
101
|
-
assert.equal(p2.y, 61, 'p2.y has value')
|
|
102
|
-
assert.equal(p3.x, 11, 'p3.x has value')
|
|
103
|
-
assert.equal(p3.y, 101, 'p3.y has value')
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
it('reads anchors with padding', () => {
|
|
107
|
-
el.style.transform = 'translate(10px, 20px)'
|
|
108
|
-
const box = el.getBoundingClientRect()
|
|
109
|
-
const result = readWestAnchorPoints(box, 10)
|
|
110
|
-
const [p1, p2, p3] = result
|
|
111
|
-
assert.equal(p1.x, 11, 'p1.x has value')
|
|
112
|
-
assert.equal(p1.y, 31, 'p1.y has value')
|
|
113
|
-
assert.equal(p2.x, 11, 'p2.x has value')
|
|
114
|
-
assert.equal(p2.y, 61, 'p2.y has value')
|
|
115
|
-
assert.equal(p3.x, 11, 'p3.x has value')
|
|
116
|
-
assert.equal(p3.y, 91, 'p3.y has value')
|
|
117
|
-
})
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
describe('readNorthAnchorPoints()', () => {
|
|
121
|
-
let el: HTMLElement
|
|
122
|
-
|
|
123
|
-
beforeEach(async () => {
|
|
124
|
-
const workspace = await objectFixture()
|
|
125
|
-
el = workspace.querySelector('div')!
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
it('reads anchors', () => {
|
|
129
|
-
el.style.transform = 'translate(10px, 20px)'
|
|
130
|
-
const box = el.getBoundingClientRect()
|
|
131
|
-
const result = readNorthAnchorPoints(box, 0)
|
|
132
|
-
assert.typeOf(result, 'array', 'returns an array')
|
|
133
|
-
assert.lengthOf(result, 3, 'has 3 points')
|
|
134
|
-
const [p1, p2, p3] = result
|
|
135
|
-
assert.equal(p1.x, 11, 'p1.x has value')
|
|
136
|
-
assert.equal(p1.y, 21, 'p1.y has value')
|
|
137
|
-
assert.equal(p2.x, 31, 'p2.x has value')
|
|
138
|
-
assert.equal(p2.y, 21, 'p2.y has value')
|
|
139
|
-
assert.equal(p3.x, 51, 'p3.x has value')
|
|
140
|
-
assert.equal(p3.y, 21, 'p3.y has value')
|
|
141
|
-
})
|
|
142
|
-
|
|
143
|
-
it('reads anchors with padding', () => {
|
|
144
|
-
el.style.transform = 'translate(10px, 20px)'
|
|
145
|
-
const box = el.getBoundingClientRect()
|
|
146
|
-
const result = readNorthAnchorPoints(box, 10)
|
|
147
|
-
const [p1, p2, p3] = result
|
|
148
|
-
assert.equal(p1.x, 21, 'p1.x has value')
|
|
149
|
-
assert.equal(p1.y, 21, 'p1.y has value')
|
|
150
|
-
assert.equal(p2.x, 31, 'p2.x has value')
|
|
151
|
-
assert.equal(p2.y, 21, 'p2.y has value')
|
|
152
|
-
assert.equal(p3.x, 41, 'p3.x has value')
|
|
153
|
-
assert.equal(p3.y, 21, 'p3.y has value')
|
|
154
|
-
})
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
describe('readSouthAnchorPoints()', () => {
|
|
158
|
-
let el: HTMLElement
|
|
159
|
-
|
|
160
|
-
beforeEach(async () => {
|
|
161
|
-
const workspace = await objectFixture()
|
|
162
|
-
el = workspace.querySelector('div')!
|
|
163
|
-
})
|
|
164
|
-
|
|
165
|
-
it('reads anchors', () => {
|
|
166
|
-
el.style.transform = 'translate(10px, 20px)'
|
|
167
|
-
const box = el.getBoundingClientRect()
|
|
168
|
-
const result = readSouthAnchorPoints(box, 0)
|
|
169
|
-
assert.typeOf(result, 'array', 'returns an array')
|
|
170
|
-
assert.lengthOf(result, 3, 'has 3 points')
|
|
171
|
-
const [p1, p2, p3] = result
|
|
172
|
-
assert.equal(p1.x, 11, 'p1.x has value')
|
|
173
|
-
assert.equal(p1.y, 101, 'p1.y has value')
|
|
174
|
-
assert.equal(p2.x, 31, 'p2.x has value')
|
|
175
|
-
assert.equal(p2.y, 101, 'p2.y has value')
|
|
176
|
-
assert.equal(p3.x, 51, 'p3.x has value')
|
|
177
|
-
assert.equal(p3.y, 101, 'p3.y has value')
|
|
178
|
-
})
|
|
179
|
-
|
|
180
|
-
it('reads anchors with padding', () => {
|
|
181
|
-
el.style.transform = 'translate(10px, 20px)'
|
|
182
|
-
const box = el.getBoundingClientRect()
|
|
183
|
-
const result = readSouthAnchorPoints(box, 10)
|
|
184
|
-
const [p1, p2, p3] = result
|
|
185
|
-
assert.equal(p1.x, 21, 'p1.x has value')
|
|
186
|
-
assert.equal(p1.y, 101, 'p1.y has value')
|
|
187
|
-
assert.equal(p2.x, 31, 'p2.x has value')
|
|
188
|
-
assert.equal(p2.y, 101, 'p2.y has value')
|
|
189
|
-
assert.equal(p3.x, 41, 'p3.x has value')
|
|
190
|
-
assert.equal(p3.y, 101, 'p3.y has value')
|
|
191
|
-
})
|
|
192
|
-
})
|
|
193
|
-
|
|
194
|
-
describe('findClosestAnchors()', () => {
|
|
195
|
-
let e1: HTMLElement
|
|
196
|
-
let e2: HTMLElement
|
|
197
|
-
|
|
198
|
-
beforeEach(async () => {
|
|
199
|
-
const workspace = await objectsFixture()
|
|
200
|
-
const objects = workspace.querySelectorAll('div')
|
|
201
|
-
e1 = objects[0]
|
|
202
|
-
e2 = objects[1]
|
|
203
|
-
})
|
|
204
|
-
|
|
205
|
-
// Testing without the padding so the anchors are in the vertexes.
|
|
206
|
-
// .workspace-dummy has `width: 200px;` and `height: 360px;`.
|
|
207
|
-
|
|
208
|
-
it('computes equal sizes and y-position (top anchors)', () => {
|
|
209
|
-
e1.style.transform = 'translate(10px, 20px)'
|
|
210
|
-
e2.style.transform = 'translate(220px, 20px)'
|
|
211
|
-
const b1 = e1.getBoundingClientRect()
|
|
212
|
-
const b2 = e2.getBoundingClientRect()
|
|
213
|
-
const result = findClosestAnchors(b1, b2, 0)
|
|
214
|
-
const [p1, p2] = result
|
|
215
|
-
|
|
216
|
-
assert.equal(p1.x, 211, 'has p1.x') // right
|
|
217
|
-
assert.equal(p1.y, 21, 'has p1.y') // y
|
|
218
|
-
assert.equal(p2.x, 221, 'has p2.x') // left
|
|
219
|
-
assert.equal(p2.y, 21, 'has p2.y') // y
|
|
220
|
-
})
|
|
221
|
-
|
|
222
|
-
it('computes equal sizes, target below-right, middle-top anchors', () => {
|
|
223
|
-
e1.style.transform = 'translate(10px, 180px)'
|
|
224
|
-
e2.style.transform = 'translate(250px, 305px)'
|
|
225
|
-
const b1 = e1.getBoundingClientRect()
|
|
226
|
-
const b2 = e2.getBoundingClientRect()
|
|
227
|
-
const result = findClosestAnchors(b1, b2, 0)
|
|
228
|
-
const [p1, p2] = result
|
|
229
|
-
assert.equal(p1.x, 211, 'has p1.x') // right
|
|
230
|
-
assert.equal(p1.y, 361, 'has p1.y') // middle
|
|
231
|
-
assert.equal(p2.x, 251, 'has p2.x') // left
|
|
232
|
-
assert.equal(p2.y, 306, 'has p2.y') // top
|
|
233
|
-
})
|
|
234
|
-
|
|
235
|
-
it('computes equal sizes, target below-right, bottom-top anchors', () => {
|
|
236
|
-
e1.style.transform = 'translate(10px, 180px)'
|
|
237
|
-
e2.style.transform = 'translate(250px, 405px)'
|
|
238
|
-
const b1 = e1.getBoundingClientRect()
|
|
239
|
-
const b2 = e2.getBoundingClientRect()
|
|
240
|
-
const result = findClosestAnchors(b1, b2, 0)
|
|
241
|
-
const [p1, p2] = result
|
|
242
|
-
assert.equal(p1.x, 211, 'has p1.x') // right
|
|
243
|
-
assert.equal(p1.y, 361, 'has p1.y') // bottom
|
|
244
|
-
assert.equal(p2.x, 251, 'has p2.x') // left
|
|
245
|
-
assert.equal(p2.y, 406, 'has p2.y') // top
|
|
246
|
-
})
|
|
247
|
-
|
|
248
|
-
it('computes equal sizes, target below-right, bottom-middle anchors', () => {
|
|
249
|
-
e1.style.transform = 'translate(10px, 180px)'
|
|
250
|
-
e2.style.transform = 'translate(250px, 255px)'
|
|
251
|
-
const b1 = e1.getBoundingClientRect()
|
|
252
|
-
const b2 = e2.getBoundingClientRect()
|
|
253
|
-
const result = findClosestAnchors(b1, b2, 0)
|
|
254
|
-
const [p1, p2] = result
|
|
255
|
-
assert.equal(p1.x, 211, 'has p1.x') // right
|
|
256
|
-
assert.equal(p1.y, 181, 'has p1.y') // bottom
|
|
257
|
-
assert.equal(p2.x, 251, 'has p2.x') // left
|
|
258
|
-
assert.equal(p2.y, 256, 'has p2.y') // middle
|
|
259
|
-
})
|
|
260
|
-
|
|
261
|
-
it('computes aligned, the same sizes (top anchors)', () => {
|
|
262
|
-
e1.style.transform = 'translate(10px, 180px)'
|
|
263
|
-
e2.style.transform = 'translate(250px, 180px)'
|
|
264
|
-
const b1 = e1.getBoundingClientRect()
|
|
265
|
-
const b2 = e2.getBoundingClientRect()
|
|
266
|
-
const result = findClosestAnchors(b1, b2, 0)
|
|
267
|
-
const [p1, p2] = result
|
|
268
|
-
assert.equal(p1.x, 211, 'has p1.x') // right
|
|
269
|
-
assert.equal(p1.y, 181, 'has p1.y') // bottom
|
|
270
|
-
assert.equal(p2.x, 251, 'has p2.x') // left
|
|
271
|
-
assert.equal(p2.y, 181, 'has p2.y') // middle
|
|
272
|
-
})
|
|
273
|
-
|
|
274
|
-
it('computes target East-South', () => {
|
|
275
|
-
e1.style.transform = 'translate(10px, 10px)'
|
|
276
|
-
e2.style.transform = 'translate(250px, 400px)'
|
|
277
|
-
const b1 = e1.getBoundingClientRect()
|
|
278
|
-
const b2 = e2.getBoundingClientRect()
|
|
279
|
-
const result = findClosestAnchors(b1, b2, 0)
|
|
280
|
-
const [p1, p2] = result
|
|
281
|
-
assert.equal(p1.x, 211, 'has p1.x') // right
|
|
282
|
-
assert.equal(p1.y, 371, 'has p1.y') // bottom
|
|
283
|
-
assert.equal(p2.x, 251, 'has p2.x') // left
|
|
284
|
-
assert.equal(p2.y, 401, 'has p2.y') // top
|
|
285
|
-
})
|
|
286
|
-
|
|
287
|
-
it('computes target South', () => {
|
|
288
|
-
e1.style.transform = 'translate(10px, 10px)'
|
|
289
|
-
e2.style.transform = 'translate(10px, 400px)'
|
|
290
|
-
const b1 = e1.getBoundingClientRect()
|
|
291
|
-
const b2 = e2.getBoundingClientRect()
|
|
292
|
-
const result = findClosestAnchors(b1, b2, 0)
|
|
293
|
-
const [p1, p2] = result
|
|
294
|
-
assert.equal(p1.x, 211, 'has p1.x') // right
|
|
295
|
-
assert.equal(p1.y, 371, 'has p1.y') // bottom
|
|
296
|
-
assert.equal(p2.x, 211, 'has p2.x') // right
|
|
297
|
-
assert.equal(p2.y, 401, 'has p2.y') // top
|
|
298
|
-
})
|
|
299
|
-
|
|
300
|
-
it('computes target South-West', () => {
|
|
301
|
-
e1.style.transform = 'translate(155px, 10px)'
|
|
302
|
-
e2.style.transform = 'translate(10px, 400px)'
|
|
303
|
-
const b1 = e1.getBoundingClientRect()
|
|
304
|
-
const b2 = e2.getBoundingClientRect()
|
|
305
|
-
const result = findClosestAnchors(b1, b2, 0)
|
|
306
|
-
const [p1, p2] = result
|
|
307
|
-
assert.equal(p1.x, 156, 'has p1.x') // left
|
|
308
|
-
assert.equal(p1.y, 371, 'has p1.y') // bottom
|
|
309
|
-
assert.equal(p2.x, 111, 'has p2.x') // middle
|
|
310
|
-
assert.equal(p2.y, 401, 'has p2.y') // top
|
|
311
|
-
})
|
|
312
|
-
})
|
|
313
|
-
})
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import { TemplateResult } from 'lit'
|
|
2
|
-
import { assert, fixture, html, nextFrame } from '@open-wc/testing'
|
|
3
|
-
import { anchorToPoint, closestAnchors } from '../../../src/visualization/lib/AnchorUtils.js'
|
|
4
|
-
import { Point } from '../../../src/visualization/lib/Point.js'
|
|
5
|
-
import VizWorkspaceElement from '../../../src/visualization/elements/VizWorkspaceElement.js'
|
|
6
|
-
import '../../../src/visualization/viz-workspace.js'
|
|
7
|
-
|
|
8
|
-
describe('AnchorUtils', () => {
|
|
9
|
-
function slotsTemplate(): TemplateResult {
|
|
10
|
-
const items = [
|
|
11
|
-
['top-edge left-slot', 'top-left', '6', '6'],
|
|
12
|
-
['top-edge center-slot', 'top-center', '6', '6'],
|
|
13
|
-
['top-edge right-slot', 'top-right', '6', '6'],
|
|
14
|
-
|
|
15
|
-
['bottom-edge left-slot', 'bottom-left', '6', '6'],
|
|
16
|
-
['bottom-edge center-slot', 'bottom-center', '6', '6'],
|
|
17
|
-
['bottom-edge right-slot', 'bottom-right', '6', '6'],
|
|
18
|
-
|
|
19
|
-
['left-edge top-slot', 'left-top', '8', '6'],
|
|
20
|
-
['left-edge middle-slot', 'left-middle', '8', '6'],
|
|
21
|
-
['left-edge bottom-slot', 'left-bottom', '8', '6'],
|
|
22
|
-
|
|
23
|
-
['right-edge top-slot', 'right-top', '8', '6'],
|
|
24
|
-
['right-edge middle-slot', 'right-middle', '8', '6'],
|
|
25
|
-
['right-edge bottom-slot', 'right-bottom', '8', '6'],
|
|
26
|
-
]
|
|
27
|
-
return html`
|
|
28
|
-
${items.map(
|
|
29
|
-
(item) => html`
|
|
30
|
-
<div
|
|
31
|
-
class="manual-association ${item[0]}"
|
|
32
|
-
data-association-slot="${item[1]}"
|
|
33
|
-
data-vertical-offset="${item[2]}"
|
|
34
|
-
data-horizontal-offset="${item[3]}"
|
|
35
|
-
></div>
|
|
36
|
-
`
|
|
37
|
-
)}
|
|
38
|
-
`
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async function workspaceEntityFixture(): Promise<HTMLElement> {
|
|
42
|
-
return fixture(html`
|
|
43
|
-
<div class="workspace-position-wrapper">
|
|
44
|
-
<viz-workspace style="width: 400px; height: 400px;">
|
|
45
|
-
<div class="entity" data-association-slots data-key="testId" style="transform: translate(100px, 200px)">
|
|
46
|
-
${slotsTemplate()}
|
|
47
|
-
</div>
|
|
48
|
-
</viz-workspace>
|
|
49
|
-
</div>
|
|
50
|
-
`)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
async function workspaceMultiEntityFixture(): Promise<HTMLElement> {
|
|
54
|
-
return fixture(html`
|
|
55
|
-
<div class="workspace-position-wrapper">
|
|
56
|
-
<viz-workspace style="width: 400px; height: 400px;">
|
|
57
|
-
<div class="entity" data-association-slots data-key="testId1" style="transform: translate(100px, 200px)">
|
|
58
|
-
${slotsTemplate()}
|
|
59
|
-
</div>
|
|
60
|
-
<div class="entity" data-association-slots data-key="testId2" style="transform: translate(300px, 300px)">
|
|
61
|
-
${slotsTemplate()}
|
|
62
|
-
</div>
|
|
63
|
-
<div class="entity" data-association-slots data-key="testId3" style="transform: translate(10px, 10px)">
|
|
64
|
-
${slotsTemplate()}
|
|
65
|
-
</div>
|
|
66
|
-
</viz-workspace>
|
|
67
|
-
</div>
|
|
68
|
-
`)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
async function noAnchorsFixture(): Promise<HTMLElement> {
|
|
72
|
-
return fixture(html`
|
|
73
|
-
<div class="workspace-position-wrapper">
|
|
74
|
-
<viz-workspace style="width: 400px; height: 400px;">
|
|
75
|
-
<div class="entity" data-key="testId1" style="transform: translate(100px, 200px)"></div>
|
|
76
|
-
<div class="entity" data-key="testId2" style="transform: translate(300px, 300px)"></div>
|
|
77
|
-
<div class="entity" data-key="testId3" style="transform: translate(10px, 10px)"></div>
|
|
78
|
-
</viz-workspace>
|
|
79
|
-
</div>
|
|
80
|
-
`)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
describe('anchorToPoint()', () => {
|
|
84
|
-
let workspace: VizWorkspaceElement
|
|
85
|
-
let element: HTMLElement
|
|
86
|
-
|
|
87
|
-
beforeEach(async () => {
|
|
88
|
-
const wrapper = await workspaceEntityFixture()
|
|
89
|
-
workspace = wrapper.querySelector('viz-workspace')!
|
|
90
|
-
const entity = workspace.querySelector('.entity')!
|
|
91
|
-
element = entity.querySelector('.manual-association')!
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
it('computes position with vertical/horizontal offset', async () => {
|
|
95
|
-
await nextFrame()
|
|
96
|
-
const result = anchorToPoint(element, workspace)
|
|
97
|
-
// offset to the parent (entity), + position change + v/h offset + border
|
|
98
|
-
assert.approximately(result.x, element.offsetLeft + 100 + 6 + 2, 1, 'has the x position')
|
|
99
|
-
assert.approximately(result.y, element.offsetTop + 200 + 6 + 2, 1, 'has the y position')
|
|
100
|
-
})
|
|
101
|
-
|
|
102
|
-
it('computes position without vertical/horizontal offset', async () => {
|
|
103
|
-
delete element.dataset.verticalOffset
|
|
104
|
-
delete element.dataset.horizontalOffset
|
|
105
|
-
await nextFrame()
|
|
106
|
-
const result = anchorToPoint(element, workspace)
|
|
107
|
-
// offset to the parent (entity), + position change + border
|
|
108
|
-
assert.approximately(result.x, element.offsetLeft + 100 + 2, 1, 'has the x position')
|
|
109
|
-
assert.approximately(result.y, element.offsetTop + 200 + 2, 1, 'has the y position')
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
it('ignores invalid vertical/horizontal offset', async () => {
|
|
113
|
-
element.dataset.verticalOffset = 'test 1'
|
|
114
|
-
element.dataset.horizontalOffset = 'test 2'
|
|
115
|
-
await nextFrame()
|
|
116
|
-
const result = anchorToPoint(element, workspace)
|
|
117
|
-
// offset to the parent (entity), + position change + border
|
|
118
|
-
assert.approximately(result.x, element.offsetLeft + 100 + 2, 1, 'has the x position')
|
|
119
|
-
assert.approximately(result.y, element.offsetTop + 200 + 2, 1, 'has the y position')
|
|
120
|
-
})
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
describe('closestAnchors()', () => {
|
|
124
|
-
it('returns the closest points', async () => {
|
|
125
|
-
const wrapper = await workspaceMultiEntityFixture()
|
|
126
|
-
const workspace = wrapper.querySelector('viz-workspace')!
|
|
127
|
-
const entities = workspace.querySelectorAll('.entity') as NodeListOf<HTMLElement>
|
|
128
|
-
|
|
129
|
-
const result = closestAnchors(entities[1], entities[2], workspace)!
|
|
130
|
-
assert.typeOf(result, 'array', 'returns an array')
|
|
131
|
-
assert.lengthOf(result, 2, 'returns two points')
|
|
132
|
-
const [p1, p2] = result
|
|
133
|
-
|
|
134
|
-
assert.approximately(p1.x, 356, 1, 'p1.x is set')
|
|
135
|
-
assert.approximately(p2.x, 252, 1, 'p2.x is set')
|
|
136
|
-
assert.approximately(p1.y, 300, 1, 'p1.y is set')
|
|
137
|
-
assert.approximately(p2.y, 166, 1, 'p2.y is set')
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
it('returns null when no anchors', async () => {
|
|
141
|
-
const wrapper = await noAnchorsFixture()
|
|
142
|
-
const workspace = wrapper.querySelector('viz-workspace')!
|
|
143
|
-
const entities = workspace.querySelectorAll('.entity') as NodeListOf<HTMLElement>
|
|
144
|
-
const result = closestAnchors(entities[1], entities[2], workspace)
|
|
145
|
-
assert.strictEqual(result, null)
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
it('avoids already used anchors', async () => {
|
|
149
|
-
const wrapper = await workspaceMultiEntityFixture()
|
|
150
|
-
const workspace = wrapper.querySelector('viz-workspace')!
|
|
151
|
-
const entities = workspace.querySelectorAll('.entity') as NodeListOf<HTMLElement>
|
|
152
|
-
const result = closestAnchors(entities[1], entities[2], workspace, [
|
|
153
|
-
{
|
|
154
|
-
directions: { start: 'east', end: 'north' },
|
|
155
|
-
id: 'test',
|
|
156
|
-
positionChange: false,
|
|
157
|
-
shape: {
|
|
158
|
-
line: {
|
|
159
|
-
startPoint: new Point(356, 300),
|
|
160
|
-
endPoint: new Point(254, 127),
|
|
161
|
-
type: 'rectilinear',
|
|
162
|
-
transformOrigin: '0px 0px',
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
source: 's1',
|
|
166
|
-
target: 't1',
|
|
167
|
-
},
|
|
168
|
-
])!
|
|
169
|
-
assert.typeOf(result, 'array', 'returns an array')
|
|
170
|
-
assert.lengthOf(result, 2, 'returns two points')
|
|
171
|
-
const [p1, p2] = result
|
|
172
|
-
assert.approximately(p1.x, 300, 1, 'p1.x is set')
|
|
173
|
-
assert.approximately(p2.x, 196, 1, 'p2.x is set')
|
|
174
|
-
assert.approximately(p1.y, 350, 1, 'p1.y is set')
|
|
175
|
-
assert.approximately(p2.y, 212, 1, 'p2.y is set')
|
|
176
|
-
})
|
|
177
|
-
})
|
|
178
|
-
})
|