@@ -59,8 +59,8 @@ export const FiltersToolbar: React.FC<FiltersToolbarProps> = ({
5959 const { t } = useTranslation ( 'plugin__netobserv-plugin' ) ;
6060 const [ indicator , setIndicator ] = React . useState < Indicator > ( ValidatedOptions . default ) ;
6161 const [ message , setMessage ] = React . useState < string | undefined > ( ) ;
62- const [ selectedFilter , setSelectedFilter ] = React . useState < FilterDefinition > (
63- findFilter ( filterDefinitions , 'src_namespace' ) !
62+ const [ selectedFilter , setSelectedFilter ] = React . useState < FilterDefinition | null > (
63+ findFilter ( filterDefinitions , 'src_namespace' ) || filterDefinitions . length ? filterDefinitions [ 0 ] : null
6464 ) ;
6565 const [ selectedCompare , setSelectedCompare ] = React . useState < FilterCompare > ( FilterCompare . equal ) ;
6666 const [ showFilters , setShowFilters ] = useLocalStorage < boolean > ( localStorageShowFiltersKey , true ) ;
@@ -89,6 +89,10 @@ export const FiltersToolbar: React.FC<FiltersToolbarProps> = ({
8989
9090 const addFilter = React . useCallback (
9191 ( filterValue : FilterValue ) => {
92+ if ( selectedFilter === null ) {
93+ console . error ( 'addFilter called with' , selectedFilter ) ;
94+ return false ;
95+ }
9296 const newFilters = _ . cloneDeep ( filters ?. list ) || [ ] ;
9397 const not = selectedCompare === FilterCompare . notEqual ;
9498 const moreThan = selectedCompare === FilterCompare . moreThanOrEqual ;
@@ -111,6 +115,10 @@ export const FiltersToolbar: React.FC<FiltersToolbarProps> = ({
111115 ) ;
112116
113117 const getFilterControl = React . useCallback ( ( ) => {
118+ if ( selectedFilter === null ) {
119+ return < > </ > ;
120+ }
121+
114122 const commonProps = {
115123 filterDefinition : selectedFilter ,
116124 addFilter : addFilter ,
@@ -133,6 +141,43 @@ export const FiltersToolbar: React.FC<FiltersToolbarProps> = ({
133141 }
134142 } , [ selectedFilter , addFilter , setMessageWithDelay , indicator , selectedCompare ] ) ;
135143
144+ const getFilterToolbar = React . useCallback ( ( ) => {
145+ if ( selectedFilter === null ) {
146+ return < > </ > ;
147+ }
148+
149+ return (
150+ < ToolbarItem className = "flex-start" >
151+ < Tooltip
152+ //css hide tooltip here to avoid render issue
153+ className = { `filters-tooltip${ _ . isEmpty ( message ) ? '-empty' : '' } ` }
154+ isVisible = { ! _ . isEmpty ( message ) }
155+ content = { message }
156+ trigger = { _ . isEmpty ( message ) ? 'manual' : 'click' }
157+ enableFlip = { false }
158+ position = { 'top' }
159+ >
160+ < div >
161+ < InputGroup >
162+ < FiltersDropdown
163+ filterDefinitions = { filterDefinitions }
164+ selectedFilter = { selectedFilter }
165+ setSelectedFilter = { setSelectedFilter }
166+ />
167+ < CompareFilter
168+ value = { selectedCompare }
169+ setValue = { setSelectedCompare }
170+ component = { selectedFilter . component }
171+ />
172+ { getFilterControl ( ) }
173+ </ InputGroup >
174+ < FilterHints def = { selectedFilter } />
175+ </ div >
176+ </ Tooltip >
177+ </ ToolbarItem >
178+ ) ;
179+ } , [ filterDefinitions , getFilterControl , message , selectedCompare , selectedFilter ] ) ;
180+
136181 const isForced = ! _ . isEmpty ( forcedFilters ) ;
137182 const filtersOrForced = isForced ? forcedFilters : filters ;
138183 const defaultFilters = quickFilters . filter ( qf => qf . default ) . flatMap ( qf => qf . filters ) ;
@@ -156,38 +201,7 @@ export const FiltersToolbar: React.FC<FiltersToolbarProps> = ({
156201 < QuickFilters quickFilters = { quickFilters } activeFilters = { filters ?. list || [ ] } setFilters = { setFiltersList } />
157202 </ ToolbarItem >
158203 ) }
159- { ! isForced && (
160- < >
161- < ToolbarItem className = "flex-start" >
162- < Tooltip
163- //css hide tooltip here to avoid render issue
164- className = { `filters-tooltip${ _ . isEmpty ( message ) ? '-empty' : '' } ` }
165- isVisible = { ! _ . isEmpty ( message ) }
166- content = { message }
167- trigger = { _ . isEmpty ( message ) ? 'manual' : 'click' }
168- enableFlip = { false }
169- position = { 'top' }
170- >
171- < div >
172- < InputGroup >
173- < FiltersDropdown
174- filterDefinitions = { filterDefinitions }
175- selectedFilter = { selectedFilter }
176- setSelectedFilter = { setSelectedFilter }
177- />
178- < CompareFilter
179- value = { selectedCompare }
180- setValue = { setSelectedCompare }
181- component = { selectedFilter . component }
182- />
183- { getFilterControl ( ) }
184- </ InputGroup >
185- < FilterHints def = { selectedFilter } />
186- </ div >
187- </ Tooltip >
188- </ ToolbarItem >
189- </ >
190- ) }
204+ { ! isForced && getFilterToolbar ( ) }
191205 { showHideText && (
192206 < ToolbarItem className = "flex-start" >
193207 < Button
0 commit comments