Skip to content

Commit 1ec4fde

Browse files
committed
[ML] Add ability to query text/job id from url for DFA page
1 parent 56b740a commit 1ec4fde

3 files changed

Lines changed: 32 additions & 3 deletions

File tree

x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
import React, { Fragment, FC, useState } from 'react';
7+
import React, { Fragment, FC, useState, useEffect } from 'react';
88

99
import { i18n } from '@kbn/i18n';
1010

@@ -15,6 +15,7 @@ import {
1515
EuiFlexGroup,
1616
EuiFlexItem,
1717
EuiSpacer,
18+
EuiSearchBar,
1819
} from '@elastic/eui';
1920

2021
import { DataFrameAnalyticsId, useRefreshAnalyticsList } from '../../../../common';
@@ -46,6 +47,7 @@ import { RefreshAnalyticsListButton } from '../refresh_analytics_list_button';
4647
import { CreateAnalyticsButton } from '../create_analytics_button';
4748
import { CreateAnalyticsFormProps } from '../../hooks/use_create_analytics_form';
4849
import { CreateAnalyticsFlyoutWrapper } from '../create_analytics_flyout_wrapper';
50+
import { getSelectedJobIdFromUrl } from '../../../../../jobs/jobs_list/components/utils';
4951

5052
function getItemIdToExpandedRowMap(
5153
itemIds: DataFrameAnalyticsId[],
@@ -86,6 +88,8 @@ export const DataFrameAnalyticsList: FC<Props> = ({
8688
const [isLoading, setIsLoading] = useState(false);
8789
const [filterActive, setFilterActive] = useState(false);
8890

91+
const [queryText, setQueryText] = useState('');
92+
8993
const [analytics, setAnalytics] = useState<DataFrameAnalyticsListRow[]>([]);
9094
const [analyticsStats, setAnalyticsStats] = useState<AnalyticStatsBarStats | undefined>(
9195
undefined
@@ -102,6 +106,7 @@ export const DataFrameAnalyticsList: FC<Props> = ({
102106
const [sortField, setSortField] = useState<string>(DataFrameAnalyticsListColumn.id);
103107
const [sortDirection, setSortDirection] = useState<SortDirection>(SORT_DIRECTION.ASC);
104108

109+
const [urlFilterIdCleared, setUrlFilterIdCleared] = useState<boolean>(false);
105110
const disabled =
106111
!checkPermission('canCreateDataFrameAnalytics') ||
107112
!checkPermission('canStartStopDataFrameAnalytics');
@@ -114,6 +119,18 @@ export const DataFrameAnalyticsList: FC<Props> = ({
114119
blockRefresh
115120
);
116121

122+
const selectedId = getSelectedJobIdFromUrl(window.location.href);
123+
useEffect(() => {
124+
if (urlFilterIdCleared === false && analytics.length > 0) {
125+
if (selectedId !== undefined) {
126+
setUrlFilterIdCleared(true);
127+
setQueryText(selectedId);
128+
const selectedIdQuery: Query = EuiSearchBar.Query.parse(selectedId);
129+
onQueryChange({ query: selectedIdQuery, error: undefined });
130+
}
131+
}
132+
}, [urlFilterIdCleared, analytics]);
133+
117134
// Subscribe to the refresh observable to trigger reloading the analytics list.
118135
useRefreshAnalyticsList({
119136
isLoading: setIsLoading,
@@ -129,6 +146,7 @@ export const DataFrameAnalyticsList: FC<Props> = ({
129146
clauses = query.ast.clauses;
130147
}
131148
if (clauses.length > 0) {
149+
setQueryText(query.text);
132150
setFilterActive(true);
133151
filterAnalytics(clauses as Array<TermClause | FieldClause>);
134152
} else {
@@ -286,6 +304,7 @@ export const DataFrameAnalyticsList: FC<Props> = ({
286304
};
287305

288306
const search = {
307+
query: queryText,
289308
onChange: onQueryChange,
290309
box: {
291310
incremental: true,

x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/columns.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import {
2323
import { getJobIdUrl } from '../../../../../jobs/jobs_list/components/utils';
2424

2525
import { getAnalysisType, DataFrameAnalyticsId } from '../../../../common';
26-
import { getResultsUrl } from './common';
2726
import { CreateAnalyticsFormProps } from '../../hooks/use_create_analytics_form';
2827
import {
2928
getDataFrameAnalyticsProgress,
@@ -199,7 +198,6 @@ export const getColumns = (
199198
'data-test-subj': 'mlAnalyticsTableRowDetailsToggle',
200199
},
201200
{
202-
// field: DataFrameAnalyticsListColumn.id,
203201
name: 'ID',
204202
sortable: (item: DataFrameAnalyticsListRow) => item.id,
205203
truncateText: true,

x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,3 +408,15 @@ export function clearSelectedJobIdFromUrl(url) {
408408
}
409409
}
410410
}
411+
412+
export function resetMlJobUrl(tabId, url) {
413+
// Change current window's url to just the generic tab url without the job ID
414+
if (typeof url === 'string') {
415+
url = decodeURIComponent(url);
416+
if (url.includes('mlManagement') && url.includes('jobId')) {
417+
const urlParams = getUrlVars(url);
418+
const clearedParams = `ml#/${tabId}?_g=${urlParams._g}`;
419+
window.history.replaceState({}, document.title, clearedParams);
420+
}
421+
}
422+
}

0 commit comments

Comments
 (0)