Skip to content

Commit 16419ce

Browse files
Selecting nodes by click, tables margin change
1 parent 7d91ebb commit 16419ce

File tree

4 files changed

+35
-10
lines changed

4 files changed

+35
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "iknow-entity-browser",
3-
"version": "0.5.1",
3+
"version": "0.5.2",
44
"description": "Visualizer for iKnow entities",
55
"main": "gulpfile.babel.js",
66
"scripts": {

src/static/js/graph/index.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { onModelUpdate, unfold } from "../model";
2-
import { updateSelection, setLastSelectedNode } from "../selection";
2+
import { updateSelection, setLastSelectedNode, selectAll, deselectAll } from "../selection";
33

44
let shiftKey, ctrlKey,
55
width = window.innerWidth,
@@ -27,7 +27,7 @@ let svg = null,
2727
.on("start.brush", () => {
2828
if (!d3.event.sourceEvent) return;
2929
node.each((d) => {
30-
d.previouslySelected = ctrlKey && d.selected;
30+
d.wasSelected = ctrlKey && d.selected;
3131
});
3232
})
3333
.on("brush.brush", () => {
@@ -39,7 +39,7 @@ let svg = null,
3939
let selected = (extent[0][0] <= d.x && d.x < extent[1][0]
4040
&& extent[0][1] <= d.y && d.y < extent[1][1]);
4141
if (selected) setLastSelectedNode(d);
42-
return d.selected = d.previouslySelected ^ selected;
42+
return d.selected = d.wasSelected ^ selected;
4343
});
4444
})
4545
.on("end.brush", () => {
@@ -132,7 +132,7 @@ export function init () {
132132
.append("g")
133133
.attr("class", "view");
134134
brush = view.append("g")
135-
.datum(() => { return { selected: false, previouslySelected: false }; })
135+
.datum(() => { return { selected: false, wasSelected: false }; })
136136
.attr("class", "brush");
137137
links = view.append("g").attr("class", "links");
138138
nodes = view.append("g").attr("class", "nodes");
@@ -220,6 +220,7 @@ export function update (g = lastGraph, reset = false) {
220220
let nodeEnter = node.enter().append("g")
221221
.each(function (d) { this._id = d.id; })
222222
.attr("class", d => `node${ d.id === 0 ? " root" : "" } ${ d.type || "unknown" }`)
223+
.classed("selected", (p) => p.selected)
223224
.call(dragger)
224225
.on("dblclick", function (d) {
225226
d3.event.stopPropagation();
@@ -230,10 +231,18 @@ export function update (g = lastGraph, reset = false) {
230231
})
231232
.on("click", function (d) {
232233
if (d3.event.defaultPrevented) return;
233-
if (!ctrlKey) {
234-
node.classed("selected", (p) => p.selected = p.previouslySelected = false)
234+
// if (!ctrlKey) {
235+
// node.classed("selected", (p) => p.selected = p.wasSelected = false)
236+
// }
237+
if (shiftKey) {
238+
if (d.selected)
239+
deselectAll(d);
240+
else
241+
selectAll(d);
242+
node.classed("selected", (p) => p.selected);
243+
} else {
244+
d3.select(this).classed("selected", d.selected = !d.selected); // (!prevSel)
235245
}
236-
d3.select(this).classed("selected", d.selected = !d.selected); // (!prevSel)
237246
setLastSelectedNode(d.selected ? d : null);
238247
updateSelection();
239248
});

src/static/js/selection.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,22 @@ export function setLastSelectedNode (node) {
3737

3838
}
3939

40+
export function selectAll (node) {
41+
if (!node)
42+
return;
43+
if (node.children)
44+
node.children.forEach(c => selectAll(c));
45+
node.selected = true;
46+
}
47+
48+
export function deselectAll (node) {
49+
if (!node)
50+
return;
51+
if (node.children)
52+
node.children.forEach(c => deselectAll(c));
53+
node.selected = false;
54+
}
55+
4056
/**
4157
* The callback is invoked when selection changes.
4258
* @param {selectionCallback} callback

src/static/scss/basic.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
table {
55

66
border-spacing: 0;
7-
border-radius: 5px;
7+
border-radius: 3px;
88
overflow: hidden;
99
box-shadow: $defaultShadow;
1010

1111
td, th {
12-
padding: $defaultPadding / 2;
12+
padding: 3px;
1313
}
1414

1515
td:not(:last-child), th:not(:last-child) {

0 commit comments

Comments
 (0)