diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx index e0e45eddfe171..75841b52521bd 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/action_delete.tsx @@ -21,17 +21,14 @@ import { createPermissionFailureMessage, } from '../../../../../privilege/check_privilege'; -import { DataFrameAnalyticsListRow, DATA_FRAME_TASK_STATE } from './common'; +import { isDataFrameAnalyticsRunning, DataFrameAnalyticsListRow } from './common'; interface DeleteActionProps { item: DataFrameAnalyticsListRow; } export const DeleteAction: FC = ({ item }) => { - const disabled = - item.stats.state === DATA_FRAME_TASK_STATE.STARTED || - item.stats.state === DATA_FRAME_TASK_STATE.ANALYZING || - item.stats.state === DATA_FRAME_TASK_STATE.REINDEXING; + const disabled = isDataFrameAnalyticsRunning(item.stats.state); const canDeleteDataFrameAnalytics: boolean = checkPermission('canDeleteDataFrameAnalytics'); diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx index 59496f00d8fe4..7ad86c5d380ca 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/actions.tsx @@ -56,7 +56,7 @@ export const getActions = () => { AnalyticsViewAction, { render: (item: DataFrameAnalyticsListRow) => { - if (!isDataFrameAnalyticsRunning(item.stats)) { + if (!isDataFrameAnalyticsRunning(item.stats.state)) { return ; } diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx index 45f53691eab8f..8cc1719ffea8c 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx @@ -8,12 +8,7 @@ import React, { Fragment, FC, useState } from 'react'; import { i18n } from '@kbn/i18n'; -import { - // EuiBadge, - EuiButtonEmpty, - EuiCallOut, - EuiEmptyPrompt, -} from '@elastic/eui'; +import { EuiButtonEmpty, EuiCallOut, EuiEmptyPrompt } from '@elastic/eui'; import { DataFrameAnalyticsId, useRefreshAnalyticsList } from '../../../../common'; import { checkPermission } from '../../../../../privilege/check_privilege'; @@ -24,7 +19,6 @@ import { DataFrameAnalyticsListRow, ItemIdToExpandedRowMap, DATA_FRAME_TASK_STATE, - // DATA_FRAME_MODE, Query, Clause, } from './common'; diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/columns.tsx b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/columns.tsx index 07adff6c3e415..19d7b4db36c9b 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/columns.tsx +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/columns.tsx @@ -20,10 +20,12 @@ import { import { getAnalysisType, DataFrameAnalyticsId } from '../../../../common'; import { getDataFrameAnalyticsProgress, + isDataFrameAnalyticsFailed, + isDataFrameAnalyticsRunning, + isDataFrameAnalyticsStopped, DataFrameAnalyticsListColumn, DataFrameAnalyticsListRow, DataFrameAnalyticsStats, - DATA_FRAME_TASK_STATE, } from './common'; import { getActions } from './actions'; @@ -32,6 +34,7 @@ enum TASK_STATE_COLOR { failed = 'danger', reindexing = 'primary', started = 'primary', + starting = 'primary', stopped = 'hollow', } @@ -41,7 +44,7 @@ export const getTaskStateBadge = ( ) => { const color = TASK_STATE_COLOR[state]; - if (state === DATA_FRAME_TASK_STATE.FAILED && reason !== undefined) { + if (isDataFrameAnalyticsFailed(state) && reason !== undefined) { return ( @@ -91,10 +94,10 @@ export const progressColumn = { {!isBatchTransform && ( - {item.stats.state === DATA_FRAME_TASK_STATE.STARTED && ( + {isDataFrameAnalyticsRunning(item.stats.state) && ( )} - {item.stats.state === DATA_FRAME_TASK_STATE.STOPPED && ( + {isDataFrameAnalyticsStopped(item.stats.state) && ( )} diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.test.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.test.ts index 3da57a24cfcdf..30f87ad8a375b 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.test.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.test.ts @@ -11,10 +11,12 @@ import { isCompletedAnalyticsJob, isDataFrameAnalyticsRunning, isDataFrameAnalyticsStats, + DataFrameAnalyticsStats, + DATA_FRAME_TASK_STATE, } from './common'; -const completedJob = StatsMock.data_frame_analytics[0]; -const runningJob = StatsMock.data_frame_analytics[1]; +const completedJob = StatsMock.data_frame_analytics[0] as DataFrameAnalyticsStats; +const runningJob = StatsMock.data_frame_analytics[1] as DataFrameAnalyticsStats; describe('Data Frame Analytics: common utils', () => { test('isCompletedAnalyticsJob()', () => { @@ -23,8 +25,16 @@ describe('Data Frame Analytics: common utils', () => { }); test('isDataFrameAnalyticsRunning()', () => { - expect(isDataFrameAnalyticsRunning(completedJob)).toBe(false); - expect(isDataFrameAnalyticsRunning(runningJob)).toBe(true); + expect(isDataFrameAnalyticsRunning(completedJob.state)).toBe(false); + expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(true); + runningJob.state = DATA_FRAME_TASK_STATE.STARTED; + expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(true); + runningJob.state = DATA_FRAME_TASK_STATE.STARTING; + expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(true); + runningJob.state = DATA_FRAME_TASK_STATE.REINDEXING; + expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(true); + runningJob.state = DATA_FRAME_TASK_STATE.FAILED; + expect(isDataFrameAnalyticsRunning(runningJob.state)).toBe(false); }); test('isDataFrameAnalyticsStats()', () => { diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts index fa2f6719bcb8e..99d1889b265ed 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts @@ -12,6 +12,7 @@ export enum DATA_FRAME_TASK_STATE { FAILED = 'failed', REINDEXING = 'reindexing', STARTED = 'started', + STARTING = 'starting', STOPPED = 'stopped', } @@ -54,14 +55,23 @@ export interface DataFrameAnalyticsStats { state: DATA_FRAME_TASK_STATE; } -export function isDataFrameAnalyticsRunning(stats: DataFrameAnalyticsStats) { +export function isDataFrameAnalyticsFailed(state: DATA_FRAME_TASK_STATE) { + return state === DATA_FRAME_TASK_STATE.FAILED; +} + +export function isDataFrameAnalyticsRunning(state: DATA_FRAME_TASK_STATE) { return ( - stats.state === DATA_FRAME_TASK_STATE.ANALYZING || - stats.state === DATA_FRAME_TASK_STATE.STARTED || - stats.state === DATA_FRAME_TASK_STATE.REINDEXING + state === DATA_FRAME_TASK_STATE.ANALYZING || + state === DATA_FRAME_TASK_STATE.REINDEXING || + state === DATA_FRAME_TASK_STATE.STARTED || + state === DATA_FRAME_TASK_STATE.STARTING ); } +export function isDataFrameAnalyticsStopped(state: DATA_FRAME_TASK_STATE) { + return state === DATA_FRAME_TASK_STATE.STOPPED; +} + export function isDataFrameAnalyticsStats(arg: any): arg is DataFrameAnalyticsStats { return ( typeof arg === 'object' && diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/services/analytics_service/delete_analytics.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/services/analytics_service/delete_analytics.ts index dde4f8efc899c..fb366b517f0b7 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/services/analytics_service/delete_analytics.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/services/analytics_service/delete_analytics.ts @@ -11,18 +11,14 @@ import { ml } from '../../../../../services/ml_api_service'; import { refreshAnalyticsList$, REFRESH_ANALYTICS_LIST_STATE } from '../../../../common'; import { - DATA_FRAME_TASK_STATE, + isDataFrameAnalyticsFailed, DataFrameAnalyticsListRow, } from '../../components/analytics_list/common'; export const deleteAnalytics = async (d: DataFrameAnalyticsListRow) => { try { - if (d.stats.state === DATA_FRAME_TASK_STATE.FAILED) { - await ml.dataFrameAnalytics.stopDataFrameAnalytics( - d.config.id, - d.stats.state === DATA_FRAME_TASK_STATE.FAILED, - true - ); + if (isDataFrameAnalyticsFailed(d.stats.state)) { + await ml.dataFrameAnalytics.stopDataFrameAnalytics(d.config.id, true, true); } await ml.dataFrameAnalytics.deleteDataFrameAnalytics(d.config.id); toastNotifications.addSuccess( diff --git a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/services/analytics_service/stop_analytics.ts b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/services/analytics_service/stop_analytics.ts index 44286c8b1f7dd..84d1835c6e1e3 100644 --- a/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/services/analytics_service/stop_analytics.ts +++ b/x-pack/legacy/plugins/ml/public/data_frame_analytics/pages/analytics_management/services/analytics_service/stop_analytics.ts @@ -11,7 +11,7 @@ import { ml } from '../../../../../services/ml_api_service'; import { refreshAnalyticsList$, REFRESH_ANALYTICS_LIST_STATE } from '../../../../common'; import { - DATA_FRAME_TASK_STATE, + isDataFrameAnalyticsFailed, DataFrameAnalyticsListRow, } from '../../components/analytics_list/common'; @@ -19,7 +19,7 @@ export const stopAnalytics = async (d: DataFrameAnalyticsListRow) => { try { await ml.dataFrameAnalytics.stopDataFrameAnalytics( d.config.id, - d.stats.state === DATA_FRAME_TASK_STATE.FAILED, + isDataFrameAnalyticsFailed(d.stats.state), true ); toastNotifications.addSuccess( diff --git a/x-pack/legacy/plugins/ml/public/overview/components/analytics_panel/analytics_stats_bar.tsx b/x-pack/legacy/plugins/ml/public/overview/components/analytics_panel/analytics_stats_bar.tsx index 63d363e2f5a4d..19a907ff8e899 100644 --- a/x-pack/legacy/plugins/ml/public/overview/components/analytics_panel/analytics_stats_bar.tsx +++ b/x-pack/legacy/plugins/ml/public/overview/components/analytics_panel/analytics_stats_bar.tsx @@ -8,8 +8,10 @@ import React, { FC } from 'react'; import { i18n } from '@kbn/i18n'; import { StatsBar, AnalyticStatsBarStats } from '../../../components/stats_bar'; import { + isDataFrameAnalyticsFailed, + isDataFrameAnalyticsRunning, + isDataFrameAnalyticsStopped, DataFrameAnalyticsListRow, - DATA_FRAME_TASK_STATE, } from '../../../data_frame_analytics/pages/analytics_management/components/analytics_list/common'; function getAnalyticsStats(analyticsList: any[]) { @@ -53,15 +55,11 @@ function getAnalyticsStats(analyticsList: any[]) { let stoppedJobs = 0; analyticsList.forEach(job => { - if (job.stats.state === DATA_FRAME_TASK_STATE.FAILED) { + if (isDataFrameAnalyticsFailed(job.stats.state)) { failedJobs++; - } else if ( - job.stats.state === DATA_FRAME_TASK_STATE.STARTED || - job.stats.state === DATA_FRAME_TASK_STATE.ANALYZING || - job.stats.state === DATA_FRAME_TASK_STATE.REINDEXING - ) { + } else if (isDataFrameAnalyticsRunning(job.stats.state)) { startedJobs++; - } else if (job.stats.state === DATA_FRAME_TASK_STATE.STOPPED) { + } else if (isDataFrameAnalyticsStopped(job.stats.state)) { stoppedJobs++; } });