[ML] Adding created_by job property for the advanced wizard (#167021)

Adds `created_by` property of `advanced-wizard` to all jobs created by
the advanced job wizard.
Previously no `created_by` property was added to these jobs.

When cloning, jobs with no `created_by` property or one with a value of
`advanced-wizard` will be opened in the advanced wizard.

Closes https://github.com/elastic/kibana/issues/166053
This commit is contained in:
James Gowdy 2023-09-26 17:25:25 +01:00 committed by GitHub
parent 6cf246b505
commit 302ec109ce
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 34 additions and 8 deletions

View file

@ -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',

View file

@ -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,12 @@ export async function cloneJob(jobId) {
return;
}
if (cloneableJob !== undefined && originalJob?.custom_settings?.created_by !== undefined) {
const createdBy = originalJob?.custom_settings?.created_by;
if (
cloneableJob !== undefined &&
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
mlJobService.tempJobCloningObjects.createdBy = originalJob?.custom_settings?.created_by;

View file

@ -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

View file

@ -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';

View file

@ -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';

View file

@ -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';

View file

@ -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';

View file

@ -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,

View file

@ -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;