refactor: update input variable types and initial data handling in pipeline components

pull/21398/head
twwu 1 year ago
parent 720ce79901
commit c9bf99a1e2

@ -20,6 +20,7 @@ export type ShowCondition = {
export type NumberConfiguration = { export type NumberConfiguration = {
max?: number max?: number
min?: number min?: number
unit?: string
} }
export type SelectConfiguration = { export type SelectConfiguration = {

@ -320,7 +320,7 @@ export const useHiddenConfigurations = (props: {
}, { }, {
type: InputFieldType.textInput, type: InputFieldType.textInput,
label: t('appDebug.variableConfig.tooltips'), label: t('appDebug.variableConfig.tooltips'),
variable: 'hint', variable: 'tooltips',
required: false, required: false,
showConditions: [], showConditions: [],
showOptional: true, showOptional: true,

@ -11,7 +11,7 @@ export const useInitialData = (variables: RAGPipelineVariables) => {
if (item.type === PipelineInputVarType.number) if (item.type === PipelineInputVarType.number)
initialData[item.variable] = item.default_value || 0 initialData[item.variable] = item.default_value || 0
if ([PipelineInputVarType.singleFile, PipelineInputVarType.multiFiles].includes(item.type)) if ([PipelineInputVarType.singleFile, PipelineInputVarType.multiFiles].includes(item.type))
initialData[item.variable] = item.default_value || [] initialData[item.variable] = []
if (item.type === PipelineInputVarType.checkbox) if (item.type === PipelineInputVarType.checkbox)
initialData[item.variable] = item.default_value || true initialData[item.variable] = item.default_value || true
}) })

@ -1,18 +1,19 @@
import { useMemo } from 'react' import { useMemo } from 'react'
import type { BaseConfiguration } from '@/app/components/base/form/form-scenarios/base/types'
import { BaseFieldType } from '@/app/components/base/form/form-scenarios/base/types' import { BaseFieldType } from '@/app/components/base/form/form-scenarios/base/types'
import { useStore } from '@/app/components/workflow/store' import { useStore } from '@/app/components/workflow/store'
import { useDraftPipelineProcessingParams } from '@/service/use-pipeline' import { useDraftPipelineProcessingParams } from '@/service/use-pipeline'
import { PipelineInputVarType } from '@/models/pipeline' import { PipelineInputVarType } from '@/models/pipeline'
type PartialInputVarType = PipelineInputVarType.textInput | PipelineInputVarType.number | PipelineInputVarType.select | PipelineInputVarType.checkbox const VAR_TYPE_MAP: Record<PipelineInputVarType, BaseFieldType> = {
const VAR_TYPE_MAP: Record<PartialInputVarType, BaseFieldType> = {
[PipelineInputVarType.textInput]: BaseFieldType.textInput, [PipelineInputVarType.textInput]: BaseFieldType.textInput,
[PipelineInputVarType.number]: BaseFieldType.numberInput, [PipelineInputVarType.paragraph]: BaseFieldType.textInput,
[PipelineInputVarType.select]: BaseFieldType.select, [PipelineInputVarType.select]: BaseFieldType.select,
[PipelineInputVarType.singleFile]: BaseFieldType.file,
[PipelineInputVarType.multiFiles]: BaseFieldType.fileList,
[PipelineInputVarType.number]: BaseFieldType.numberInput,
[PipelineInputVarType.checkbox]: BaseFieldType.checkbox, [PipelineInputVarType.checkbox]: BaseFieldType.checkbox,
} }
export const useConfigurations = (datasourceNodeId: string) => { export const useConfigurations = (datasourceNodeId: string) => {
const pipelineId = useStore(state => state.pipelineId) const pipelineId = useStore(state => state.pipelineId)
const { data: paramsConfig } = useDraftPipelineProcessingParams({ const { data: paramsConfig } = useDraftPipelineProcessingParams({
@ -23,23 +24,23 @@ export const useConfigurations = (datasourceNodeId: string) => {
const initialData = useMemo(() => { const initialData = useMemo(() => {
const variables = paramsConfig?.variables || [] const variables = paramsConfig?.variables || []
return variables.reduce((acc, item) => { return variables.reduce((acc, item) => {
const type = VAR_TYPE_MAP[item.type as PartialInputVarType] const type = VAR_TYPE_MAP[item.type]
if (type === BaseFieldType.textInput) if ([BaseFieldType.textInput, BaseFieldType.paragraph, BaseFieldType.select].includes(type))
acc[item.variable] = '' acc[item.variable] = item.default_value ?? ''
if (type === BaseFieldType.numberInput) if (type === BaseFieldType.numberInput)
acc[item.variable] = 0 acc[item.variable] = item.default_value ?? 0
if (type === BaseFieldType.select)
acc[item.variable] = item.options?.[0] || ''
if (type === BaseFieldType.checkbox) if (type === BaseFieldType.checkbox)
acc[item.variable] = true acc[item.variable] = true
if ([BaseFieldType.file, BaseFieldType.fileList].includes(type))
acc[item.variable] = []
return acc return acc
}, {} as Record<string, any>) }, {} as Record<string, any>)
}, [paramsConfig]) }, [paramsConfig])
const configurations = useMemo(() => { const configurations = useMemo(() => {
const variables = paramsConfig?.variables || [] const variables = paramsConfig?.variables || []
const configs = variables.map(item => ({ const configs: BaseConfiguration[] = variables.map(item => ({
type: VAR_TYPE_MAP[item.type as PartialInputVarType], type: VAR_TYPE_MAP[item.type],
variable: item.variable, variable: item.variable,
label: item.label, label: item.label,
required: item.required, required: item.required,
@ -50,6 +51,12 @@ export const useConfigurations = (datasourceNodeId: string) => {
})), })),
showConditions: [], showConditions: [],
default: item.default_value, default: item.default_value,
placeholder: item.placeholder,
tooltip: item.tooltips,
unit: item.unit,
allowedFileTypes: item.allowed_file_types,
allowedFileExtensions: item.allowed_file_extensions,
allowedFileUploadMethods: item.allowed_file_upload_methods,
})) }))
return configs return configs
}, [paramsConfig]) }, [paramsConfig])

@ -28,7 +28,7 @@ const Options = ({
if (!result.success) { if (!result.success) {
const issues = result.error.issues const issues = result.error.issues
const firstIssue = issues[0] const firstIssue = issues[0]
const errorMessage = `"${firstIssue.path.join('.')}" ${firstIssue.message}` const errorMessage = `Path: ${firstIssue.path.join('.')} Error: ${firstIssue.message}`
Toast.notify({ Toast.notify({
type: 'error', type: 'error',
message: errorMessage, message: errorMessage,

@ -30,6 +30,7 @@ export const useDatasourceOptions = () => {
const datasourceNodes = nodes.filter(node => node.data.type === BlockEnum.DataSource) const datasourceNodes = nodes.filter(node => node.data.type === BlockEnum.DataSource)
return datasourceNodes.map((node) => { return datasourceNodes.map((node) => {
let type: DataSourceType | DataSourceProvider = DataSourceType.FILE let type: DataSourceType | DataSourceProvider = DataSourceType.FILE
// todo: distinguish datasource type via provider_type field
switch (node.data.tool_name) { switch (node.data.tool_name) {
case 'file_upload': case 'file_upload':
type = DataSourceType.FILE type = DataSourceType.FILE

@ -119,6 +119,7 @@ const TestRunPanel = () => {
} }
handleRun({ handleRun({
inputs: data, inputs: data,
start_node_id: datasource.nodeId,
datasource_type, datasource_type,
datasource_info: datasourceInfo, datasource_info: datasourceInfo,
}) })

@ -98,12 +98,12 @@ export type PipelineCheckDependenciesResponse = {
} }
export enum PipelineInputVarType { export enum PipelineInputVarType {
textInput = 'textInput', textInput = 'text-input',
paragraph = 'paragraph', paragraph = 'paragraph',
select = 'select', select = 'select',
number = 'numberInput', number = 'number-input',
singleFile = 'file', singleFile = 'file',
multiFiles = 'fileList', multiFiles = 'file-list',
checkbox = 'checkbox', checkbox = 'checkbox',
} }

@ -143,6 +143,7 @@ export const useDraftPipelineProcessingParams = (params: PipelineProcessingParam
}, },
}) })
}, },
staleTime: 0,
}) })
} }

Loading…
Cancel
Save