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.

hooks.ts 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { useMemo } from 'react'
  2. import { BaseFieldType } from '@/app/components/base/form/form-scenarios/base/types'
  3. import { usePublishedPipelineProcessingParams } from '@/service/use-pipeline'
  4. import { VAR_TYPE_MAP } from '@/models/pipeline'
  5. import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
  6. export const useConfigurations = (datasourceNodeId: string) => {
  7. const pipelineId = useDatasetDetailContextWithSelector(state => state.dataset?.pipeline_id)
  8. const { data: paramsConfig, isFetching: isFetchingParams } = usePublishedPipelineProcessingParams({
  9. pipeline_id: pipelineId!,
  10. node_id: datasourceNodeId,
  11. })
  12. const initialData = useMemo(() => {
  13. const variables = paramsConfig?.variables || []
  14. return variables.reduce((acc, item) => {
  15. const type = VAR_TYPE_MAP[item.type]
  16. if ([BaseFieldType.textInput, BaseFieldType.paragraph, BaseFieldType.select].includes(type))
  17. acc[item.variable] = item.default_value ?? ''
  18. if (type === BaseFieldType.numberInput)
  19. acc[item.variable] = item.default_value ?? 0
  20. if (type === BaseFieldType.checkbox)
  21. acc[item.variable] = true
  22. if ([BaseFieldType.file, BaseFieldType.fileList].includes(type))
  23. acc[item.variable] = []
  24. return acc
  25. }, {} as Record<string, any>)
  26. }, [paramsConfig])
  27. const configurations = useMemo(() => {
  28. const variables = paramsConfig?.variables || []
  29. const configs = variables.map(item => ({
  30. type: VAR_TYPE_MAP[item.type],
  31. variable: item.variable,
  32. label: item.label,
  33. required: item.required,
  34. maxLength: item.max_length,
  35. options: item.options?.map(option => ({
  36. label: option,
  37. value: option,
  38. })),
  39. showConditions: [],
  40. placeholder: item.placeholder,
  41. tooltip: item.tooltips,
  42. unit: item.unit,
  43. allowedFileTypes: item.allowed_file_types,
  44. allowedFileExtensions: item.allowed_file_extensions,
  45. allowedFileUploadMethods: item.allowed_file_upload_methods,
  46. }))
  47. return configs
  48. }, [paramsConfig])
  49. return {
  50. isFetchingParams,
  51. initialData,
  52. configurations,
  53. }
  54. }