Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
077de17c
Commit
077de17c
authored
Feb 23, 2024
by
Joel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: support config modal edit
parent
f6c07c99
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
54 additions
and
13 deletions
+54
-13
index.tsx
...nents/app/configuration/config-var/config-modal/index.tsx
+11
-6
var-item.tsx
...p/components/workflow/nodes/start/components/var-item.tsx
+26
-4
app-debug.en.ts
web/i18n/lang/app-debug.en.ts
+7
-0
app-debug.zh.ts
web/i18n/lang/app-debug.zh.ts
+10
-3
No files found.
web/app/components/app/configuration/config-var/config-modal/index.tsx
View file @
077de17c
...
...
@@ -19,10 +19,8 @@ import Switch from '@/app/components/base/switch'
export
type
IConfigModalProps
=
{
isCreate
?:
boolean
payload
?:
InputVar
type
?:
string
isShow
:
boolean
onClose
:
()
=>
void
// onConfirm: (newValue: { type: string; value: any }) => void
onConfirm
:
(
newValue
:
InputVar
)
=>
void
}
...
...
@@ -54,13 +52,20 @@ const ConfigModal: FC<IConfigModalProps> = ({
},
[])
const
handleConfirm
=
()
=>
{
if
(
!
tempPayload
.
variable
)
{
Toast
.
notify
({
type
:
'error'
,
message
:
t
(
'appDebug.variableConig.errorMsg.varNameRequired'
)
})
return
}
if
(
!
tempPayload
.
label
)
{
Toast
.
notify
({
type
:
'error'
,
message
:
t
(
'appDebug.variableConig.errorMsg.labelNameRequired'
)
})
return
}
if
(
isStringInput
)
{
onConfirm
(
tempPayload
)
// onConfirm({ type: type, value: tempMaxLength })
}
else
{
if
(
options
?.
length
===
0
)
{
Toast
.
notify
({
type
:
'error'
,
message
:
'At least one option requied'
})
Toast
.
notify
({
type
:
'error'
,
message
:
t
(
'appDebug.variableConig.errorMsg.atLeastOneOption'
)
})
return
}
const
obj
:
Record
<
string
,
boolean
>
=
{}
...
...
@@ -73,7 +78,7 @@ const ConfigModal: FC<IConfigModalProps> = ({
obj
[
o
]
=
true
})
if
(
hasRepeatedItem
)
{
Toast
.
notify
({
type
:
'error'
,
message
:
'Has repeat items'
})
Toast
.
notify
({
type
:
'error'
,
message
:
t
(
'appDebug.variableConig.errorMsg.optionRepeat'
)
})
return
}
onConfirm
(
tempPayload
)
...
...
@@ -124,7 +129,7 @@ const ConfigModal: FC<IConfigModalProps> = ({
)
}
{
type
===
InputVarType
.
select
&&
(
<
Field
title=
{
t
(
'appDebug.variableConig.options'
)
}
>
<
ConfigSelect
options=
{
options
!
}
onChange=
{
handlePayloadChange
(
'options'
)
}
/>
<
ConfigSelect
options=
{
options
||
[]
}
onChange=
{
handlePayloadChange
(
'options'
)
}
/>
</
Field
>
)
}
...
...
web/app/components/workflow/nodes/start/components/var-item.tsx
View file @
077de17c
'use client'
import
type
{
FC
}
from
'react'
import
React
,
{
useRef
}
from
'react'
import
{
useHover
}
from
'ahooks'
import
React
,
{
use
Callback
,
use
Ref
}
from
'react'
import
{
use
Boolean
,
use
Hover
}
from
'ahooks'
import
{
useTranslation
}
from
'react-i18next'
import
InputVarTypeIcon
from
'../../_base/components/input-var-type-icon'
import
type
{
InputVar
}
from
'@/app/components/workflow/types'
import
{
Variable02
}
from
'@/app/components/base/icons/src/vender/solid/development'
import
{
Edit03
}
from
'@/app/components/base/icons/src/vender/solid/general'
import
{
Trash03
}
from
'@/app/components/base/icons/src/vender/line/general'
import
ConfigVarModal
from
'@/app/components/app/configuration/config-var/config-modal'
type
Props
=
{
readonly
:
boolean
...
...
@@ -19,11 +20,22 @@ type Props = {
const
VarItem
:
FC
<
Props
>
=
({
readonly
,
payload
,
onChange
,
onRemove
,
})
=>
{
const
{
t
}
=
useTranslation
()
const
ref
=
useRef
(
null
)
const
isHovering
=
useHover
(
ref
)
const
[
isShowEditVarModal
,
{
setTrue
:
showEditVarModal
,
setFalse
:
hideEditVarModal
,
}]
=
useBoolean
(
false
)
const
handlePayloadChange
=
useCallback
((
payload
:
InputVar
)
=>
{
onChange
(
payload
)
hideEditVarModal
()
},
[
onChange
,
hideEditVarModal
])
return
(
<
div
ref=
{
ref
}
className=
'flex items-center h-8 justify-between px-2.5 bg-white rounded-lg border border-gray-200 shadow-xs cursor-pointer hover:shadow-md'
>
<
div
className=
'flex items-center space-x-1 grow w-0'
>
...
...
@@ -44,15 +56,25 @@ const VarItem: FC<Props> = ({
)
:
(
!
readonly
&&
(
<>
<
div
className=
'mr-1 p-1 rounded-md cursor-pointer hover:bg-black/5'
>
<
div
onClick=
{
showEditVarModal
}
className=
'mr-1 p-1 rounded-md cursor-pointer hover:bg-black/5'
>
<
Edit03
className=
'w-4 h-4 text-gray-500'
/>
</
div
>
<
div
className=
'p-1 rounded-md cursor-pointer hover:bg-black/5'
>
<
div
onClick=
{
onRemove
}
className=
'p-1 rounded-md cursor-pointer hover:bg-black/5'
>
<
Trash03
className=
'w-4 h-4 text-gray-500'
/>
</
div
>
</>
))
}
</
div
>
{
isShowEditVarModal
&&
(
<
ConfigVarModal
isShow
payload=
{
payload
}
onClose=
{
hideEditVarModal
}
onConfirm=
{
handlePayloadChange
}
/>
)
}
</
div
>
)
}
...
...
web/i18n/lang/app-debug.en.ts
View file @
077de17c
...
...
@@ -283,6 +283,13 @@ const translation = {
'varName'
:
'Variable Name'
,
'labelName'
:
'Label Name'
,
'required'
:
'Required'
,
'errorMsg'
:
{
varNameRequired
:
'Variable name is required'
,
labelNameRequired
:
'Label name is required'
,
varNameCanBeRepeat
:
'Variable name can not be repeated'
,
atLeastOneOption
:
'At least one option is required'
,
optionRepeat
:
'Has repeat options'
,
},
},
vision
:
{
name
:
'Vision'
,
...
...
web/i18n/lang/app-debug.zh.ts
View file @
077de17c
...
...
@@ -248,9 +248,6 @@ const translation = {
action
:
'操作'
,
typeString
:
'文本'
,
typeSelect
:
'下拉选项'
,
varName
:
'变量名称'
,
labelName
:
'显示名称'
,
required
:
'必填'
,
},
varKeyError
:
{
canNoBeEmpty
:
'变量不能为空'
,
...
...
@@ -279,6 +276,16 @@ const translation = {
'options'
:
'选项'
,
'addOption'
:
'添加选项'
,
'apiBasedVar'
:
'基于 API 的变量'
,
'varName'
:
'变量名称'
,
'labelName'
:
'显示名称'
,
'required'
:
'必填'
,
'errorMsg'
:
{
varNameRequired
:
'变量名称必填'
,
labelNameRequired
:
'显示名称必填'
,
varNameCanBeRepeat
:
'变量名称不能重复'
,
atLeastOneOption
:
'至少需要一个选项'
,
optionRepeat
:
'选项不能重复'
,
},
},
vision
:
{
name
:
'视觉'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment