@@ -9,17 +9,19 @@ import {Loader, TextInput, Label} from '@gravity-ui/uikit';
99import ProblemFilter , { problemFilterType } from '../../components/ProblemFilter/ProblemFilter' ;
1010import { Illustration } from '../../components/Illustration' ;
1111import { AccessDenied } from '../../components/Errors/403' ;
12+ import { UptimeFilter } from '../../components/UptimeFIlter' ;
1213
1314import { hideTooltip , showTooltip } from '../../store/reducers/tooltip' ;
1415import { withSearch } from '../../HOCS' ;
1516import { AUTO_RELOAD_INTERVAL , ALL , DEFAULT_TABLE_SETTINGS } from '../../utils/constants' ;
1617import { getFilteredNodes } from '../../store/reducers/clusterNodes' ;
17- import { getNodes } from '../../store/reducers/nodes' ;
18+ import { getNodes , setNodesUptimeFilter } from '../../store/reducers/nodes' ;
1819import { changeFilter } from '../../store/reducers/settings' ;
1920import { setHeader } from '../../store/reducers/header' ;
2021import routes , { CLUSTER_PAGES , createHref } from '../../routes' ;
2122import { calcUptime } from '../../utils' ;
2223import { getNodesColumns } from '../../utils/getNodesColumns' ;
24+ import { NodesUptimeFilterValues } from '../../utils/nodes' ;
2325
2426import './Nodes.scss' ;
2527
@@ -44,12 +46,14 @@ class Nodes extends React.Component {
4446 hideTooltip : PropTypes . func ,
4547 searchQuery : PropTypes . string ,
4648 handleSearchQuery : PropTypes . func ,
47- filter : problemFilterType ,
49+ problemFilter : problemFilterType ,
4850 changeFilter : PropTypes . func ,
4951 setHeader : PropTypes . func ,
5052 className : PropTypes . string ,
5153 singleClusterMode : PropTypes . bool ,
5254 additionalNodesInfo : PropTypes . object ,
55+ nodesUptimeFilter : PropTypes . string ,
56+ setNodesUptimeFilter : PropTypes . func ,
5357 } ;
5458
5559 componentDidMount ( ) {
@@ -73,12 +77,16 @@ class Nodes extends React.Component {
7377 this . props . handleSearchQuery ( search ) ;
7478 } ;
7579
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 ) ;
7886 } ;
7987
8088 renderControls ( ) {
81- const { searchQuery, filter , nodes } = this . props ;
89+ const { nodes , searchQuery, problemFilter , nodesUptimeFilter } = this . props ;
8290
8391 return (
8492 < div className = { b ( 'controls' ) } >
@@ -90,7 +98,8 @@ class Nodes extends React.Component {
9098 hasClear
9199 autoFocus
92100 />
93- < ProblemFilter value = { filter } onChange = { this . handleFilterChange } />
101+ < ProblemFilter value = { problemFilter } onChange = { this . handleProblemFilterChange } />
102+ < UptimeFilter value = { nodesUptimeFilter } onChange = { this . handleUptimeFilterChange } />
94103 < Label theme = "info" size = "m" > { `Nodes: ${ nodes ?. length } ` } </ Label >
95104 </ div >
96105 ) ;
@@ -99,7 +108,8 @@ class Nodes extends React.Component {
99108 renderTable = ( ) => {
100109 const {
101110 nodes = [ ] ,
102- filter,
111+ problemFilter,
112+ nodesUptimeFilter,
103113 searchQuery,
104114 showTooltip,
105115 hideTooltip,
@@ -126,7 +136,7 @@ class Nodes extends React.Component {
126136 } ) ) ;
127137
128138 if ( preparedNodes . length === 0 ) {
129- if ( filter !== ALL ) {
139+ if ( problemFilter !== ALL || nodesUptimeFilter !== NodesUptimeFilterValues . All ) {
130140 return < Illustration name = "thumbsUp" width = "200" /> ;
131141 }
132142 }
@@ -177,7 +187,7 @@ class Nodes extends React.Component {
177187}
178188
179189const mapStateToProps = ( state ) => {
180- const { wasLoaded, loading, error} = state . nodes ;
190+ const { wasLoaded, loading, error, nodesUptimeFilter } = state . nodes ;
181191
182192 const nodes = getFilteredNodes ( state ) ;
183193 return {
@@ -186,7 +196,8 @@ const mapStateToProps = (state) => {
186196 wasLoaded,
187197 loading,
188198 error,
189- filter : state . settings . problemFilter ,
199+ problemFilter : state . settings . problemFilter ,
200+ nodesUptimeFilter,
190201 } ;
191202} ;
192203
@@ -196,6 +207,7 @@ const mapDispatchToProps = {
196207 showTooltip,
197208 changeFilter,
198209 setHeader,
210+ setNodesUptimeFilter,
199211} ;
200212
201213export default withSearch ( connect ( mapStateToProps , mapDispatchToProps ) ( Nodes ) ) ;
0 commit comments