mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 19:59:50 +08:00
88 lines
2.6 KiB
TypeScript
88 lines
2.6 KiB
TypeScript
import type { FC } from 'react'
|
|
import React from 'react'
|
|
import { useTranslation } from 'react-i18next'
|
|
|
|
import VarReferencePicker from '../_base/components/variable/var-reference-picker'
|
|
import OptionCard from '../_base/components/option-card'
|
|
import useConfig from './use-config'
|
|
import { WriteMode } from './types'
|
|
import type { AssignerNodeType } from './types'
|
|
import Field from '@/app/components/workflow/nodes/_base/components/field'
|
|
import { type NodePanelProps } from '@/app/components/workflow/types'
|
|
import cn from '@/utils/classnames'
|
|
|
|
const i18nPrefix = 'workflow.nodes.assigner'
|
|
|
|
const Panel: FC<NodePanelProps<AssignerNodeType>> = ({
|
|
id,
|
|
data,
|
|
}) => {
|
|
const { t } = useTranslation()
|
|
|
|
const {
|
|
readOnly,
|
|
inputs,
|
|
handleAssignedVarChanges,
|
|
isSupportAppend,
|
|
writeModeTypes,
|
|
handleWriteModeChange,
|
|
filterAssignedVar,
|
|
filterToAssignedVar,
|
|
handleToAssignedVarChange,
|
|
toAssignedVarType,
|
|
} = useConfig(id, data)
|
|
|
|
return (
|
|
<div className='mt-2'>
|
|
<div className='px-4 pb-4 space-y-4'>
|
|
<Field
|
|
title={t(`${i18nPrefix}.assignedVariable`)}
|
|
>
|
|
<VarReferencePicker
|
|
readonly={readOnly}
|
|
nodeId={id}
|
|
isShowNodeName
|
|
value={inputs.assigned_variable_selector || []}
|
|
onChange={handleAssignedVarChanges}
|
|
filterVar={filterAssignedVar}
|
|
/>
|
|
</Field>
|
|
<Field
|
|
title={t(`${i18nPrefix}.writeMode`)}
|
|
>
|
|
<div className={cn('grid gap-2 grid-cols-3')}>
|
|
{writeModeTypes.map(type => (
|
|
<OptionCard
|
|
key={type}
|
|
title={t(`${i18nPrefix}.${type}`)}
|
|
onSelect={handleWriteModeChange(type)}
|
|
selected={inputs.write_mode === type}
|
|
disabled={!isSupportAppend && type === WriteMode.Append}
|
|
tooltip={type === WriteMode.Append ? t(`${i18nPrefix}.writeModeTip`)! : undefined}
|
|
/>
|
|
))}
|
|
</div>
|
|
</Field>
|
|
{inputs.write_mode !== WriteMode.Clear && (
|
|
<Field
|
|
title={t(`${i18nPrefix}.setVariable`)}
|
|
>
|
|
<VarReferencePicker
|
|
readonly={readOnly}
|
|
nodeId={id}
|
|
isShowNodeName
|
|
value={inputs.input_variable_selector || []}
|
|
onChange={handleToAssignedVarChange}
|
|
filterVar={filterToAssignedVar}
|
|
valueTypePlaceHolder={toAssignedVarType}
|
|
/>
|
|
</Field>
|
|
)}
|
|
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default React.memo(Panel)
|