From 270225fd0c900fb979e41ea97546f6ace8294320 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Fri, 22 Sep 2023 11:45:28 +0100 Subject: [PATCH 1/4] [ML] Adding created_by job property for the advanced wizard --- x-pack/plugins/ml/common/constants/new_job.ts | 1 + .../public/application/jobs/jobs_list/components/utils.js | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/ml/common/constants/new_job.ts b/x-pack/plugins/ml/common/constants/new_job.ts index 12aa5393ad6e15..24584a6e8d29b2 100644 --- a/x-pack/plugins/ml/common/constants/new_job.ts +++ b/x-pack/plugins/ml/common/constants/new_job.ts @@ -19,6 +19,7 @@ export enum CREATED_BY_LABEL { SINGLE_METRIC = 'single-metric-wizard', MULTI_METRIC = 'multi-metric-wizard', POPULATION = 'population-wizard', + ADVANCED = 'advanced-wizard', CATEGORIZATION = 'categorization-wizard', RARE = 'rare-wizard', GEO = 'geo-wizard', diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js index ea8a43b51c47dd..7f35ac8e601045 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js @@ -24,6 +24,7 @@ import { mlCalendarService } from '../../../services/calendar_service'; import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { ML_PAGES } from '../../../../../common/constants/locator'; import { PLUGIN_ID } from '../../../../../common/constants/app'; +import { CREATED_BY_LABEL } from '../../../../../common/constants/new_job'; export function loadFullJob(jobId) { return new Promise((resolve, reject) => { @@ -240,7 +241,11 @@ export async function cloneJob(jobId) { return; } - if (cloneableJob !== undefined && originalJob?.custom_settings?.created_by !== undefined) { + if ( + cloneableJob !== undefined && + originalJob?.custom_settings?.created_by !== undefined && + originalJob?.custom_settings?.created_by !== CREATED_BY_LABEL.ADVANCED + ) { // if the job is from a wizards, i.e. contains a created_by property // use tempJobCloningObjects to temporarily store the job mlJobService.tempJobCloningObjects.createdBy = originalJob?.custom_settings?.created_by; From b3cc7f0f08900f88984c489566c6f86aba4a90d0 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Fri, 22 Sep 2023 11:49:50 +0100 Subject: [PATCH 2/4] updating clone check --- .../new_job/pages/index_or_search/preconfigured_job_redirect.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/pages/index_or_search/preconfigured_job_redirect.ts b/x-pack/plugins/ml/public/application/jobs/new_job/pages/index_or_search/preconfigured_job_redirect.ts index 471ba1e30608e5..3f288d8f6191f9 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/pages/index_or_search/preconfigured_job_redirect.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/pages/index_or_search/preconfigured_job_redirect.ts @@ -63,6 +63,7 @@ async function getWizardUrlFromCloningJob(createdBy: string | undefined, dataVie case CREATED_BY_LABEL.GEO: page = JOB_TYPE.GEO; break; + case CREATED_BY_LABEL.ADVANCED: default: page = JOB_TYPE.ADVANCED; break; From 3c1f8bfeee9dd2c8d10c16e1ec37a8ef5d0d985a Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Fri, 22 Sep 2023 11:50:08 +0100 Subject: [PATCH 3/4] types --- .../jobs/new_job/common/job_creator/advanced_job_creator.ts | 6 ++++-- .../jobs/new_job/common/job_creator/geo_job_creator.ts | 6 +++++- .../new_job/common/job_creator/multi_metric_job_creator.ts | 6 +++++- .../new_job/common/job_creator/population_job_creator.ts | 6 +++++- .../jobs/new_job/common/job_creator/rare_job_creator.ts | 6 +++++- .../new_job/common/job_creator/single_metric_job_creator.ts | 2 +- 6 files changed, 25 insertions(+), 7 deletions(-) diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/advanced_job_creator.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/advanced_job_creator.ts index face450f58cd32..150b57402ee5e3 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/advanced_job_creator.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/advanced_job_creator.ts @@ -11,14 +11,14 @@ import type { Field, Aggregation, SplitField } from '@kbn/ml-anomaly-utils'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { JobCreator } from './job_creator'; -import { +import type { Job, Datafeed, Detector, CustomRule, } from '../../../../../../common/types/anomaly_detection_jobs'; import { createBasicDetector } from './util/default_configs'; -import { JOB_TYPE } from '../../../../../../common/constants/new_job'; +import { CREATED_BY_LABEL, JOB_TYPE } from '../../../../../../common/constants/new_job'; import { getRichDetectors } from './util/general'; import { isValidJson } from '../../../../../../common/util/validation_utils'; @@ -41,6 +41,7 @@ export class AdvancedJobCreator extends JobCreator { constructor(indexPattern: DataView, savedSearch: SavedSearch | null, query: object) { super(indexPattern, savedSearch, query); + this.createdBy = CREATED_BY_LABEL.ADVANCED; this._queryString = JSON.stringify(this._datafeed_config.query); @@ -182,6 +183,7 @@ export class AdvancedJobCreator extends JobCreator { public cloneFromExistingJob(job: Job, datafeed: Datafeed) { this._overrideConfigs(job, datafeed); + this.createdBy = CREATED_BY_LABEL.ADVANCED; const detectors = getRichDetectors(job, datafeed, this.additionalFields, true); // keep track of the custom rules for each detector diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/geo_job_creator.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/geo_job_creator.ts index 596eb56230dc03..59e89070b38dd0 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/geo_job_creator.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/geo_job_creator.ts @@ -9,7 +9,11 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { Field, Aggregation, SplitField, AggFieldPair } from '@kbn/ml-anomaly-utils'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { JobCreator } from './job_creator'; -import { Job, Datafeed, Detector } from '../../../../../../common/types/anomaly_detection_jobs'; +import type { + Job, + Datafeed, + Detector, +} from '../../../../../../common/types/anomaly_detection_jobs'; import { createBasicDetector } from './util/default_configs'; import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job'; import { getRichDetectors } from './util/general'; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/multi_metric_job_creator.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/multi_metric_job_creator.ts index 794057ea209e87..39ad966b595e75 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/multi_metric_job_creator.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/multi_metric_job_creator.ts @@ -9,7 +9,11 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { Field, Aggregation, SplitField, AggFieldPair } from '@kbn/ml-anomaly-utils'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { JobCreator } from './job_creator'; -import { Job, Datafeed, Detector } from '../../../../../../common/types/anomaly_detection_jobs'; +import type { + Job, + Datafeed, + Detector, +} from '../../../../../../common/types/anomaly_detection_jobs'; import { createBasicDetector } from './util/default_configs'; import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job'; import { getRichDetectors } from './util/general'; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/population_job_creator.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/population_job_creator.ts index 09f10b0a2f1aa6..08de5d30d11ebb 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/population_job_creator.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/population_job_creator.ts @@ -9,7 +9,11 @@ import type { DataView } from '@kbn/data-views-plugin/public'; import type { Field, Aggregation, SplitField, AggFieldPair } from '@kbn/ml-anomaly-utils'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { JobCreator } from './job_creator'; -import { Job, Datafeed, Detector } from '../../../../../../common/types/anomaly_detection_jobs'; +import type { + Job, + Datafeed, + Detector, +} from '../../../../../../common/types/anomaly_detection_jobs'; import { createBasicDetector } from './util/default_configs'; import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job'; import { getRichDetectors } from './util/general'; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/rare_job_creator.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/rare_job_creator.ts index f586ec332773da..cc9601fc85634e 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/rare_job_creator.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/rare_job_creator.ts @@ -14,7 +14,11 @@ import { } from '@kbn/ml-anomaly-utils'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { JobCreator } from './job_creator'; -import { Job, Datafeed, Detector } from '../../../../../../common/types/anomaly_detection_jobs'; +import type { + Job, + Datafeed, + Detector, +} from '../../../../../../common/types/anomaly_detection_jobs'; import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job'; import { getRichDetectors, isSparseDataJob } from './util/general'; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/single_metric_job_creator.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/single_metric_job_creator.ts index b0a1a1136bc6b3..07a949b6a34a3c 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/single_metric_job_creator.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/single_metric_job_creator.ts @@ -17,7 +17,7 @@ import { import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { parseInterval } from '../../../../../../common/util/parse_interval'; import { JobCreator } from './job_creator'; -import { +import type { Job, Datafeed, Detector, From 5aadf87bcdae41b23f54e0e918e018e383055e17 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Fri, 22 Sep 2023 12:08:23 +0100 Subject: [PATCH 4/4] tiny refactor --- .../ml/public/application/jobs/jobs_list/components/utils.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js index 7f35ac8e601045..9dfef0ff8b5a3d 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js @@ -241,10 +241,11 @@ export async function cloneJob(jobId) { return; } + const createdBy = originalJob?.custom_settings?.created_by; if ( cloneableJob !== undefined && - originalJob?.custom_settings?.created_by !== undefined && - originalJob?.custom_settings?.created_by !== CREATED_BY_LABEL.ADVANCED + createdBy !== undefined && + createdBy !== CREATED_BY_LABEL.ADVANCED ) { // if the job is from a wizards, i.e. contains a created_by property // use tempJobCloningObjects to temporarily store the job