Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
744df8d
refactor(ui): normalize graph edge types and remove dead code
Apr 15, 2026
fb8e8a0
fix(ui): add key to Suspense in navbar to prevent stale fallback
Apr 15, 2026
cd5fdc9
refactor(ui): move layout derivation into GraphCanvas inner component
Apr 15, 2026
58c8efa
refactor(ui): replace D3 graph rendering with React Flow
Apr 15, 2026
0ac545b
refactor(ui): apply code review fixes to React Flow graph
Apr 16, 2026
b8aca18
perf(ui): fix O(n*e) lookup in attack path graph
Apr 16, 2026
bc13241
feat(ui): add graph interactions and filtered view
Apr 16, 2026
9444aeb
perf(ui): fix O(n*e) lookup in computeFilteredSubgraph
Apr 16, 2026
d01b532
fix(ui): wire View Finding handler into NodeDetailPanel after rebase
Apr 17, 2026
1031673
Merge remote-tracking branch 'origin/PROWLER-1273/react-flow-migratio…
Apr 17, 2026
d4dac34
fix(ui): add key to Suspense in navbar to prevent stale fallback
Apr 15, 2026
0f4a112
refactor(ui): move layout derivation into GraphCanvas inner component
Apr 15, 2026
1610b69
refactor(ui): replace D3 graph rendering with React Flow
Apr 15, 2026
9fe4e30
refactor(ui): apply code review fixes to React Flow graph
Apr 16, 2026
a41ec0d
perf(ui): fix O(n*e) lookup in attack path graph
Apr 16, 2026
ce9ce84
refactor(ui): extract shared graph node primitives
Apr 29, 2026
962337d
test(ui): cover layoutWithDagre and graph Export disabled state
Apr 29, 2026
8c60510
docs(ui): drop non-standard Tests section from CHANGELOG
Apr 29, 2026
b3e08a6
chore(ui): exclude .expect/ from eslint scanning
Apr 30, 2026
f878f12
fix(ui): reset graph interactions and wire fullscreen finding view
Apr 30, 2026
8391db5
Merge branch 'PROWLER-1374/replace-d3-with-react-flow' into PROWLER-1…
Apr 30, 2026
5d393b2
chore(ui): remove .expect tooling artifact and eslint exclusion
Apr 30, 2026
fe26eda
Merge branch 'PROWLER-1273/react-flow-migration' into PROWLER-1375/gr…
May 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 9 additions & 20 deletions ui/actions/attack-paths/query-result.adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,27 +131,16 @@ export function adaptQueryResultToGraphData(
// Populate findings and resources based on HAS_FINDING edges
edges.forEach((edge) => {
if (edge.type === "HAS_FINDING") {
const sourceId =
typeof edge.source === "string"
? edge.source
: (edge.source as { id?: string })?.id;
const targetId =
typeof edge.target === "string"
? edge.target
: (edge.target as { id?: string })?.id;

if (sourceId && targetId) {
// Add finding to source node (resource -> finding)
const sourceNode = normalizedNodes.find((n) => n.id === sourceId);
if (sourceNode) {
sourceNode.findings.push(targetId);
}
// Add finding to source node (resource -> finding)
const sourceNode = normalizedNodes.find((n) => n.id === edge.source);
if (sourceNode) {
sourceNode.findings.push(edge.target);
}

// Add resource to target node (finding <- resource)
const targetNode = normalizedNodes.find((n) => n.id === targetId);
if (targetNode) {
targetNode.resources.push(sourceId);
}
// Add resource to target node (finding <- resource)
const targetNode = normalizedNodes.find((n) => n.id === edge.target);
if (targetNode) {
targetNode.resources.push(edge.source);
}
}
});
Expand Down
Loading