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
c3e98d12
Commit
c3e98d12
authored
Sep 01, 2022
by
wuyongsheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 任务详情定时请求时间修改
parent
c7f631b9
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
96 additions
and
66 deletions
+96
-66
index.tsx
src/views/Project/ProjectJobDetail/index.tsx
+79
-60
index.tsx
src/views/Project/ProjectWorkbench/index.tsx
+13
-4
index.tsx
src/views/WorkFlowEdit/components/OperatorList/index.tsx
+4
-2
No files found.
src/views/Project/ProjectJobDetail/index.tsx
View file @
c3e98d12
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com
* @Date: 2022-06-21 20:03:56
* @Date: 2022-06-21 20:03:56
* @LastEditors: 吴永生 15770852798@163.com
* @LastEditors: 吴永生 15770852798@163.com
* @LastEditTime: 2022-0
8-23 19:27:18
* @LastEditTime: 2022-0
9-01 09:39:20
* @FilePath: /bkunyun/src/views/Project/ProjectSubmitWork/index.tsx
* @FilePath: /bkunyun/src/views/Project/ProjectSubmitWork/index.tsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
*/
...
@@ -39,15 +39,20 @@ import { useMessage } from "@/components/MySnackbar";
...
@@ -39,15 +39,20 @@ import { useMessage } from "@/components/MySnackbar";
import
MyPopconfirm
from
"@/components/mui/MyPopconfirm"
;
import
MyPopconfirm
from
"@/components/mui/MyPopconfirm"
;
import
SeeDataset
from
"../ProjectData/SeeDataset"
;
import
SeeDataset
from
"../ProjectData/SeeDataset"
;
import
{
getToken
,
storageUnitFromB
}
from
"@/utils/util"
;
import
{
getToken
,
storageUnitFromB
}
from
"@/utils/util"
;
import
LogView
from
"./LogView"
import
LogView
from
"./LogView"
;
import
usePass
from
"@/hooks/usePass"
;
import
usePass
from
"@/hooks/usePass"
;
import
{
IFlowNodeTransmissionNum
}
from
"./interface"
;
import
{
IFlowNodeTransmissionNum
}
from
"./interface"
;
import
{
getConnectionArr
,
getDatasetName
,
getDatasetPath
,
getSameBatch
}
from
"./utils"
;
import
{
getConnectionArr
,
getDatasetName
,
getDatasetPath
,
getSameBatch
,
}
from
"./utils"
;
import
styles
from
"./index.module.css"
;
import
styles
from
"./index.module.css"
;
const
stateMap
=
{
const
stateMap
=
{
SUBMITTED
:
"正在启动"
,
SUBMITTED
:
"正在启动"
,
RUNNING
:
"正在运行"
,
RUNNING
:
"正在运行"
,
ABORTED
:
"运行终止"
,
ABORTED
:
"运行终止"
,
FAILED
:
"运行失败"
,
FAILED
:
"运行失败"
,
...
@@ -85,7 +90,7 @@ const ProjectSubmitWork = observer(() => {
...
@@ -85,7 +90,7 @@ const ProjectSubmitWork = observer(() => {
// 查看日志弹框显示
// 查看日志弹框显示
const
[
showLogView
,
setShowLogView
]
=
useState
<
boolean
>
(
false
);
const
[
showLogView
,
setShowLogView
]
=
useState
<
boolean
>
(
false
);
// 日志信息
// 日志信息
const
[
logs
,
setLogs
]
=
useState
<
Array
<
any
>>
([])
const
[
logs
,
setLogs
]
=
useState
<
Array
<
any
>>
([])
;
const
{
name
,
state
}
=
workFlowJobInfo
||
{};
const
{
name
,
state
}
=
workFlowJobInfo
||
{};
// 查看数据集(数据集详情)显示控制
// 查看数据集(数据集详情)显示控制
...
@@ -97,68 +102,79 @@ const ProjectSubmitWork = observer(() => {
...
@@ -97,68 +102,79 @@ const ProjectSubmitWork = observer(() => {
/** 获取模版数据 */
/** 获取模版数据 */
const
{
run
}
=
useMyRequest
(
fetchWorkFlowJob
,
{
const
{
run
}
=
useMyRequest
(
fetchWorkFlowJob
,
{
pollingInterval
:
1000
*
6
0
,
pollingInterval
:
1000
*
2
0
,
pollingWhenHidden
:
false
,
pollingWhenHidden
:
false
,
onSuccess
:
(
res
:
IResponse
<
ITaskInfo
>
)
=>
{
onSuccess
:
(
res
:
IResponse
<
ITaskInfo
>
)
=>
{
getOutouts
(
res
.
data
.
outputs
);
getOutouts
(
res
.
data
.
outputs
);
getLogs
(
res
.
data
);
getLogs
(
res
.
data
);
setWorkFlowJobInfo
(
res
.
data
);
setWorkFlowJobInfo
(
res
.
data
);
const
newWorkflowId
=
locationInfo
?.
taskId
?.
replaceAll
(
'-'
,
''
)
const
newWorkflowId
=
locationInfo
?.
taskId
?.
replaceAll
(
"-"
,
""
);
getFlowNumber
({
projectId
,
workflowId
:
newWorkflowId
,
filetoken
:
fileToken
,
token
:
getToken
()})
getFlowNumber
({
projectId
,
workflowId
:
newWorkflowId
,
filetoken
:
fileToken
,
token
:
getToken
(),
});
},
},
});
});
// 处理日志数据
// 处理日志数据
const
getLogs
=
(
data
:
any
)
=>
{
const
getLogs
=
(
data
:
any
)
=>
{
let
logs
=
[{
logName
:
"workflow.log"
,
logPath
:
data
.
logPath
}]
let
logs
=
[{
logName
:
"workflow.log"
,
logPath
:
data
.
logPath
}]
;
data
.
tasks
.
forEach
((
i
:
any
)
=>
{
data
.
tasks
.
forEach
((
i
:
any
)
=>
{
if
(
i
.
outLog
)
{
if
(
i
.
outLog
)
{
logs
.
push
({
logName
:
`
${
i
.
title
}
.log`
,
logPath
:
i
.
outLog
})
logs
.
push
({
logName
:
`
${
i
.
title
}
.log`
,
logPath
:
i
.
outLog
})
;
}
}
});
});
setLogs
(
logs
)
setLogs
(
logs
)
;
}
}
;
/** 更新流节点传输数据 */
/** 更新流节点传输数据 */
const
updateFlowNodeEdgeLabel
=
useCallback
((
flowNodeInfo
:
IFlowNodeTransmissionNum
[])
=>
{
const
updateFlowNodeEdgeLabel
=
useCallback
(
const
newTasks
=
workFlowJobInfo
&&
workFlowJobInfo
?.
tasks
?.
length
&&
workFlowJobInfo
?.
tasks
.
map
(
item
=>
{
(
flowNodeInfo
:
IFlowNodeTransmissionNum
[])
=>
{
if
(
getSameBatch
(
flowNodeInfo
,
item
)){
const
newTasks
=
const
newEdges
=
item
?.
edges
?.
length
&&
item
.
edges
.
map
(
edgeItem
=>
{
workFlowJobInfo
&&
const
connectionArr
=
getConnectionArr
(
flowNodeInfo
,
edgeItem
)
workFlowJobInfo
?.
tasks
?.
length
&&
if
(
connectionArr
?.
length
){
workFlowJobInfo
?.
tasks
.
map
((
item
)
=>
{
if
(
getSameBatch
(
flowNodeInfo
,
item
))
{
const
newEdges
=
item
?.
edges
?.
length
&&
item
.
edges
.
map
((
edgeItem
)
=>
{
const
connectionArr
=
getConnectionArr
(
flowNodeInfo
,
edgeItem
);
if
(
connectionArr
?.
length
)
{
return
{
...
edgeItem
,
label
:
String
(
connectionArr
[
0
]?.
value
),
};
}
else
{
return
edgeItem
;
}
});
return
{
return
{
...
edgeI
tem
,
...
i
tem
,
label
:
String
(
connectionArr
[
0
]?.
value
)
edges
:
newEdges
||
[],
}
}
;
}
else
{
}
else
{
return
edgeItem
return
item
;
}
}
})
});
return
{
if
(
workFlowJobInfo
)
{
...
item
,
setWorkFlowJobInfo
({
edges
:
newEdges
||
[],
...
workFlowJobInfo
,
}
tasks
:
newTasks
||
[],
}
else
{
});
return
item
}
}
})
},
if
(
workFlowJobInfo
)
{
[
workFlowJobInfo
]
setWorkFlowJobInfo
({
);
...
workFlowJobInfo
,
tasks
:
newTasks
||
[]
})
}
},[
workFlowJobInfo
])
/** 获取流节点数据 */
/** 获取流节点数据 */
const
{
run
:
getFlowNumber
}
=
useMyRequest
(
fetchFlowOutputNumber
,
{
const
{
run
:
getFlowNumber
}
=
useMyRequest
(
fetchFlowOutputNumber
,
{
pollingInterval
:
1000
*
20
,
pollingInterval
:
1000
*
20
,
pollingWhenHidden
:
false
,
pollingWhenHidden
:
false
,
onSuccess
:
(
res
:
IResponse
<
IFlowNodeTransmissionNum
[]
>
)
=>
{
onSuccess
:
(
res
:
IResponse
<
IFlowNodeTransmissionNum
[]
>
)
=>
{
if
(
res
?.
data
?.
length
)
{
if
(
res
?.
data
?.
length
)
{
updateFlowNodeEdgeLabel
(
res
.
data
)
updateFlowNodeEdgeLabel
(
res
.
data
)
;
}
}
},
},
});
});
...
@@ -291,8 +307,9 @@ const ProjectSubmitWork = observer(() => {
...
@@ -291,8 +307,9 @@ const ProjectSubmitWork = observer(() => {
if
(
Array
.
isArray
(
res
.
data
))
{
if
(
Array
.
isArray
(
res
.
data
))
{
res
.
data
.
forEach
((
item1
)
=>
{
res
.
data
.
forEach
((
item1
)
=>
{
if
(
item1
.
name
===
item
.
path
.
slice
(
item
.
path
.
lastIndexOf
(
"/"
)
+
1
))
{
if
(
item1
.
name
===
item
.
path
.
slice
(
item
.
path
.
lastIndexOf
(
"/"
)
+
1
))
{
randerOutputs
[
index
].
size
=
`
${
item1
.
size
?
storageUnitFromB
(
Number
(
item1
.
size
))
:
"-"
randerOutputs
[
index
].
size
=
`
${
}
`
;
item1
.
size
?
storageUnitFromB
(
Number
(
item1
.
size
))
:
"-"
}
`
;
setRanderOutputs
([...
randerOutputs
]);
setRanderOutputs
([...
randerOutputs
]);
}
}
});
});
...
@@ -349,7 +366,7 @@ const ProjectSubmitWork = observer(() => {
...
@@ -349,7 +366,7 @@ const ProjectSubmitWork = observer(() => {
setOverviewActive
(
false
);
setOverviewActive
(
false
);
setShowOptions
(
!
showOptions
);
setShowOptions
(
!
showOptions
);
};
};
/** 终止任务 */
/** 终止任务 */
const
onStopJob
=
useCallback
(()
=>
{
const
onStopJob
=
useCallback
(()
=>
{
cancelWorkJob
({
cancelWorkJob
({
...
@@ -365,7 +382,7 @@ const ProjectSubmitWork = observer(() => {
...
@@ -365,7 +382,7 @@ const ProjectSubmitWork = observer(() => {
},
[
deleteWorkJob
,
workFlowJobInfo
?.
id
]);
},
[
deleteWorkJob
,
workFlowJobInfo
?.
id
]);
const
returnPermission
=
useMemo
(()
=>
{
const
returnPermission
=
useMemo
(()
=>
{
if
([
'SUBMITTED'
,
'RUNNING'
].
includes
(
state
||
''
))
{
if
([
"SUBMITTED"
,
"RUNNING"
].
includes
(
state
||
""
))
{
return
isPass
(
"PROJECT_WORKBENCH_JOBS_STOP"
,
"USER"
);
return
isPass
(
"PROJECT_WORKBENCH_JOBS_STOP"
,
"USER"
);
}
else
{
}
else
{
return
isPass
(
"PROJECT_WORKBENCH_JOBS_DELETE"
,
"MANAGER"
);
return
isPass
(
"PROJECT_WORKBENCH_JOBS_DELETE"
,
"MANAGER"
);
...
@@ -397,8 +414,8 @@ const ProjectSubmitWork = observer(() => {
...
@@ -397,8 +414,8 @@ const ProjectSubmitWork = observer(() => {
};
};
const
handleClose
=
()
=>
{
const
handleClose
=
()
=>
{
setShowLogView
(
false
)
setShowLogView
(
false
)
;
}
}
;
return
(
return
(
<
div
className=
{
styles
.
swBox
}
>
<
div
className=
{
styles
.
swBox
}
>
...
@@ -436,18 +453,22 @@ const ProjectSubmitWork = observer(() => {
...
@@ -436,18 +453,22 @@ const ProjectSubmitWork = observer(() => {
}}
}}
> */
}
> */
}
<
MyButton
<
MyButton
text=
{
[
'SUBMITTED'
,
'RUNNING'
].
includes
(
state
||
''
)
?
"终止"
:
"删除"
}
text=
{
[
"SUBMITTED"
,
"RUNNING"
].
includes
(
state
||
""
)
?
"终止"
:
"删除"
}
variant=
"outlined"
variant=
"outlined"
color=
"secondary"
color=
"secondary"
onClick=
{
(
e
:
any
)
=>
onClick=
{
(
e
:
any
)
=>
handleShowPopper
(
handleShowPopper
(
e
,
e
,
[
'SUBMITTED'
,
'RUNNING'
].
includes
(
state
||
''
)
[
"SUBMITTED"
,
"RUNNING"
].
includes
(
state
||
""
)
?
"正在运行的任务终止后将无法重新运行,确认继续吗?"
?
"正在运行的任务终止后将无法重新运行,确认继续吗?"
:
"任务被删除后将无法恢复,确认继续吗?"
:
"任务被删除后将无法恢复,确认继续吗?"
)
)
}
}
// click=
{
onStopJob
}
// click=
{
onStopJob
}
></
MyButton
>
></
MyButton
>
{
/* </MyPopconfirm> */
}
{
/* </MyPopconfirm> */
}
</
div
>
</
div
>
...
@@ -480,7 +501,9 @@ const ProjectSubmitWork = observer(() => {
...
@@ -480,7 +501,9 @@ const ProjectSubmitWork = observer(() => {
}
}
alt=
""
alt=
""
/>
/>
<
span
className=
{
styles
.
outputItemName
}
>
{
item
.
name
}
</
span
>
<
span
className=
{
styles
.
outputItemName
}
>
{
item
.
name
}
</
span
>
</
div
>
</
div
>
{
/* </MyPopconfirm> */
}
{
/* </MyPopconfirm> */
}
<
span
className=
{
styles
.
outputLiRight
}
>
<
span
className=
{
styles
.
outputLiRight
}
>
...
@@ -493,8 +516,8 @@ const ProjectSubmitWork = observer(() => {
...
@@ -493,8 +516,8 @@ const ProjectSubmitWork = observer(() => {
)
}
)
}
{
(
!
workFlowJobInfo
?.
outputs
||
{
(
!
workFlowJobInfo
?.
outputs
||
Object
.
keys
(
workFlowJobInfo
?.
outputs
).
length
===
0
)
&&
(
Object
.
keys
(
workFlowJobInfo
?.
outputs
).
length
===
0
)
&&
(
<
div
className=
{
styles
.
notResults
}
>
暂无结果文件
</
div
>
<
div
className=
{
styles
.
notResults
}
>
暂无结果文件
</
div
>
)
}
)
}
<
div
className=
{
styles
.
title
}
>
任务信息
</
div
>
<
div
className=
{
styles
.
title
}
>
任务信息
</
div
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoLi
}
>
<
div
className=
{
styles
.
taskInfoParams
}
>
任务名称
</
div
>
<
div
className=
{
styles
.
taskInfoParams
}
>
任务名称
</
div
>
...
@@ -541,7 +564,7 @@ const ProjectSubmitWork = observer(() => {
...
@@ -541,7 +564,7 @@ const ProjectSubmitWork = observer(() => {
alt=
""
alt=
""
/>
/>
)
}
)
}
{
[
'SUBMITTED'
,
'RUNNING'
].
includes
(
state
||
''
)
&&
(
{
[
"SUBMITTED"
,
"RUNNING"
].
includes
(
state
||
""
)
&&
(
<
img
<
img
className=
{
styles
.
taskInfoValueIcon
}
className=
{
styles
.
taskInfoValueIcon
}
src=
{
jobRun
}
src=
{
jobRun
}
...
@@ -766,11 +789,7 @@ const ProjectSubmitWork = observer(() => {
...
@@ -766,11 +789,7 @@ const ProjectSubmitWork = observer(() => {
projectId=
{
projectId
as
string
}
projectId=
{
projectId
as
string
}
></
SeeDataset
>
></
SeeDataset
>
)
}
)
}
<
LogView
<
LogView
isshow=
{
showLogView
}
handleClose=
{
handleClose
}
logs=
{
logs
}
/>
isshow=
{
showLogView
}
handleClose=
{
handleClose
}
logs=
{
logs
}
/>
</
div
>
</
div
>
);
);
});
});
...
...
src/views/Project/ProjectWorkbench/index.tsx
View file @
c3e98d12
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: rocosen
* @Author: rocosen
* @Date: 2022-06-12 10:05:13
* @Date: 2022-06-12 10:05:13
* @LastEditors: 吴永生 15770852798@163.com
* @LastEditors: 吴永生 15770852798@163.com
* @LastEditTime: 2022-0
8-30 18:21:04
* @LastEditTime: 2022-0
9-01 09:31:56
* @FilePath: /bkunyun/src/views/Project/ProjectSetting/index.tsx
* @FilePath: /bkunyun/src/views/Project/ProjectSetting/index.tsx
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
*/
...
@@ -35,7 +35,7 @@ const ProjectWorkbench = observer(() => {
...
@@ -35,7 +35,7 @@ const ProjectWorkbench = observer(() => {
hide
:
!
isPass
(
"PROJECT_WORKBENCH_FLOES"
),
hide
:
!
isPass
(
"PROJECT_WORKBENCH_FLOES"
),
icon
:
Template
,
icon
:
Template
,
iconed
:
TemplateSelect
,
iconed
:
TemplateSelect
,
iconHover
:
TemplateHover
iconHover
:
TemplateHover
,
},
},
{
{
label
:
"任务列表"
,
label
:
"任务列表"
,
...
@@ -50,9 +50,18 @@ const ProjectWorkbench = observer(() => {
...
@@ -50,9 +50,18 @@ const ProjectWorkbench = observer(() => {
},
[
isPass
]);
},
[
isPass
]);
return
(
return
(
<
div
style=
{
{
padding
:
'28px 24px 24px'
}
}
>
<
div
style=
{
{
padding
:
"28px 24px 24px"
,
height
:
"100%"
}
}
>
<
div
style=
{
{
display
:
"flex"
,
alignItems
:
"center"
}
}
>
<
div
style=
{
{
display
:
"flex"
,
alignItems
:
"center"
}
}
>
<
span
style=
{
{
fontSize
:
"18px"
,
lineHeight
:
"26px"
,
fontWeight
:
"600"
,
color
:
"#1E2633"
}
}
>
工作台
</
span
>
<
span
style=
{
{
fontSize
:
"18px"
,
lineHeight
:
"26px"
,
fontWeight
:
"600"
,
color
:
"#1E2633"
,
}
}
>
工作台
</
span
>
</
div
>
</
div
>
<
Box
sx=
{
{
width
:
"100%"
,
typography
:
"body1"
}
}
>
<
Box
sx=
{
{
width
:
"100%"
,
typography
:
"body1"
}
}
>
<
Tabs
<
Tabs
...
...
src/views/WorkFlowEdit/components/OperatorList/index.tsx
View file @
c3e98d12
...
@@ -130,7 +130,7 @@ const OperatorItem = (props: IOperatorItemProps) => {
...
@@ -130,7 +130,7 @@ const OperatorItem = (props: IOperatorItemProps) => {
draggable=
{
true
}
draggable=
{
true
}
onDragStart=
{
onDragStart
}
onDragStart=
{
onDragStart
}
onDragEnd=
{
onDragEnd
}
onDragEnd=
{
onDragEnd
}
onDragOver=
{
(
e
)
=>
e
.
preventDefault
()
}
onDragOver=
{
(
e
)
=>
e
.
preventDefault
()
}
// dragOver( e ){ e.preventDefault };
// dragOver( e ){ e.preventDefault };
>
>
<
h2
className=
{
styles
.
operatorItemTitle
}
>
{
title
}
</
h2
>
<
h2
className=
{
styles
.
operatorItemTitle
}
>
{
title
}
</
h2
>
...
@@ -230,7 +230,9 @@ const OperatorList = observer((props: IOperatorListProps) => {
...
@@ -230,7 +230,9 @@ const OperatorList = observer((props: IOperatorListProps) => {
)
:
(
)
:
(
<
div
className=
{
styles
.
noData
}
>
<
div
className=
{
styles
.
noData
}
>
<
img
src=
{
noTemplate
}
alt=
""
className=
{
styles
.
noDataImg
}
/>
<
img
src=
{
noTemplate
}
alt=
""
className=
{
styles
.
noDataImg
}
/>
<
span
className=
{
styles
.
noDataText
}
>
没有找到相关算子
</
span
>
<
span
className=
{
styles
.
noDataText
}
>
{
keyword
?
"没有找到相关算子"
:
"暂无相关算子"
}
</
span
>
</
div
>
</
div
>
)
}
)
}
</
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