mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 11:05:39 -04:00
[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:
parent
6cf246b505
commit
302ec109ce
9 changed files with 34 additions and 8 deletions
|
@ -19,6 +19,7 @@ export enum CREATED_BY_LABEL {
|
||||||
SINGLE_METRIC = 'single-metric-wizard',
|
SINGLE_METRIC = 'single-metric-wizard',
|
||||||
MULTI_METRIC = 'multi-metric-wizard',
|
MULTI_METRIC = 'multi-metric-wizard',
|
||||||
POPULATION = 'population-wizard',
|
POPULATION = 'population-wizard',
|
||||||
|
ADVANCED = 'advanced-wizard',
|
||||||
CATEGORIZATION = 'categorization-wizard',
|
CATEGORIZATION = 'categorization-wizard',
|
||||||
RARE = 'rare-wizard',
|
RARE = 'rare-wizard',
|
||||||
GEO = 'geo-wizard',
|
GEO = 'geo-wizard',
|
||||||
|
|
|
@ -24,6 +24,7 @@ import { mlCalendarService } from '../../../services/calendar_service';
|
||||||
import { isPopulatedObject } from '@kbn/ml-is-populated-object';
|
import { isPopulatedObject } from '@kbn/ml-is-populated-object';
|
||||||
import { ML_PAGES } from '../../../../../common/constants/locator';
|
import { ML_PAGES } from '../../../../../common/constants/locator';
|
||||||
import { PLUGIN_ID } from '../../../../../common/constants/app';
|
import { PLUGIN_ID } from '../../../../../common/constants/app';
|
||||||
|
import { CREATED_BY_LABEL } from '../../../../../common/constants/new_job';
|
||||||
|
|
||||||
export function loadFullJob(jobId) {
|
export function loadFullJob(jobId) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
@ -240,7 +241,12 @@ export async function cloneJob(jobId) {
|
||||||
return;
|
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
|
// if the job is from a wizards, i.e. contains a created_by property
|
||||||
// use tempJobCloningObjects to temporarily store the job
|
// use tempJobCloningObjects to temporarily store the job
|
||||||
mlJobService.tempJobCloningObjects.createdBy = originalJob?.custom_settings?.created_by;
|
mlJobService.tempJobCloningObjects.createdBy = originalJob?.custom_settings?.created_by;
|
||||||
|
|
|
@ -11,14 +11,14 @@ import type { Field, Aggregation, SplitField } from '@kbn/ml-anomaly-utils';
|
||||||
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
||||||
|
|
||||||
import { JobCreator } from './job_creator';
|
import { JobCreator } from './job_creator';
|
||||||
import {
|
import type {
|
||||||
Job,
|
Job,
|
||||||
Datafeed,
|
Datafeed,
|
||||||
Detector,
|
Detector,
|
||||||
CustomRule,
|
CustomRule,
|
||||||
} from '../../../../../../common/types/anomaly_detection_jobs';
|
} from '../../../../../../common/types/anomaly_detection_jobs';
|
||||||
import { createBasicDetector } from './util/default_configs';
|
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 { getRichDetectors } from './util/general';
|
||||||
import { isValidJson } from '../../../../../../common/util/validation_utils';
|
import { isValidJson } from '../../../../../../common/util/validation_utils';
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ export class AdvancedJobCreator extends JobCreator {
|
||||||
|
|
||||||
constructor(indexPattern: DataView, savedSearch: SavedSearch | null, query: object) {
|
constructor(indexPattern: DataView, savedSearch: SavedSearch | null, query: object) {
|
||||||
super(indexPattern, savedSearch, query);
|
super(indexPattern, savedSearch, query);
|
||||||
|
this.createdBy = CREATED_BY_LABEL.ADVANCED;
|
||||||
|
|
||||||
this._queryString = JSON.stringify(this._datafeed_config.query);
|
this._queryString = JSON.stringify(this._datafeed_config.query);
|
||||||
|
|
||||||
|
@ -182,6 +183,7 @@ export class AdvancedJobCreator extends JobCreator {
|
||||||
|
|
||||||
public cloneFromExistingJob(job: Job, datafeed: Datafeed) {
|
public cloneFromExistingJob(job: Job, datafeed: Datafeed) {
|
||||||
this._overrideConfigs(job, datafeed);
|
this._overrideConfigs(job, datafeed);
|
||||||
|
this.createdBy = CREATED_BY_LABEL.ADVANCED;
|
||||||
const detectors = getRichDetectors(job, datafeed, this.additionalFields, true);
|
const detectors = getRichDetectors(job, datafeed, this.additionalFields, true);
|
||||||
|
|
||||||
// keep track of the custom rules for each detector
|
// keep track of the custom rules for each detector
|
||||||
|
|
|
@ -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 { Field, Aggregation, SplitField, AggFieldPair } from '@kbn/ml-anomaly-utils';
|
||||||
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
||||||
import { JobCreator } from './job_creator';
|
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 { createBasicDetector } from './util/default_configs';
|
||||||
import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job';
|
import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job';
|
||||||
import { getRichDetectors } from './util/general';
|
import { getRichDetectors } from './util/general';
|
||||||
|
|
|
@ -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 { Field, Aggregation, SplitField, AggFieldPair } from '@kbn/ml-anomaly-utils';
|
||||||
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
||||||
import { JobCreator } from './job_creator';
|
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 { createBasicDetector } from './util/default_configs';
|
||||||
import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job';
|
import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job';
|
||||||
import { getRichDetectors } from './util/general';
|
import { getRichDetectors } from './util/general';
|
||||||
|
|
|
@ -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 { Field, Aggregation, SplitField, AggFieldPair } from '@kbn/ml-anomaly-utils';
|
||||||
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
||||||
import { JobCreator } from './job_creator';
|
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 { createBasicDetector } from './util/default_configs';
|
||||||
import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job';
|
import { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job';
|
||||||
import { getRichDetectors } from './util/general';
|
import { getRichDetectors } from './util/general';
|
||||||
|
|
|
@ -14,7 +14,11 @@ import {
|
||||||
} from '@kbn/ml-anomaly-utils';
|
} from '@kbn/ml-anomaly-utils';
|
||||||
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
||||||
import { JobCreator } from './job_creator';
|
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 { JOB_TYPE, CREATED_BY_LABEL } from '../../../../../../common/constants/new_job';
|
||||||
import { getRichDetectors, isSparseDataJob } from './util/general';
|
import { getRichDetectors, isSparseDataJob } from './util/general';
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ import {
|
||||||
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
|
||||||
import { parseInterval } from '../../../../../../common/util/parse_interval';
|
import { parseInterval } from '../../../../../../common/util/parse_interval';
|
||||||
import { JobCreator } from './job_creator';
|
import { JobCreator } from './job_creator';
|
||||||
import {
|
import type {
|
||||||
Job,
|
Job,
|
||||||
Datafeed,
|
Datafeed,
|
||||||
Detector,
|
Detector,
|
||||||
|
|
|
@ -63,6 +63,7 @@ async function getWizardUrlFromCloningJob(createdBy: string | undefined, dataVie
|
||||||
case CREATED_BY_LABEL.GEO:
|
case CREATED_BY_LABEL.GEO:
|
||||||
page = JOB_TYPE.GEO;
|
page = JOB_TYPE.GEO;
|
||||||
break;
|
break;
|
||||||
|
case CREATED_BY_LABEL.ADVANCED:
|
||||||
default:
|
default:
|
||||||
page = JOB_TYPE.ADVANCED;
|
page = JOB_TYPE.ADVANCED;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue