mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[ML] Fix incorrect behaviors for Anomaly Detection jobs when resetting or converting to advanced job (#90078) (#90503)
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
a1af217c61
commit
d2eb2d8dda
4 changed files with 24 additions and 19 deletions
|
@ -373,11 +373,14 @@ export function filterJobs(jobs, clauses) {
|
|||
// start datafeed modal.
|
||||
export function checkForAutoStartDatafeed() {
|
||||
const job = mlJobService.tempJobCloningObjects.job;
|
||||
const datafeed = mlJobService.tempJobCloningObjects.datafeed;
|
||||
if (job !== undefined) {
|
||||
mlJobService.tempJobCloningObjects.job = undefined;
|
||||
const hasDatafeed =
|
||||
typeof job.datafeed_config === 'object' && Object.keys(job.datafeed_config).length > 0;
|
||||
const datafeedId = hasDatafeed ? job.datafeed_config.datafeed_id : '';
|
||||
mlJobService.tempJobCloningObjects.datafeed = undefined;
|
||||
mlJobService.tempJobCloningObjects.createdBy = undefined;
|
||||
|
||||
const hasDatafeed = typeof datafeed === 'object' && Object.keys(datafeed).length > 0;
|
||||
const datafeedId = hasDatafeed ? datafeed.datafeed_id : '';
|
||||
return {
|
||||
id: job.job_id,
|
||||
hasDatafeed,
|
||||
|
|
|
@ -229,17 +229,14 @@ export function isSparseDataJob(job: Job, datafeed: Datafeed): boolean {
|
|||
return false;
|
||||
}
|
||||
|
||||
function stashCombinedJob(
|
||||
function stashJobForCloning(
|
||||
jobCreator: JobCreatorType,
|
||||
skipTimeRangeStep: boolean = false,
|
||||
includeTimeRange: boolean = false
|
||||
) {
|
||||
const combinedJob = {
|
||||
...jobCreator.jobConfig,
|
||||
datafeed_config: jobCreator.datafeedConfig,
|
||||
};
|
||||
|
||||
mlJobService.tempJobCloningObjects.job = combinedJob;
|
||||
mlJobService.tempJobCloningObjects.job = jobCreator.jobConfig;
|
||||
mlJobService.tempJobCloningObjects.datafeed = jobCreator.datafeedConfig;
|
||||
mlJobService.tempJobCloningObjects.createdBy = jobCreator.createdBy ?? undefined;
|
||||
|
||||
// skip over the time picker step of the wizard
|
||||
mlJobService.tempJobCloningObjects.skipTimeRangeStep = skipTimeRangeStep;
|
||||
|
@ -259,21 +256,21 @@ export function convertToMultiMetricJob(
|
|||
) {
|
||||
jobCreator.createdBy = CREATED_BY_LABEL.MULTI_METRIC;
|
||||
jobCreator.modelPlot = false;
|
||||
stashCombinedJob(jobCreator, true, true);
|
||||
stashJobForCloning(jobCreator, true, true);
|
||||
|
||||
navigateToPath(`jobs/new_job/${JOB_TYPE.MULTI_METRIC}`, true);
|
||||
}
|
||||
|
||||
export function convertToAdvancedJob(jobCreator: JobCreatorType, navigateToPath: NavigateToPath) {
|
||||
jobCreator.createdBy = null;
|
||||
stashCombinedJob(jobCreator, true, true);
|
||||
stashJobForCloning(jobCreator, true, true);
|
||||
|
||||
navigateToPath(`jobs/new_job/${JOB_TYPE.ADVANCED}`, true);
|
||||
}
|
||||
|
||||
export function resetJob(jobCreator: JobCreatorType, navigateToPath: NavigateToPath) {
|
||||
jobCreator.jobId = '';
|
||||
stashCombinedJob(jobCreator, true, true);
|
||||
stashJobForCloning(jobCreator, true, true);
|
||||
navigateToPath('/jobs/new_job');
|
||||
}
|
||||
|
||||
|
@ -282,7 +279,7 @@ export function advancedStartDatafeed(
|
|||
navigateToPath: NavigateToPath
|
||||
) {
|
||||
if (jobCreator !== null) {
|
||||
stashCombinedJob(jobCreator, false, false);
|
||||
stashJobForCloning(jobCreator, false, false);
|
||||
}
|
||||
navigateToPath('/jobs');
|
||||
}
|
||||
|
|
|
@ -72,7 +72,10 @@ export const Page: FC<PageProps> = ({ existingJobsAndGroups, jobType }) => {
|
|||
|
||||
let autoSetTimeRange = false;
|
||||
|
||||
if (mlJobService.tempJobCloningObjects.job !== undefined) {
|
||||
if (
|
||||
mlJobService.tempJobCloningObjects.job !== undefined &&
|
||||
mlJobService.tempJobCloningObjects.datafeed !== undefined
|
||||
) {
|
||||
// cloning a job
|
||||
const clonedJob = mlJobService.tempJobCloningObjects.job;
|
||||
const clonedDatafeed = mlJobService.cloneDatafeed(mlJobService.tempJobCloningObjects.datafeed);
|
||||
|
@ -89,6 +92,8 @@ export const Page: FC<PageProps> = ({ existingJobsAndGroups, jobType }) => {
|
|||
|
||||
mlJobService.tempJobCloningObjects.skipTimeRangeStep = false;
|
||||
mlJobService.tempJobCloningObjects.job = undefined;
|
||||
mlJobService.tempJobCloningObjects.datafeed = undefined;
|
||||
mlJobService.tempJobCloningObjects.createdBy = undefined;
|
||||
|
||||
if (
|
||||
mlJobService.tempJobCloningObjects.start !== undefined &&
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
import { SearchResponse } from 'elasticsearch';
|
||||
import { TimeRange } from 'src/plugins/data/common/query/timefilter/types';
|
||||
import { CombinedJob, Datafeed } from '../../../common/types/anomaly_detection_jobs';
|
||||
import { CombinedJob, Datafeed, Job } from '../../../common/types/anomaly_detection_jobs';
|
||||
import { Calendar } from '../../../common/types/calendars';
|
||||
|
||||
export interface ExistingJobsAndGroups {
|
||||
|
@ -21,15 +21,15 @@ declare interface JobService {
|
|||
tempJobCloningObjects: {
|
||||
createdBy?: string;
|
||||
datafeed?: Datafeed;
|
||||
job: any;
|
||||
job?: Job;
|
||||
skipTimeRangeStep: boolean;
|
||||
start?: number;
|
||||
end?: number;
|
||||
calendars: Calendar[] | undefined;
|
||||
};
|
||||
skipTimeRangeStep: boolean;
|
||||
saveNewJob(job: any): Promise<any>;
|
||||
cloneDatafeed(datafeed: any): Datafeed;
|
||||
saveNewJob(job: Job): Promise<any>;
|
||||
cloneDatafeed(Datafeed: Datafeed): Datafeed;
|
||||
openJob(jobId: string): Promise<any>;
|
||||
saveNewDatafeed(datafeedConfig: any, jobId: string): Promise<any>;
|
||||
startDatafeed(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue