Skip to content

Commit f367351

Browse files
committed
[ML] Fix overall stats for saved search on the Data Visualizer page (#57312)
* [ML] fix overall stats fetch with a saved search * [ML] refactor
1 parent 2bbf64a commit f367351

1 file changed

Lines changed: 42 additions & 28 deletions

File tree

  • x-pack/legacy/plugins/ml/public/application/datavisualizer/index_based

x-pack/legacy/plugins/ml/public/application/datavisualizer/index_based/page.tsx

Lines changed: 42 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
esQuery,
3030
esKuery,
3131
} from '../../../../../../../../src/plugins/data/public';
32+
import { SavedSearchSavedObject } from '../../../../common/types/kibana';
3233
import { NavigationMenu } from '../../components/navigation_menu';
3334
import { ML_JOB_FIELD_TYPES } from '../../../../common/constants/field_types';
3435
import { 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

Comments
 (0)