File tree Expand file tree Collapse file tree 4 files changed +34
-8
lines changed
Cassandra.DistributedTaskQueue.Monitoring/Api
cassandra-distributed-task-queue-ui/src/components Expand file tree Collapse file tree 4 files changed +34
-8
lines changed Original file line number Diff line number Diff line change @@ -54,6 +54,10 @@ public class RtqMonitoringTaskMeta
54
54
[ JsonConverter ( typeof ( StringEnumConverter ) ) ]
55
55
public TaskState State { get ; set ; }
56
56
57
+ [ CanBeNull ]
58
+ [ JsonProperty ( "taskActions" ) ]
59
+ public TaskActions TaskActions { get ; set ; }
60
+
57
61
[ JsonProperty ( "attempts" ) ]
58
62
public int Attempts { get ; set ; }
59
63
Original file line number Diff line number Diff line change
1
+ using Newtonsoft . Json ;
2
+
3
+ namespace SkbKontur . Cassandra . DistributedTaskQueue . Monitoring . Api ;
4
+
5
+ public class TaskActions
6
+ {
7
+ [ JsonProperty ( "canCancel" ) ]
8
+ public bool CanCancel { get ; set ; }
9
+
10
+ [ JsonProperty ( "canRerun" ) ]
11
+ public bool CanRerun { get ; set ; }
12
+ }
Original file line number Diff line number Diff line change @@ -56,10 +56,17 @@ export function TaskDetailsPage({
56
56
if ( ! taskDetails ) {
57
57
return null ;
58
58
}
59
- const isCancelable = cancelableStates . includes ( taskDetails . taskMeta . state ) ;
60
- const isRerunable = rerunableStates . includes ( taskDetails . taskMeta . state ) ;
59
+
60
+ const canCancel = taskDetails . taskMeta . taskActions
61
+ ? taskDetails . taskMeta . taskActions . canCancel
62
+ : allowRerunOrCancel && cancelableStates . includes ( taskDetails . taskMeta . state ) ;
63
+
64
+ const canRerun = taskDetails . taskMeta . taskActions
65
+ ? taskDetails . taskMeta . taskActions . canRerun
66
+ : allowRerunOrCancel && rerunableStates . includes ( taskDetails . taskMeta . state ) ;
67
+
61
68
const relatedTasksRequest = customDetailRenderer . getRelatedTasksLocation ( taskDetails ) ;
62
- if ( ! isCancelable && ! isRerunable && relatedTasksRequest == null ) {
69
+ if ( ! canCancel && ! canRerun && relatedTasksRequest == null ) {
63
70
return null ;
64
71
}
65
72
@@ -77,14 +84,14 @@ export function TaskDetailsPage({
77
84
</ RouterLink >
78
85
</ Fit >
79
86
) }
80
- { isCancelable && (
87
+ { canCancel && (
81
88
< Fit >
82
89
< Link icon = { < XIcon16Regular /> } use = "danger" data-tid = "CancelButton" onClick = { cancel } >
83
90
Cancel task
84
91
</ Link >
85
92
</ Fit >
86
93
) }
87
- { isRerunable && (
94
+ { canRerun && (
88
95
< Fit >
89
96
< Button
90
97
use = "link"
@@ -160,7 +167,7 @@ export function TaskDetailsPage({
160
167
borderBottom
161
168
data-tid = "Header"
162
169
title = { `Задача ${ taskDetails . taskMeta . name } ` }
163
- tools = { taskDetails && allowRerunOrCancel ? renderButtons ( ) : null } >
170
+ tools = { renderButtons ( ) } >
164
171
< TaskTimeLine
165
172
getHrefToTask = { getTaskLocation }
166
173
taskMeta = { taskDetails . taskMeta }
Original file line number Diff line number Diff line change @@ -37,6 +37,9 @@ export function TaskDetails(props: TaskDetailsProps): JSX.Element {
37
37
const theme = React . useContext ( ThemeContext ) ;
38
38
const { customStateCaptions } = useCustomSettings ( ) ;
39
39
40
+ const canCancel = taskInfo . taskActions ? taskInfo . taskActions . canCancel : cancelableStates . includes ( taskInfo . state ) ;
41
+ const canRerun = taskInfo . taskActions ? taskInfo . taskActions . canRerun : rerunableStates . includes ( taskInfo . state ) ;
42
+
40
43
const renderTaskDate = (
41
44
taskInfo : RtqMonitoringTaskMeta ,
42
45
caption : string ,
@@ -93,7 +96,7 @@ export function TaskDetails(props: TaskDetailsProps): JSX.Element {
93
96
< Fit >
94
97
< Link
95
98
data-tid = "Cancel"
96
- disabled = { ! cancelableStates . includes ( taskInfo . state ) }
99
+ disabled = { ! canCancel }
97
100
onClick = { onCancel }
98
101
icon = { < XIcon16Regular /> } >
99
102
Cancel
@@ -102,7 +105,7 @@ export function TaskDetails(props: TaskDetailsProps): JSX.Element {
102
105
< Fit >
103
106
< Link
104
107
data-tid = "Rerun"
105
- disabled = { ! rerunableStates . includes ( taskInfo . state ) }
108
+ disabled = { ! canRerun }
106
109
onClick = { onRerun }
107
110
icon = { < ArrowRoundTimeForwardIcon16Regular /> } >
108
111
Rerun
You can’t perform that action at this time.
0 commit comments