diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/page.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/page.tsx index cd1c2dda1e27a..38cc37aec646c 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/page.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/page.tsx @@ -20,6 +20,7 @@ import { useMlKibana, useMlApiContext } from '../../../contexts/kibana'; import { MlPageHeader } from '../../../components/page_header'; import { AnalyticsIdSelector, AnalyticsSelectorIds } from '../components/analytics_selector'; import { AnalyticsEmptyPrompt } from '../analytics_management/components/empty_prompt'; +import { useUrlState } from '../../../util/url_state'; export const Page: FC<{ jobId: string; @@ -37,6 +38,8 @@ export const Page: FC<{ const jobIdToUse = jobId ?? analyticsId?.job_id; const analysisTypeToUse = analysisType || analyticsId?.analysis_type; + const [, setGlobalState] = useUrlState('_g'); + const checkJobsExist = async () => { try { const { count } = await getDataFrameAnalytics(undefined, undefined, 0); @@ -51,6 +54,20 @@ export const Page: FC<{ checkJobsExist(); }, []); + useEffect( + function updateUrl() { + if (analyticsId !== undefined) { + setGlobalState({ + ml: { + ...(analyticsId.analysis_type ? { analysisType: analyticsId.analysis_type } : {}), + ...(analyticsId.job_id ? { jobId: analyticsId.job_id } : {}), + }, + }); + } + }, + [analyticsId?.job_id, analyticsId?.model_id] + ); + const getEmptyState = () => { if (jobsExist === false) { return ; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/components/analytics_selector/analytics_id_selector.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/components/analytics_selector/analytics_id_selector.tsx index f845cff8322dd..568971ba6d7e2 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/components/analytics_selector/analytics_id_selector.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/components/analytics_selector/analytics_id_selector.tsx @@ -190,11 +190,13 @@ export function AnalyticsIdSelector({ setAnalyticsId, jobsOnly = false }: Props) const selectionValue = { selectable: (item: TableItem) => { - const selectedId = selected?.job_id ?? selected?.model_id; const isDFA = isDataFrameAnalyticsConfigs(item); const itemId = isDFA ? item.id : item.model_id; const isBuiltInModel = isDFA ? false : item.tags.includes(BUILT_IN_MODEL_TAG); - return (selected === undefined || selectedId === itemId) && !isBuiltInModel; + return ( + (selected === undefined || selected?.job_id === itemId || selected?.model_id === itemId) && + !isBuiltInModel + ); }, onSelectionChange: (selectedItem: TableItem[]) => { const item = selectedItem[0]; @@ -208,7 +210,7 @@ export function AnalyticsIdSelector({ setAnalyticsId, jobsOnly = false }: Props) setSelected({ model_id: isDFA ? undefined : item.model_id, - job_id: isDFA ? item.id : undefined, + job_id: isDFA ? item.id : item.metadata?.analytics_config.id, analysis_type: analysisType, }); }, diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/page.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/page.tsx index efdd386ca47b3..4f171d1108ad4 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/page.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/page.tsx @@ -22,7 +22,7 @@ import { AnalyticsIdSelector, AnalyticsSelectorIds } from '../components/analyti import { AnalyticsEmptyPrompt } from '../analytics_management/components/empty_prompt'; export const Page: FC = () => { - const [globalState] = useUrlState('_g'); + const [globalState, setGlobalState] = useUrlState('_g'); const [isLoading, setIsLoading] = useState(false); const [jobsExist, setJobsExist] = useState(true); const { refresh } = useRefreshAnalyticsList({ isLoading: setIsLoading }); @@ -51,6 +51,20 @@ export const Page: FC = () => { checkJobsExist(); }, []); + useEffect( + function updateUrl() { + if (analyticsId !== undefined) { + setGlobalState({ + ml: { + ...(analyticsId.job_id && !analyticsId.model_id ? { jobId: analyticsId.job_id } : {}), + ...(analyticsId.model_id ? { modelId: analyticsId.model_id } : {}), + }, + }); + } + }, + [analyticsId?.job_id, analyticsId?.model_id] + ); + const getEmptyState = () => { if (jobsExist === false) { return ;