Skip to content

Commit 7746050

Browse files
authored
feat(dia.HighlighterView): add static getAll() method (#2704)
1 parent 369b58b commit 7746050

File tree

2 files changed

+78
-4
lines changed

2 files changed

+78
-4
lines changed

packages/joint-core/src/dia/HighlighterView.mjs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,18 +278,22 @@ export const HighlighterView = mvc.View.extend({
278278
});
279279
},
280280

281-
removeAll(paper, id = null) {
281+
getAll(paper, id = null) {
282+
const views = [];
282283
const { _views } = this;
283-
284284
for (let cid in _views) {
285285
for (let hid in _views[cid]) {
286286
const view = _views[cid][hid];
287-
288287
if (view.cellView.paper === paper && view instanceof this && (id === null || hid === id)) {
289-
view.remove();
288+
views.push(view);
290289
}
291290
}
292291
}
292+
return views;
293+
},
294+
295+
removeAll(paper, id = null) {
296+
this.getAll(paper, id).forEach(view => view.remove());
293297
},
294298

295299
update(cellView, id = null, dirty = false) {

packages/joint-core/test/jointjs/dia/HighlighterView.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ QUnit.module('HighlighterView', function(hooks) {
143143
assert.equal(joint.dia.HighlighterView.get(elementView, highlighterId2), null);
144144
assert.ok(joint.dia.HighlighterView.get(elementView2, highlighterId1));
145145
assert.equal(joint.dia.HighlighterView.get(elementView3, highlighterId1), null);
146+
147+
paper2.remove();
146148
});
147149

148150
QUnit.test('removeAll(paper, id)', function(assert) {
@@ -171,6 +173,74 @@ QUnit.module('HighlighterView', function(hooks) {
171173
assert.ok(joint.dia.HighlighterView.get(elementView, highlighterId2));
172174
assert.ok(joint.dia.HighlighterView.get(elementView2, highlighterId1));
173175
assert.equal(joint.dia.HighlighterView.get(elementView3, highlighterId1), null);
176+
177+
paper2.remove();
178+
});
179+
});
180+
181+
QUnit.module('static getAll()', function() {
182+
183+
QUnit.test('getAll(paper)', function(assert) {
184+
185+
const highlighterId1 = 'highlighter-id-1';
186+
const highlighterId2 = 'highlighter-id-2';
187+
188+
const graph2 = new joint.dia.Graph({}, { cellNamespace: joint.shapes });
189+
const paper2 = new joint.dia.Paper({ model: graph2, cellViewNamespace: joint.shapes });
190+
const element2 = element.clone();
191+
const elementDifferentGraph = element.clone();
192+
193+
element2.addTo(graph);
194+
elementDifferentGraph.addTo(graph2);
195+
196+
const elementView2 = element2.findView(paper);
197+
const elementViewDifferentGraph = elementDifferentGraph.findView(paper2);
198+
199+
const h1 = joint.dia.HighlighterView.add(elementView, 'body', highlighterId1);
200+
const h2 = joint.dia.HighlighterView.add(elementView, 'body', highlighterId2);
201+
const h3 = joint.dia.HighlighterView.add(elementView2, 'body', highlighterId1);
202+
const h4 = joint.dia.HighlighterView.add(elementViewDifferentGraph, 'body', highlighterId1);
203+
204+
const highlighters = joint.dia.HighlighterView.getAll(paper);
205+
assert.equal(highlighters.length, 3);
206+
assert.ok(highlighters.includes(h1));
207+
assert.ok(highlighters.includes(h2));
208+
assert.ok(highlighters.includes(h3));
209+
assert.notOk(highlighters.includes(h4));
210+
211+
paper2.remove();
212+
});
213+
214+
QUnit.test('getAll(paper, id)', function(assert) {
215+
216+
const highlighterId1 = 'highlighter-id-1';
217+
const highlighterId2 = 'highlighter-id-2';
218+
219+
const graph2 = new joint.dia.Graph({}, { cellNamespace: joint.shapes });
220+
const paper2 = new joint.dia.Paper({ model: graph2, cellViewNamespace: joint.shapes });
221+
222+
const element2 = element.clone();
223+
const elementDifferentGraph = element.clone();
224+
225+
element2.addTo(graph);
226+
elementDifferentGraph.addTo(graph2);
227+
228+
const elementView2 = element2.findView(paper);
229+
const elementViewDifferentGraph = elementDifferentGraph.findView(paper2);
230+
231+
const h1 = joint.dia.HighlighterView.add(elementView, 'body', highlighterId1);
232+
const h2 = joint.dia.HighlighterView.add(elementView, 'body', highlighterId2);
233+
const h3 = joint.dia.HighlighterView.add(elementView2, 'body', highlighterId1);
234+
const h4 = joint.dia.HighlighterView.add(elementViewDifferentGraph, 'body', highlighterId1);
235+
236+
const highlighters = joint.dia.HighlighterView.getAll(paper, highlighterId1);
237+
assert.equal(highlighters.length, 2);
238+
assert.ok(highlighters.includes(h1));
239+
assert.notOk(highlighters.includes(h2));
240+
assert.ok(highlighters.includes(h3));
241+
assert.notOk(highlighters.includes(h4));
242+
243+
paper2.remove();
174244
});
175245
});
176246

0 commit comments

Comments
 (0)