@@ -29,6 +29,16 @@ const formatTimeInterval = (timeInterval) => {
29
29
return timeInterval
30
30
}
31
31
32
+ const formatTimeout = ( timeout ) => {
33
+ if ( ! timeout ) return timeout
34
+ const value = parseInt ( timeout )
35
+ if ( ! value ) return undefined
36
+ if ( ! Number . isInteger ( value ) ) return undefined
37
+ const unit = timeout . replace ( `${ value } ` , '' ) ;
38
+ if ( ! [ 's' , 'm' ] . includes ( unit ) ) return undefined
39
+ return timeout
40
+ }
41
+
32
42
const Monitor = ( props ) => {
33
43
const {
34
44
formatState,
@@ -51,6 +61,7 @@ const Monitor = (props) => {
51
61
timeFormatter : formatter . dates ( 1 ) ,
52
62
} ,
53
63
timeInterval : formatTimeInterval ( param ?. timeInterval ) ,
64
+ timeout : formatTimeout ( param ?. timeout ) ,
54
65
param : param ,
55
66
} )
56
67
) ;
@@ -59,10 +70,10 @@ const Monitor = (props) => {
59
70
const [ timeZone , setTimeZone ] = useState ( ( ) => getTimezone ( ) ) ;
60
71
61
72
useEffect ( ( ) => {
62
- setParam ( { ...param , timeRange : state . timeRange , timeInterval : state . timeInterval } ) ;
63
- } , [ state . timeRange , state . timeInterval ] ) ;
73
+ setParam ( { ...param , timeRange : state . timeRange , timeInterval : state . timeInterval , timeout : state . timeout } ) ;
74
+ } , [ state . timeRange , state . timeInterval , state . timeout ] ) ;
64
75
65
- const handleTimeChange = useCallback ( ( { start, end, timeInterval } ) => {
76
+ const handleTimeChange = useCallback ( ( { start, end, timeInterval, timeout } ) => {
66
77
const bounds = calculateBounds ( {
67
78
from : start ,
68
79
to : end ,
@@ -78,7 +89,8 @@ const Monitor = (props) => {
78
89
max : end ,
79
90
timeFormatter : formatter . dates ( intDay ) ,
80
91
} ,
81
- timeInterval : timeInterval || state . timeInterval
92
+ timeInterval : timeInterval || state . timeInterval ,
93
+ timeout : timeout || state . timeout
82
94
} ) ;
83
95
setSpinning ( true ) ;
84
96
} , [ state ] )
@@ -113,10 +125,13 @@ const Monitor = (props) => {
113
125
showTimeSetting = { true }
114
126
showTimeInterval = { true }
115
127
timeInterval = { state . timeInterval }
128
+ showTimeout = { true }
129
+ timeout = { state . timeout }
116
130
onTimeSettingChange = { ( timeSetting ) => {
117
131
setState ( {
118
132
...state ,
119
- timeInterval : timeSetting . timeInterval
133
+ timeInterval : timeSetting . timeInterval ,
134
+ timeout : timeSetting . timeout
120
135
} ) ;
121
136
} }
122
137
timeZone = { timeZone }
@@ -129,7 +144,7 @@ const Monitor = (props) => {
129
144
icon = { "reload" }
130
145
type = "primary"
131
146
onClick = { ( ) => {
132
- handleTimeChange ( { start : state . timeRange . min , end : state . timeRange . max , timeInterval : state . timeInterval } )
147
+ handleTimeChange ( { start : state . timeRange . min , end : state . timeRange . max , timeInterval : state . timeInterval , timeout : state . timeout } )
133
148
} }
134
149
>
135
150
{ formatMessage ( { id : "form.button.refresh" } ) }
@@ -168,6 +183,7 @@ const Monitor = (props) => {
168
183
setSpinning = { setSpinning }
169
184
{ ...extraParams }
170
185
bucketSize = { state . timeInterval }
186
+ timeout = { state . timeout }
171
187
/>
172
188
)
173
189
) : null }
0 commit comments