You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.tsx 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { useMemo } from 'react'
  2. import WorkflowWithDefaultContext from '@/app/components/workflow'
  3. import {
  4. WorkflowContextProvider,
  5. } from '@/app/components/workflow/context'
  6. import type { InjectWorkflowStoreSliceFn } from '@/app/components/workflow/store'
  7. import {
  8. initialEdges,
  9. initialNodes,
  10. } from '@/app/components/workflow/utils'
  11. import Loading from '@/app/components/base/loading'
  12. import { createRagPipelineSliceSlice } from './store'
  13. import RagPipelineMain from './components/rag-pipeline-main'
  14. import { usePipelineInit } from './hooks'
  15. import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
  16. import Conversion from './conversion'
  17. const RagPipeline = () => {
  18. const {
  19. data,
  20. isLoading,
  21. } = usePipelineInit()
  22. const nodesData = useMemo(() => {
  23. if (data)
  24. return initialNodes(data.graph.nodes, data.graph.edges)
  25. return []
  26. }, [data])
  27. const edgesData = useMemo(() => {
  28. if (data)
  29. return initialEdges(data.graph.edges, data.graph.nodes)
  30. return []
  31. }, [data])
  32. if (!data || isLoading) {
  33. return (
  34. <div className='relative flex h-full w-full items-center justify-center'>
  35. <Loading />
  36. </div>
  37. )
  38. }
  39. return (
  40. <WorkflowWithDefaultContext
  41. edges={edgesData}
  42. nodes={nodesData}
  43. >
  44. <RagPipelineMain
  45. edges={edgesData}
  46. nodes={nodesData}
  47. viewport={data.graph.viewport}
  48. />
  49. </WorkflowWithDefaultContext>
  50. )
  51. }
  52. const RagPipelineWrapper = () => {
  53. const pipelineId = useDatasetDetailContextWithSelector(s => s.dataset?.pipeline_id)
  54. if (!pipelineId)
  55. return <Conversion />
  56. return (
  57. <WorkflowContextProvider
  58. injectWorkflowStoreSliceFn={createRagPipelineSliceSlice as InjectWorkflowStoreSliceFn}
  59. >
  60. <RagPipeline />
  61. </WorkflowContextProvider>
  62. )
  63. }
  64. export default RagPipelineWrapper