From bee3b1da046d891465cbd7effc6dd01c22670541 Mon Sep 17 00:00:00 2001 From: Rizumu Ayaka Date: Fri, 31 Oct 2025 19:47:46 +0900 Subject: [PATCH] feat: graph pathfinding --- .../src/components/graph/GraphDrawer.vue | 155 +++++++-- .../src/components/graph/GraphNavbar.vue | 43 ++- .../__test__/graph-pathfinding.test.ts | 315 ++++++++++++++++++ packages/client/src/composables/graph.ts | 210 +++++++++++- packages/client/src/pages/graph.vue | 4 +- packages/playground/basic/src/pages/Home.vue | 9 + 6 files changed, 689 insertions(+), 47 deletions(-) create mode 100644 packages/client/src/composables/__test__/graph-pathfinding.test.ts diff --git a/packages/client/src/components/graph/GraphDrawer.vue b/packages/client/src/components/graph/GraphDrawer.vue index efaf74895..d92ef2a40 100644 --- a/packages/client/src/components/graph/GraphDrawer.vue +++ b/packages/client/src/components/graph/GraphDrawer.vue @@ -38,6 +38,17 @@ const keys = [ ['refs', 'references'], ['deps', 'dependencies'], ] as const + +// Pathfinding mode +const pathfindingMode = graphPathfindingMode +const pathfindingResults = graphPathfindingResults +const pathfindingStart = graphPathfindingStart +const pathfindingEnd = graphPathfindingEnd + +function handleFilterToThisModule() { + filterId.value = data.value!.path + pathfindingMode.value = false +} diff --git a/packages/client/src/components/graph/GraphNavbar.vue b/packages/client/src/components/graph/GraphNavbar.vue index 5cb9908e4..05554a824 100644 --- a/packages/client/src/components/graph/GraphNavbar.vue +++ b/packages/client/src/components/graph/GraphNavbar.vue @@ -12,17 +12,56 @@ const selectableItems = [ ] as const const filterId = graphFilterNodeId + +// Pathfinding mode +const pathfindingMode = graphPathfindingMode +const pathfindingStart = graphPathfindingStart +const pathfindingEnd = graphPathfindingEnd + +function togglePathfindingMode() { + pathfindingMode.value = !pathfindingMode.value + if (!pathfindingStart.value && text.value) { + pathfindingStart.value = text.value + } +} + +function swapStartAndEnd() { + const start = pathfindingStart.value + pathfindingStart.value = pathfindingEnd.value + pathfindingEnd.value = start +}