@@ -29,6 +29,7 @@ import {
2929 esQuery ,
3030 esKuery ,
3131} from '../../../../../../../../src/plugins/data/public' ;
32+ import { SavedSearchSavedObject } from '../../../../common/types/kibana' ;
3233import { NavigationMenu } from '../../components/navigation_menu' ;
3334import { ML_JOB_FIELD_TYPES } from '../../../../common/constants/field_types' ;
3435import { SEARCH_QUERY_LANGUAGE } from '../../../../common/constants/search' ;
@@ -119,9 +120,6 @@ export const Page: FC = () => {
119120 } , [ globalState ?. refreshInterval ?. pause , globalState ?. refreshInterval ?. value ] ) ;
120121
121122 const [ lastRefresh , setLastRefresh ] = useState ( 0 ) ;
122- useEffect ( ( ) => {
123- loadOverallStats ( ) ;
124- } , [ lastRefresh ] ) ;
125123
126124 useEffect ( ( ) => {
127125 if ( currentIndexPattern . timeFieldName !== undefined ) {
@@ -159,9 +157,15 @@ export const Page: FC = () => {
159157 mlNodesAvailable ( ) &&
160158 currentIndexPattern . timeFieldName !== undefined ;
161159
162- const [ searchString , setSearchString ] = useState ( defaults . searchString ) ;
163- const [ searchQuery , setSearchQuery ] = useState ( defaults . searchQuery ) ;
164- const [ searchQueryLanguage , setSearchQueryLanguage ] = useState ( defaults . searchQueryLanguage ) ;
160+ const {
161+ searchQuery : initSearchQuery ,
162+ searchString : initSearchString ,
163+ queryLanguage : initQueryLanguage ,
164+ } = extractSearchData ( currentSavedSearch ) ;
165+
166+ const [ searchString , setSearchString ] = useState ( initSearchString ) ;
167+ const [ searchQuery , setSearchQuery ] = useState ( initSearchQuery ) ;
168+ const [ searchQueryLanguage ] = useState ( initQueryLanguage ) ;
165169 const [ samplerShardSize , setSamplerShardSize ] = useState ( defaults . samplerShardSize ) ;
166170
167171 // TODO - type overallStats and stats
@@ -208,30 +212,9 @@ export const Page: FC = () => {
208212 } ;
209213 } ) ;
210214
211- useEffect ( ( ) => {
212- // Check for a saved search being passed in.
213- if ( currentSavedSearch !== null ) {
214- const { query } = getQueryFromSavedSearch ( currentSavedSearch ) ;
215- const queryLanguage = query . language as SEARCH_QUERY_LANGUAGE ;
216- const qryString = query . query ;
217- let qry ;
218- if ( queryLanguage === SEARCH_QUERY_LANGUAGE . KUERY ) {
219- const ast = esKuery . fromKueryExpression ( qryString ) ;
220- qry = esKuery . toElasticsearchQuery ( ast , currentIndexPattern ) ;
221- } else {
222- qry = esQuery . luceneStringToDsl ( qryString ) ;
223- esQuery . decorateQuery ( qry , kibanaConfig . get ( 'query:queryString:options' ) ) ;
224- }
225-
226- setSearchQuery ( qry ) ;
227- setSearchString ( qryString ) ;
228- setSearchQueryLanguage ( queryLanguage ) ;
229- }
230- } , [ ] ) ;
231-
232215 useEffect ( ( ) => {
233216 loadOverallStats ( ) ;
234- } , [ searchQuery , samplerShardSize ] ) ;
217+ } , [ searchQuery , samplerShardSize , lastRefresh ] ) ;
235218
236219 useEffect ( ( ) => {
237220 createMetricCards ( ) ;
@@ -254,6 +237,37 @@ export const Page: FC = () => {
254237 createNonMetricCards ( ) ;
255238 } , [ showAllNonMetrics , nonMetricShowFieldType , nonMetricFieldQuery ] ) ;
256239
240+ /**
241+ * Extract query data from the saved search object.
242+ */
243+ function extractSearchData ( savedSearch : SavedSearchSavedObject | null ) {
244+ if ( ! savedSearch ) {
245+ return {
246+ searchQuery : defaults . searchQuery ,
247+ searchString : defaults . searchString ,
248+ queryLanguage : defaults . searchQueryLanguage ,
249+ } ;
250+ }
251+
252+ const { query } = getQueryFromSavedSearch ( savedSearch ) ;
253+ const queryLanguage = query . language as SEARCH_QUERY_LANGUAGE ;
254+ const qryString = query . query ;
255+ let qry ;
256+ if ( queryLanguage === SEARCH_QUERY_LANGUAGE . KUERY ) {
257+ const ast = esKuery . fromKueryExpression ( qryString ) ;
258+ qry = esKuery . toElasticsearchQuery ( ast , currentIndexPattern ) ;
259+ } else {
260+ qry = esQuery . luceneStringToDsl ( qryString ) ;
261+ esQuery . decorateQuery ( qry , kibanaConfig . get ( 'query:queryString:options' ) ) ;
262+ }
263+
264+ return {
265+ searchQuery : qry ,
266+ searchString : qryString ,
267+ queryLanguage,
268+ } ;
269+ }
270+
257271 async function loadOverallStats ( ) {
258272 const tf = timefilter as any ;
259273 let earliest ;
0 commit comments