(programId)
| 95 | } |
| 96 | |
| 97 | export function selectProgram(programId) { |
| 98 | const nodes = g.selectAll("circle"); |
| 99 | nodes.each(function(d) { |
| 100 | const nodeElem = d3.select(this); |
| 101 | if (d.id === programId) { |
| 102 | nodeElem.classed("node-selected", true); |
| 103 | } else { |
| 104 | nodeElem.classed("node-selected", false); |
| 105 | } |
| 106 | nodeElem.classed("node-hovered", false); |
| 107 | }); |
| 108 | // Dispatch event for list view sync |
| 109 | window.dispatchEvent(new CustomEvent('node-selected', { detail: { id: programId } })); |
| 110 | updateGraphEdgeSelection(); // update edge highlight on selection |
| 111 | } |
| 112 | |
| 113 | let svg = null; |
| 114 | let g = null; |
no test coverage detected