95 lines
2.9 KiB
TypeScript
95 lines
2.9 KiB
TypeScript
import { useEffect } from 'react'
|
|
|
|
type AsyncAction = () => Promise<unknown>
|
|
type ProjectAction = (projectId: string) => Promise<unknown>
|
|
|
|
interface WorkbenchBootstrapOptions {
|
|
restrictedMode?: boolean
|
|
selectedProjectId: string | null
|
|
selectedDetectionRunId: string
|
|
detectionClassFilter: string
|
|
detectionMinConfidenceFilter: number
|
|
selectedSegmentationRunId: string
|
|
segmentationClassFilter: string
|
|
segmentationMinConfidenceFilter: number
|
|
loadProjects: AsyncAction
|
|
loadCapabilities: AsyncAction
|
|
loadDetectionModels: AsyncAction
|
|
loadSegmentationModels: AsyncAction
|
|
loadProjectData: ProjectAction
|
|
loadDetectionRuns: ProjectAction
|
|
loadSegmentationRuns: ProjectAction
|
|
loadQualityChecks: ProjectAction
|
|
loadExports: ProjectAction
|
|
loadDetectionResults: AsyncAction
|
|
loadSegmentationResults: AsyncAction
|
|
resetProjectData: () => void
|
|
resetDatasetForProject: () => void
|
|
resetDetectionForProject: () => void
|
|
resetSegmentationForProject: () => void
|
|
resetExportsForProject: () => void
|
|
}
|
|
|
|
export function useWorkbenchBootstrap({
|
|
restrictedMode = false,
|
|
selectedProjectId,
|
|
selectedDetectionRunId,
|
|
detectionClassFilter,
|
|
detectionMinConfidenceFilter,
|
|
selectedSegmentationRunId,
|
|
segmentationClassFilter,
|
|
segmentationMinConfidenceFilter,
|
|
loadProjects,
|
|
loadCapabilities,
|
|
loadDetectionModels,
|
|
loadSegmentationModels,
|
|
loadProjectData,
|
|
loadDetectionRuns,
|
|
loadSegmentationRuns,
|
|
loadQualityChecks,
|
|
loadExports,
|
|
loadDetectionResults,
|
|
loadSegmentationResults,
|
|
resetProjectData,
|
|
resetDatasetForProject,
|
|
resetDetectionForProject,
|
|
resetSegmentationForProject,
|
|
resetExportsForProject,
|
|
}: WorkbenchBootstrapOptions): void {
|
|
useEffect(() => {
|
|
loadProjects().catch(() => null)
|
|
loadCapabilities().catch(() => null)
|
|
loadDetectionModels().catch(() => null)
|
|
loadSegmentationModels().catch(() => null)
|
|
}, [restrictedMode])
|
|
|
|
useEffect(() => {
|
|
if (!selectedProjectId) {
|
|
resetProjectData()
|
|
resetDatasetForProject()
|
|
resetDetectionForProject()
|
|
resetSegmentationForProject()
|
|
resetExportsForProject()
|
|
return
|
|
}
|
|
resetProjectData()
|
|
resetDatasetForProject()
|
|
resetDetectionForProject()
|
|
resetSegmentationForProject()
|
|
resetExportsForProject()
|
|
loadProjectData(selectedProjectId).catch(() => null)
|
|
loadQualityChecks(selectedProjectId).catch(() => null)
|
|
loadDetectionRuns(selectedProjectId).catch(() => null)
|
|
loadSegmentationRuns(selectedProjectId).catch(() => null)
|
|
loadExports(selectedProjectId).catch(() => null)
|
|
}, [restrictedMode, selectedProjectId])
|
|
|
|
useEffect(() => {
|
|
loadDetectionResults().catch(() => null)
|
|
}, [restrictedMode, selectedDetectionRunId, detectionClassFilter, detectionMinConfidenceFilter])
|
|
|
|
useEffect(() => {
|
|
loadSegmentationResults().catch(() => null)
|
|
}, [restrictedMode, selectedSegmentationRunId, segmentationClassFilter, segmentationMinConfidenceFilter])
|
|
}
|