Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
bkunyun
Project
Project
Details
Activity
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
Administrator
bkunyun
Commits
2fe9ce8c
Commit
2fe9ce8c
authored
Aug 11, 2022
by
chenshouchao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 新增自定义算子交互优化 流节点展示多个输入输出
parent
d227acf4
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
76 additions
and
50 deletions
+76
-50
index.tsx
src/views/CustomOperator/components/OperatorList/index.tsx
+1
-1
index.tsx
src/views/CustomOperator/components/SaveOperator/index.tsx
+9
-2
index.tsx
src/views/CustomOperator/index.tsx
+1
-0
index.tsx
...ct/components/Flow/components/BatchOperatorFlow/index.tsx
+0
-4
index.tsx
...ews/Project/components/Flow/components/FlowNode/index.tsx
+7
-6
index.tsx
src/views/Project/components/Flow/index.tsx
+35
-25
index.tsx
src/views/WorkFlowEdit/components/OperatorList/index.tsx
+19
-11
interface.ts
src/views/WorkFlowEdit/components/OperatorList/interface.ts
+2
-0
index.tsx
src/views/WorkFlowEdit/index.tsx
+2
-1
No files found.
src/views/CustomOperator/components/OperatorList/index.tsx
View file @
2fe9ce8c
...
...
@@ -113,7 +113,7 @@ const OperatorList = (props: IProps) => {
productId
:
productId
as
string
,
keyword
,
page
,
size
:
5
,
size
:
20
,
});
// size: 20 todo
},
...
...
src/views/CustomOperator/components/SaveOperator/index.tsx
View file @
2fe9ce8c
...
...
@@ -16,9 +16,15 @@ interface IProps {
saveFormDialog
:
boolean
;
setSaveFormDialog
:
(
val
:
boolean
)
=>
void
;
operatorList
:
ITask
[];
setShowCustomOperator
:
any
;
}
const
SaveOperator
=
(
props
:
IProps
)
=>
{
const
{
saveFormDialog
,
setSaveFormDialog
,
operatorList
}
=
props
;
const
{
saveFormDialog
,
setSaveFormDialog
,
operatorList
,
setShowCustomOperator
,
}
=
props
;
const
{
currentProjectStore
}
=
useStores
();
const
Message
=
useMessage
();
const
productId
=
toJS
(
currentProjectStore
.
currentProductInfo
.
id
);
...
...
@@ -30,8 +36,9 @@ const SaveOperator = (props: IProps) => {
const
{
run
:
saveBatchActorRun
}
=
useMyRequest
(
saveBatchActor
,
{
onSuccess
:
(
res
)
=>
{
Message
.
success
(
"保存算子成功"
);
setSaveFormDialog
(
false
);
sessionStorage
.
setItem
(
"operatorList"
,
"[]"
);
setSaveFormDialog
(
false
);
setShowCustomOperator
();
console
.
log
(
"res"
,
res
);
},
});
...
...
src/views/CustomOperator/index.tsx
View file @
2fe9ce8c
...
...
@@ -168,6 +168,7 @@ const CustomOperator = observer((props: IProps) => {
saveFormDialog=
{
saveFormDialog
}
setSaveFormDialog=
{
setSaveFormDialog
}
operatorList=
{
operatorList
}
setShowCustomOperator=
{
setShowCustomOperator
}
></
SaveOperator
>
</
div
>
<
div
className=
{
styles
.
coContent
}
id=
"customOperatorFlow"
>
...
...
src/views/Project/components/Flow/components/BatchOperatorFlow/index.tsx
View file @
2fe9ce8c
...
...
@@ -90,7 +90,6 @@ const BatchOperatorFlow = (props: IProps) => {
/** 删除流节点或者线 */
const
deleteSelectFlowNode
=
useCallback
(
(
e
:
any
)
=>
{
console
.
log
(
tasks
);
if
(
e
.
keyCode
===
8
&&
ListenState
)
{
/** 删除流节点逻辑 */
if
(
inSideFlowNodeId
)
{
...
...
@@ -216,7 +215,6 @@ const BatchOperatorFlow = (props: IProps) => {
const
onNodeClick
=
(
e
:
any
,
node
:
Node
)
=>
{
tasks
?.
forEach
((
item
)
=>
{
if
(
item
.
id
===
node
.
id
)
{
console
.
log
(
"setInSideFlowNodeId"
,
node
.
id
);
setInSideFlowNodeId
(
node
.
id
);
}
});
...
...
@@ -362,8 +360,6 @@ const BatchOperatorFlow = (props: IProps) => {
/** 点击连线 */
const
onEdgeClick
=
useCallback
((
e
:
any
,
val
:
Edge
)
=>
{
console
.
log
(
e
);
console
.
log
(
val
);
setSelectedEdge
(
val
);
/** 点击连线清除选中的node ID */
setInSideFlowNodeId
(
""
);
...
...
src/views/Project/components/Flow/components/FlowNode/index.tsx
View file @
2fe9ce8c
...
...
@@ -68,6 +68,7 @@ const FlowNode = (props: any) => {
[]
);
},
[
parameters
]);
return
(
<
div
style=
{
flowNodeStyle
}
...
...
@@ -76,14 +77,14 @@ const FlowNode = (props: any) => {
[
styles
.
selectedFlowBox
]:
selectedStatus
,
})
}
>
{
dotStatus
?.
isInput
?
(
{
/* {
dotStatus?.isInput ? (
<Handle
className={styles.handleBox}
style={inStyle}
type="target"
position={Position.Top}
/>
)
:
null
}
) : null}
*/
}
{
inParamsArr
?.
length
?
inParamsArr
.
map
((
item
:
any
,
index
:
number
)
=>
{
return
(
...
...
@@ -94,8 +95,8 @@ const FlowNode = (props: any) => {
style=
{
{
background
:
"#fff "
,
border
:
"1px solid #D1D6DE"
,
left
:
index
*
24
+
20
,
...
inStyle
,
left
:
index
*
24
+
16
,
}
}
type=
"target"
position=
{
Position
.
Top
}
...
...
@@ -120,14 +121,14 @@ const FlowNode = (props: any) => {
/>
)
}
</
div
>
{
dotStatus
?.
isOutput
?
(
{
/* {
dotStatus?.isOutput ? (
<Handle
className={styles.handleBox}
style={outStyle}
type="source"
position={Position.Bottom}
/>
)
:
null
}
) : null}
*/
}
{
outParamsArr
?.
length
?
outParamsArr
.
map
((
item
:
any
,
index
:
number
)
=>
{
return
(
...
...
@@ -138,8 +139,8 @@ const FlowNode = (props: any) => {
style=
{
{
background
:
"#fff "
,
border
:
"1px solid #D1D6DE"
,
left
:
index
*
24
+
20
,
...
outStyle
,
left
:
index
*
24
+
16
,
}
}
type=
"source"
position=
{
Position
.
Bottom
}
...
...
src/views/Project/components/Flow/index.tsx
View file @
2fe9ce8c
...
...
@@ -145,9 +145,12 @@ const Flow = (props: IProps) => {
[];
// 删除节点时同时删除相关的线
newVal
?.
forEach
((
task
)
=>
{
task
.
edges
=
task
.
edges
.
filter
(
(
edge
)
=>
edge
.
target
!==
inSideBatchNodeId
);
task
.
edges
=
(
task
?.
edges
?.
length
&&
task
.
edges
.
filter
(
(
edge
)
=>
edge
.
target
!==
inSideBatchNodeId
))
||
[];
});
setTasks
&&
setTasks
(
newVal
);
}
...
...
@@ -157,7 +160,14 @@ const Flow = (props: IProps) => {
}
}
},
[
inSideBatchNodeId
,
selectedEdge
,
setTasks
,
tasks
,
tasksDeleteLine
]
[
inSideBatchNodeId
,
selectedEdge
,
setTasks
,
tasks
,
tasksDeleteLine
,
ListenState
,
]
);
/** 监听鼠标按下事件 */
...
...
@@ -169,25 +179,25 @@ const Flow = (props: IProps) => {
},
[
deleteSelectBatchNode
]);
/** 获取是否有输入节点或者是否有输出节点 */
const
nodesInputAndOutputStatus
=
useCallback
(
(
id
:
string
)
=>
{
/** 所有的连线 */
const
lineArr
:
IEdge
[]
=
[];
tasks
?.
length
&&
tasks
.
forEach
((
item
)
=>
{
item
.
edges
?.
length
&&
lineArr
.
push
(...
item
.
edges
);
});
/** 所有的输入节点ID */
const
isInput
=
lineArr
?.
some
((
item
)
=>
item
.
target
===
id
);
/** 所有的输出节点ID */
const
isOutput
=
lineArr
?.
some
((
item
)
=>
item
.
source
===
id
);
return
{
isInput
,
isOutput
,
};
},
[
tasks
]
);
//
const nodesInputAndOutputStatus = useCallback(
//
(id: string) => {
//
/** 所有的连线 */
//
const lineArr: IEdge[] = [];
//
tasks?.length &&
//
tasks.forEach((item) => {
//
item.edges?.length && lineArr.push(...item.edges);
//
});
//
/** 所有的输入节点ID */
//
const isInput = lineArr?.some((item) => item.target === id);
//
/** 所有的输出节点ID */
//
const isOutput = lineArr?.some((item) => item.source === id);
//
return {
//
isInput,
//
isOutput,
//
};
//
},
//
[tasks]
//
);
/** 获取是否有流节点 */
const
isFlowNode
=
useCallback
(
...
...
@@ -264,7 +274,7 @@ const Flow = (props: IProps) => {
}
:
{
selectedStatus
:
inSideFlowNodeId
===
item
.
id
}),
/** 输入输出圆点状态 */
dotStatus
:
nodesInputAndOutputStatus
(
item
.
id
),
//
dotStatus: nodesInputAndOutputStatus(item.id),
/** 样式 */
style
:
{
...
...
@@ -296,7 +306,7 @@ const Flow = (props: IProps) => {
selectedBatchNodeId
,
inSideBatchNodeId
,
inSideFlowNodeId
,
nodesInputAndOutputStatus
,
//
nodesInputAndOutputStatus,
getBatchStyle
,
]);
...
...
src/views/WorkFlowEdit/components/OperatorList/index.tsx
View file @
2fe9ce8c
...
...
@@ -156,7 +156,8 @@ const OperatorItem = (props: IOperatorItemProps) => {
const
OperatorList
=
observer
((
props
:
IOperatorListProps
)
=>
{
const
{
currentProjectStore
}
=
useStores
();
const
productId
=
toJS
(
currentProjectStore
.
currentProductInfo
.
id
);
const
{
templateConfigInfo
,
setTemplateConfigInfo
}
=
props
;
const
{
templateConfigInfo
,
setTemplateConfigInfo
,
showCustomOperator
}
=
props
;
const
[
operatorListData
,
setOperatorListData
]
=
useState
<
ITask
[]
>
([]);
const
[
keyword
,
setKeyword
]
=
useState
<
string
>
(
""
);
...
...
@@ -168,22 +169,29 @@ const OperatorList = observer((props: IOperatorListProps) => {
});
useEffect
(()
=>
{
run
({
owner
:
"root"
,
productId
:
"cadd"
||
""
,
});
},
[
productId
,
run
]);
if
(
!
showCustomOperator
)
{
run
({
owner
:
"root"
,
productId
:
productId
as
string
,
});
}
},
[
productId
,
run
,
showCustomOperator
]);
/** 处理回车键 */
const
handleEnterCode
=
(
e
:
React
.
KeyboardEvent
<
HTMLInputElement
>
)
=>
{
if
(
e
.
keyCode
===
13
)
{
run
({
owner
:
"root"
,
productId
:
"cadd"
||
""
,
keyword
,
});
getOperatorList
();
}
};
const
getOperatorList
=
useCallback
(()
=>
{
run
({
owner
:
"root"
,
productId
:
productId
as
string
,
keyword
,
});
},
[
run
,
keyword
,
productId
]);
return
(
<
div
className=
{
styles
.
operatorListBox
}
>
<
div
className=
{
styles
.
searchBox
}
>
...
...
src/views/WorkFlowEdit/components/OperatorList/interface.ts
View file @
2fe9ce8c
...
...
@@ -19,4 +19,5 @@ export interface IOperatorItemProps {
export
interface
IOperatorListProps
{
templateConfigInfo
:
ITask
[]
setTemplateConfigInfo
:
(
val
:
ITask
[])
=>
void
showCustomOperator
:
boolean
}
\ No newline at end of file
src/views/WorkFlowEdit/index.tsx
View file @
2fe9ce8c
...
...
@@ -218,6 +218,7 @@ const WorkFlowEdit = observer((props: IProps) => {
</
div
>
{
leftContentType
===
"list"
&&
(
<
OperatorList
showCustomOperator=
{
showCustomOperator
}
templateConfigInfo=
{
templateConfigInfo
}
setTemplateConfigInfo=
{
setTemplateConfigInfo
}
/>
...
...
@@ -242,7 +243,7 @@ const WorkFlowEdit = observer((props: IProps) => {
setTasks=
{
setTemplateConfigInfo
}
type=
"edit"
onFlowNodeClick=
{
handleNodeClick
}
ListenState=
{
!
saveFormDialog
}
ListenState=
{
!
saveFormDialog
&&
!
showCustomOperator
}
/>
</
div
>
</
div
>
...
...
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