Skip to content

Commit 2ee9350

Browse files
Clicking on hidden nodes focuses view on parent node
1 parent 10c858d commit 2ee9350

File tree

2 files changed

+37
-18
lines changed

2 files changed

+37
-18
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.8.1",
3+
"version": "0.8.2",
44
"description": "Visualizer for iKnow entities",
55
"main": "gulpfile.babel.js",
66
"scripts": {

src/static/js/tabular/index.js

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,17 @@ function toggleChildrenSelected (e) {
4646
updateSelection();
4747
}
4848

49+
function getFolded (initialNode) {
50+
let node = initialNode;
51+
do {
52+
if (!node.parent)
53+
return initialNode;
54+
if (node.parent.children.indexOf(node) === -1)
55+
return node.parent;
56+
} while (node = node.parent);
57+
return initialNode;
58+
}
59+
4960
function insertRows (data, table, selected) {
5061
let columns = getOption("tabularColumns");
5162
for (let i = 0; i < data.length; i++) {
@@ -61,24 +72,32 @@ function insertRows (data, table, selected) {
6172
if (columns[col].class)
6273
cell.className = val;
6374
}
75+
let cell = row.insertCell(columns.length);
6476
let ee = document.createElement("i"),
6577
ei = document.createElement("i"),
66-
sel = false,
67-
cell = row.insertCell(columns.length);
68-
for (let o of node.children) { if (o.selected) { sel = true; break; } }
69-
ei.className = `icon-${ sel ? "filled" : "outline" }`;
70-
ei.setAttribute("title", `${ sel ? "Deselect" : "Select" } children`);
71-
ei.addEventListener("click", toggleChildrenSelected.bind(node));
72-
ee.className = `icon-${ selected ? "close" : "add" }`;
73-
ee.setAttribute("title", `${ selected ? "Remove from" : "Add to" } selection`);
74-
ee.addEventListener("click", switchSelected.bind(node));
75-
cell.appendChild(ee);
76-
if (node.children.length) cell.appendChild(ei);
77-
row.addEventListener("mouseover", () =>
78-
node.element && node.element.classList.add("highlighted"));
79-
row.addEventListener("mouseout", () =>
80-
node.element && node.element.classList.remove("highlighted"));
81-
row.addEventListener("click", () => node.element && focusOn(node.x, node.y));
78+
sel = false;
79+
if (selected !== null) {
80+
for (let o of node.children) {
81+
if (o.selected) {
82+
sel = true;
83+
break;
84+
}
85+
}
86+
ei.className = `icon-${ sel ? "filled" : "outline" }`;
87+
ei.setAttribute("title", `${ sel ? "Deselect" : "Select" } children`);
88+
ei.addEventListener("click", toggleChildrenSelected.bind(node));
89+
ee.className = `icon-${ selected ? "close" : "add" }`;
90+
ee.setAttribute("title", `${ selected ? "Remove from" : "Add to" } selection`);
91+
ee.addEventListener("click", switchSelected.bind(node));
92+
cell.appendChild(ee);
93+
if (node.children.length) cell.appendChild(ei);
94+
row.addEventListener("mouseover", () => node.element.classList.add("highlighted"));
95+
row.addEventListener("mouseout", () => node.element.classList.remove("highlighted"));
96+
}
97+
row.addEventListener("click", () => {
98+
let n = getFolded(node);
99+
focusOn(n.x, n.y);
100+
});
82101
}
83102
}
84103

@@ -101,7 +120,7 @@ function updateHidden () {
101120
table = document.querySelector("#tabular-hidden");
102121
table.textContent = "";
103122
if (getOption("tabularShowHiddenNodes"))
104-
insertRows(data, table, false);
123+
insertRows(data, table, null);
105124
}
106125

107126
function updateAll () {

0 commit comments

Comments
 (0)