Skip to content

Commit 1668fdc

Browse files
committed
Fix canvas clicks stuck on modules w/o handlers
Fixes #87
1 parent 5bf3aae commit 1668fdc

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

InteractiveHtmlBom/web/ibom.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ var currentSortColumn = null;
1010
var currentSortOrder = null;
1111
var currentHighlightedRowId;
1212
var highlightHandlers = [];
13+
var moduleIndexToHandler = {};
1314
var highlightedModules = [];
1415
var checkboxes = [];
1516
var bomCheckboxes = "";
@@ -317,6 +318,7 @@ function populateBomBody() {
317318
bom.removeChild(bom.firstChild);
318319
}
319320
highlightHandlers = [];
321+
moduleIndexToHandler = {};
320322
currentHighlightedRowId = null;
321323
var first = true;
322324
switch (canvaslayout) {
@@ -393,6 +395,9 @@ function populateBomBody() {
393395
handler: handler,
394396
refs: references
395397
});
398+
for (var refIndex of references.map(r => r[1])) {
399+
moduleIndexToHandler[refIndex] = handler;
400+
}
396401
if ((filter || reflookup) && first) {
397402
handler();
398403
first = false;
@@ -445,11 +450,11 @@ function populateBomTable() {
445450

446451
function modulesClicked(moduleIndexes) {
447452
var lastClickedIndex = moduleIndexes.indexOf(lastClicked);
448-
var index = moduleIndexes[(lastClickedIndex + 1) % moduleIndexes.length];
449-
for (var handler of highlightHandlers) {
450-
if (handler.refs.map(r => r[1]).indexOf(index) >= 0) {
451-
lastClicked = index;
452-
handler.handler();
453+
for (var i = 1; i <= moduleIndexes.length; i++) {
454+
var refIndex = moduleIndexes[(lastClickedIndex + i) % moduleIndexes.length];
455+
if (refIndex in moduleIndexToHandler) {
456+
lastClicked = refIndex;
457+
moduleIndexToHandler[refIndex]();
453458
smoothScrollToRow(currentHighlightedRowId);
454459
break;
455460
}

0 commit comments

Comments
 (0)