@@ -9,17 +9,19 @@ import {Loader, TextInput, Label} from '@gravity-ui/uikit';
9
9
import ProblemFilter , { problemFilterType } from '../../components/ProblemFilter/ProblemFilter' ;
10
10
import { Illustration } from '../../components/Illustration' ;
11
11
import { AccessDenied } from '../../components/Errors/403' ;
12
+ import { UptimeFilter } from '../../components/UptimeFIlter' ;
12
13
13
14
import { hideTooltip , showTooltip } from '../../store/reducers/tooltip' ;
14
15
import { withSearch } from '../../HOCS' ;
15
16
import { AUTO_RELOAD_INTERVAL , ALL , DEFAULT_TABLE_SETTINGS } from '../../utils/constants' ;
16
17
import { getFilteredNodes } from '../../store/reducers/clusterNodes' ;
17
- import { getNodes } from '../../store/reducers/nodes' ;
18
+ import { getNodes , setNodesUptimeFilter } from '../../store/reducers/nodes' ;
18
19
import { changeFilter } from '../../store/reducers/settings' ;
19
20
import { setHeader } from '../../store/reducers/header' ;
20
21
import routes , { CLUSTER_PAGES , createHref } from '../../routes' ;
21
22
import { calcUptime } from '../../utils' ;
22
23
import { getNodesColumns } from '../../utils/getNodesColumns' ;
24
+ import { NodesUptimeFilterValues } from '../../utils/nodes' ;
23
25
24
26
import './Nodes.scss' ;
25
27
@@ -44,12 +46,14 @@ class Nodes extends React.Component {
44
46
hideTooltip : PropTypes . func ,
45
47
searchQuery : PropTypes . string ,
46
48
handleSearchQuery : PropTypes . func ,
47
- filter : problemFilterType ,
49
+ problemFilter : problemFilterType ,
48
50
changeFilter : PropTypes . func ,
49
51
setHeader : PropTypes . func ,
50
52
className : PropTypes . string ,
51
53
singleClusterMode : PropTypes . bool ,
52
54
additionalNodesInfo : PropTypes . object ,
55
+ nodesUptimeFilter : PropTypes . string ,
56
+ setNodesUptimeFilter : PropTypes . func ,
53
57
} ;
54
58
55
59
componentDidMount ( ) {
@@ -73,12 +77,16 @@ class Nodes extends React.Component {
73
77
this . props . handleSearchQuery ( search ) ;
74
78
} ;
75
79
76
- handleFilterChange = ( filter ) => {
77
- this . props . changeFilter ( filter ) ;
80
+ handleProblemFilterChange = ( value ) => {
81
+ this . props . changeFilter ( value ) ;
82
+ } ;
83
+
84
+ handleUptimeFilterChange = ( value ) => {
85
+ this . props . setNodesUptimeFilter ( value ) ;
78
86
} ;
79
87
80
88
renderControls ( ) {
81
- const { searchQuery, filter , nodes } = this . props ;
89
+ const { nodes , searchQuery, problemFilter , nodesUptimeFilter } = this . props ;
82
90
83
91
return (
84
92
< div className = { b ( 'controls' ) } >
@@ -90,7 +98,8 @@ class Nodes extends React.Component {
90
98
hasClear
91
99
autoFocus
92
100
/>
93
- < ProblemFilter value = { filter } onChange = { this . handleFilterChange } />
101
+ < ProblemFilter value = { problemFilter } onChange = { this . handleProblemFilterChange } />
102
+ < UptimeFilter value = { nodesUptimeFilter } onChange = { this . handleUptimeFilterChange } />
94
103
< Label theme = "info" size = "m" > { `Nodes: ${ nodes ?. length } ` } </ Label >
95
104
</ div >
96
105
) ;
@@ -99,7 +108,8 @@ class Nodes extends React.Component {
99
108
renderTable = ( ) => {
100
109
const {
101
110
nodes = [ ] ,
102
- filter,
111
+ problemFilter,
112
+ nodesUptimeFilter,
103
113
searchQuery,
104
114
showTooltip,
105
115
hideTooltip,
@@ -126,7 +136,7 @@ class Nodes extends React.Component {
126
136
} ) ) ;
127
137
128
138
if ( preparedNodes . length === 0 ) {
129
- if ( filter !== ALL ) {
139
+ if ( problemFilter !== ALL || nodesUptimeFilter !== NodesUptimeFilterValues . All ) {
130
140
return < Illustration name = "thumbsUp" width = "200" /> ;
131
141
}
132
142
}
@@ -177,7 +187,7 @@ class Nodes extends React.Component {
177
187
}
178
188
179
189
const mapStateToProps = ( state ) => {
180
- const { wasLoaded, loading, error} = state . nodes ;
190
+ const { wasLoaded, loading, error, nodesUptimeFilter } = state . nodes ;
181
191
182
192
const nodes = getFilteredNodes ( state ) ;
183
193
return {
@@ -186,7 +196,8 @@ const mapStateToProps = (state) => {
186
196
wasLoaded,
187
197
loading,
188
198
error,
189
- filter : state . settings . problemFilter ,
199
+ problemFilter : state . settings . problemFilter ,
200
+ nodesUptimeFilter,
190
201
} ;
191
202
} ;
192
203
@@ -196,6 +207,7 @@ const mapDispatchToProps = {
196
207
showTooltip,
197
208
changeFilter,
198
209
setHeader,
210
+ setNodesUptimeFilter,
199
211
} ;
200
212
201
213
export default withSearch ( connect ( mapStateToProps , mapDispatchToProps ) ( Nodes ) ) ;
0 commit comments