Limit the search scope to labels in the current subgraph

- Decouple datasource label selection from the search input field
- Improve label selection handling logic
This commit is contained in:
yangdx
2025-03-13 00:20:53 +08:00
parent fa1e7b13a1
commit 727b137506
3 changed files with 45 additions and 24 deletions

View File

@@ -1,6 +1,7 @@
import { create } from 'zustand'
import { createSelectors } from '@/lib/utils'
import { DirectedGraph } from 'graphology'
import { getGraphLabels } from '@/api/lightrag'
export type RawNodeType = {
id: string
@@ -66,6 +67,7 @@ interface GraphState {
rawGraph: RawGraph | null
sigmaGraph: DirectedGraph | null
graphLabels: string[]
allDatabaseLabels: string[]
moveToSelectedNode: boolean
isFetching: boolean
@@ -82,6 +84,8 @@ interface GraphState {
setRawGraph: (rawGraph: RawGraph | null) => void
setSigmaGraph: (sigmaGraph: DirectedGraph | null) => void
setGraphLabels: (labels: string[]) => void
setAllDatabaseLabels: (labels: string[]) => void
fetchAllDatabaseLabels: () => Promise<void>
setIsFetching: (isFetching: boolean) => void
}
@@ -97,6 +101,7 @@ const useGraphStoreBase = create<GraphState>()((set) => ({
rawGraph: null,
sigmaGraph: null,
graphLabels: ['*'],
allDatabaseLabels: ['*'],
setIsFetching: (isFetching: boolean) => set({ isFetching }),
setSelectedNode: (nodeId: string | null, moveToSelectedNode?: boolean) =>
@@ -132,6 +137,18 @@ const useGraphStoreBase = create<GraphState>()((set) => ({
setGraphLabels: (labels: string[]) => set({ graphLabels: labels }),
setAllDatabaseLabels: (labels: string[]) => set({ allDatabaseLabels: labels }),
fetchAllDatabaseLabels: async () => {
try {
const labels = await getGraphLabels();
set({ allDatabaseLabels: ['*', ...labels] });
} catch (error) {
console.error('Failed to fetch all database labels:', error);
set({ allDatabaseLabels: ['*'] });
}
},
setMoveToSelectedNode: (moveToSelectedNode?: boolean) => set({ moveToSelectedNode })
}))