@@ -10,6 +10,7 @@ var currentSortColumn = null;
1010var currentSortOrder = null ;
1111var currentHighlightedRowId ;
1212var highlightHandlers = [ ] ;
13+ var moduleIndexToHandler = { } ;
1314var highlightedModules = [ ] ;
1415var checkboxes = [ ] ;
1516var 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
446451function 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