"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.singleMetricRouteFactory = exports.rareRouteFactory = exports.populationRouteFactory = exports.multiMetricRouteFactoryRedirect = exports.multiMetricRouteFactory = exports.geoRouteFactory = exports.categorizationRouteFactory = exports.advancedRouteFactoryRedirect = exports.advancedRouteFactory = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _queryString = require("query-string"); var _react = _interopRequireDefault(require("react")); var _i18n = require("@kbn/i18n"); var _reactRouterDom = require("react-router-dom"); var _data_source_context = require("../../../contexts/ml/data_source_context"); var _kibana = require("../../../contexts/kibana"); var _resolvers = require("../../resolvers"); var _router = require("../../router"); var _use_resolver = require("../../use_resolver"); var _new_job = require("../../../jobs/new_job/pages/new_job"); var _new_job2 = require("../../../../../common/constants/new_job"); var _job_service = require("../../../services/job_service"); var _load_new_job_capabilities = require("../../../services/new_job_capabilities/load_new_job_capabilities"); var _check_capabilities = require("../../../capabilities/check_capabilities"); var _breadcrumbs = require("../../breadcrumbs"); var _use_create_url = require("../../../contexts/kibana/use_create_url"); var _locator = require("../../../../../common/constants/locator"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ const getBaseBreadcrumbs = (navigateToPath, basePath) => [(0, _breadcrumbs.getBreadcrumbWithUrlForApp)('ML_BREADCRUMB', navigateToPath, basePath), (0, _breadcrumbs.getBreadcrumbWithUrlForApp)('ANOMALY_DETECTION_BREADCRUMB', navigateToPath, basePath), (0, _breadcrumbs.getBreadcrumbWithUrlForApp)('CREATE_JOB_BREADCRUMB', navigateToPath, basePath)]; const getSingleMetricBreadcrumbs = (navigateToPath, basePath) => [...getBaseBreadcrumbs(navigateToPath, basePath), { text: _i18n.i18n.translate('xpack.ml.jobsBreadcrumbs.singleMetricLabel', { defaultMessage: 'Single metric' }), href: '' }]; const getMultiMetricBreadcrumbs = (navigateToPath, basePath) => [...getBaseBreadcrumbs(navigateToPath, basePath), { text: _i18n.i18n.translate('xpack.ml.jobsBreadcrumbs.multiMetricLabel', { defaultMessage: 'Multi-metric' }), href: '' }]; const getPopulationBreadcrumbs = (navigateToPath, basePath) => [...getBaseBreadcrumbs(navigateToPath, basePath), { text: _i18n.i18n.translate('xpack.ml.jobsBreadcrumbs.populationLabel', { defaultMessage: 'Population' }), href: '' }]; const getAdvancedBreadcrumbs = (navigateToPath, basePath) => [...getBaseBreadcrumbs(navigateToPath, basePath), { text: _i18n.i18n.translate('xpack.ml.jobsBreadcrumbs.advancedConfigurationLabel', { defaultMessage: 'Advanced configuration' }), href: '' }]; const getCategorizationBreadcrumbs = (navigateToPath, basePath) => [...getBaseBreadcrumbs(navigateToPath, basePath), { text: _i18n.i18n.translate('xpack.ml.jobsBreadcrumbs.categorizationLabel', { defaultMessage: 'Categorization' }), href: '' }]; const getRareBreadcrumbs = (navigateToPath, basePath) => [...getBaseBreadcrumbs(navigateToPath, basePath), { text: _i18n.i18n.translate('xpack.ml.jobsBreadcrumbs.rareLabel', { defaultMessage: 'Rare' }), href: '' }]; const getGeoBreadcrumbs = (navigateToPath, basePath) => [...getBaseBreadcrumbs(navigateToPath, basePath), { text: _i18n.i18n.translate('xpack.ml.jobsBreadcrumbs.geoLabel', { defaultMessage: 'Geo' }), href: '' }]; const singleMetricRouteFactory = (navigateToPath, basePath) => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_SINGLE_METRIC), render: (props, deps) => /*#__PURE__*/_react.default.createElement(PageWrapper, (0, _extends2.default)({}, props, { jobType: _new_job2.JOB_TYPE.SINGLE_METRIC, deps: deps })), breadcrumbs: getSingleMetricBreadcrumbs(navigateToPath, basePath) }); exports.singleMetricRouteFactory = singleMetricRouteFactory; const multiMetricRouteFactory = (navigateToPath, basePath) => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_MULTI_METRIC), render: (props, deps) => /*#__PURE__*/_react.default.createElement(PageWrapper, (0, _extends2.default)({}, props, { jobType: _new_job2.JOB_TYPE.MULTI_METRIC, deps: deps })), breadcrumbs: getMultiMetricBreadcrumbs(navigateToPath, basePath) }); // redirect route to reset the job wizard when converting to multi metric job exports.multiMetricRouteFactory = multiMetricRouteFactory; const multiMetricRouteFactoryRedirect = () => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_MULTI_METRIC), render: props => { return /*#__PURE__*/_react.default.createElement(_reactRouterDom.Redirect, { to: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_MULTI_METRIC, props.location.search) }); }, breadcrumbs: [] }); exports.multiMetricRouteFactoryRedirect = multiMetricRouteFactoryRedirect; const populationRouteFactory = (navigateToPath, basePath) => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_POPULATION), render: (props, deps) => /*#__PURE__*/_react.default.createElement(PageWrapper, (0, _extends2.default)({}, props, { jobType: _new_job2.JOB_TYPE.POPULATION, deps: deps })), breadcrumbs: getPopulationBreadcrumbs(navigateToPath, basePath) }); exports.populationRouteFactory = populationRouteFactory; const advancedRouteFactory = (navigateToPath, basePath) => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_ADVANCED), render: (props, deps) => /*#__PURE__*/_react.default.createElement(PageWrapper, (0, _extends2.default)({}, props, { jobType: _new_job2.JOB_TYPE.ADVANCED, deps: deps })), breadcrumbs: getAdvancedBreadcrumbs(navigateToPath, basePath) }); // redirect route to reset the job wizard when converting to advanced job exports.advancedRouteFactory = advancedRouteFactory; const advancedRouteFactoryRedirect = () => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_ADVANCED), render: props => /*#__PURE__*/_react.default.createElement(_reactRouterDom.Redirect, { to: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_ADVANCED, props.location.search) }), breadcrumbs: [] }); exports.advancedRouteFactoryRedirect = advancedRouteFactoryRedirect; const categorizationRouteFactory = (navigateToPath, basePath) => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_CATEGORIZATION), render: (props, deps) => /*#__PURE__*/_react.default.createElement(PageWrapper, (0, _extends2.default)({}, props, { jobType: _new_job2.JOB_TYPE.CATEGORIZATION, deps: deps })), breadcrumbs: getCategorizationBreadcrumbs(navigateToPath, basePath) }); exports.categorizationRouteFactory = categorizationRouteFactory; const rareRouteFactory = (navigateToPath, basePath) => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_RARE), render: (props, deps) => /*#__PURE__*/_react.default.createElement(PageWrapper, (0, _extends2.default)({}, props, { jobType: _new_job2.JOB_TYPE.RARE, deps: deps })), breadcrumbs: getRareBreadcrumbs(navigateToPath, basePath) }); exports.rareRouteFactory = rareRouteFactory; const geoRouteFactory = (navigateToPath, basePath) => ({ path: (0, _router.createPath)(_locator.ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_GEO), render: (props, deps) => /*#__PURE__*/_react.default.createElement(PageWrapper, (0, _extends2.default)({}, props, { jobType: _new_job2.JOB_TYPE.GEO, deps: deps })), breadcrumbs: getGeoBreadcrumbs(navigateToPath, basePath) }); exports.geoRouteFactory = geoRouteFactory; const PageWrapper = ({ location, jobType }) => { const redirectToJobsManagementPage = (0, _use_create_url.useCreateAndNavigateToMlLink)(_locator.ML_PAGES.ANOMALY_DETECTION_JOBS_MANAGE); const { index, savedSearchId } = (0, _queryString.parse)(location.search, { sort: false }); const { services: { data: { dataViews: dataViewsService }, savedSearch: savedSearchService } } = (0, _kibana.useMlKibana)(); const { context, results } = (0, _use_resolver.useRouteResolver)('full', ['canGetJobs', 'canCreateJob'], { ...(0, _resolvers.basicResolvers)(), // TODO useRouteResolver should be responsible for the redirect privileges: () => (0, _check_capabilities.checkCreateJobsCapabilitiesResolver)(redirectToJobsManagementPage), jobCaps: () => (0, _load_new_job_capabilities.loadNewJobCapabilities)(index, savedSearchId, dataViewsService, savedSearchService, _load_new_job_capabilities.ANOMALY_DETECTOR), existingJobsAndGroups: _job_service.mlJobService.getJobAndGroupIds }); return /*#__PURE__*/_react.default.createElement(_router.PageLoader, { context: context }, /*#__PURE__*/_react.default.createElement(_data_source_context.DataSourceContextProvider, null, results ? /*#__PURE__*/_react.default.createElement(_new_job.Page, { jobType: jobType, existingJobsAndGroups: results.existingJobsAndGroups }) : null)); };