Added data reload button to graph labels component
This commit is contained in:
@@ -2,14 +2,17 @@ import { useCallback, useEffect, useRef } from 'react'
|
||||
import { AsyncSelect } from '@/components/ui/AsyncSelect'
|
||||
import { useSettingsStore } from '@/stores/settings'
|
||||
import { useGraphStore } from '@/stores/graph'
|
||||
import { labelListLimit } from '@/lib/constants'
|
||||
import { labelListLimit, controlButtonVariant } from '@/lib/constants'
|
||||
import MiniSearch from 'minisearch'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { RefreshCw } from 'lucide-react'
|
||||
import Button from '@/components/ui/Button'
|
||||
|
||||
const GraphLabels = () => {
|
||||
const { t } = useTranslation()
|
||||
const label = useSettingsStore.use.queryLabel()
|
||||
const allDatabaseLabels = useGraphStore.use.allDatabaseLabels()
|
||||
const rawGraph = useGraphStore.use.rawGraph()
|
||||
const labelsLoadedRef = useRef(false)
|
||||
|
||||
// Track if a fetch is in progress to prevent multiple simultaneous fetches
|
||||
@@ -83,7 +86,29 @@ const GraphLabels = () => {
|
||||
[getSearchEngine]
|
||||
)
|
||||
|
||||
const handleRefresh = useCallback(() => {
|
||||
const currentLabel = useSettingsStore.getState().queryLabel
|
||||
|
||||
useGraphStore.getState().setGraphDataFetchAttempted(false)
|
||||
|
||||
useGraphStore.getState().reset()
|
||||
|
||||
useSettingsStore.getState().setQueryLabel(currentLabel)
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<div className="flex items-center">
|
||||
{rawGraph && (
|
||||
<Button
|
||||
size="icon"
|
||||
variant={controlButtonVariant}
|
||||
onClick={handleRefresh}
|
||||
tooltip={t('graphPanel.graphLabels.refreshTooltip')}
|
||||
className="mr-1"
|
||||
>
|
||||
<RefreshCw className="h-4 w-4" />
|
||||
</Button>
|
||||
)}
|
||||
<AsyncSelect<string>
|
||||
className="ml-2"
|
||||
triggerClassName="max-h-8"
|
||||
@@ -124,6 +149,7 @@ const GraphLabels = () => {
|
||||
}}
|
||||
clearable={false} // Prevent clearing value on reselect
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
@@ -182,7 +182,8 @@
|
||||
"noLabels": "No labels found",
|
||||
"label": "Label",
|
||||
"placeholder": "Search labels...",
|
||||
"andOthers": "And {count} others"
|
||||
"andOthers": "And {count} others",
|
||||
"refreshTooltip": "Reload graph data"
|
||||
}
|
||||
},
|
||||
"retrievePanel": {
|
||||
|
@@ -179,7 +179,8 @@
|
||||
"noLabels": "未找到标签",
|
||||
"label": "标签",
|
||||
"placeholder": "搜索标签...",
|
||||
"andOthers": "还有 {count} 个"
|
||||
"andOthers": "还有 {count} 个",
|
||||
"refreshTooltip": "重新加载图形数据"
|
||||
}
|
||||
},
|
||||
"retrievePanel": {
|
||||
|
Reference in New Issue
Block a user