From 111665113ba9584ad1921cd13a1d9ea57453ba9e Mon Sep 17 00:00:00 2001 From: Pete Harverson Date: Thu, 6 Dec 2018 17:02:56 +0000 Subject: [PATCH 1/2] [ML] Implement k7 breadcrumbs for ML routes --- x-pack/plugins/ml/public/breadcrumbs.js | 11 +++ .../ml/public/components/nav_menu/nav_menu.js | 84 +++++++++--------- .../ml/public/datavisualizer/breadcrumbs.js | 18 ++++ .../datavisualizer_controller.js | 2 + .../datavisualizer/selector/directive.js | 2 + .../plugins/ml/public/explorer/breadcrumbs.js | 18 ++++ .../ml/public/explorer/explorer_controller.js | 2 + .../public/file_datavisualizer/breadcrumbs.js | 18 ++++ .../file_datavisualizer_directive.js | 2 + x-pack/plugins/ml/public/jobs/breadcrumbs.js | 87 +++++++++++++++++++ .../ml/public/jobs/jobs_list/directive.js | 2 + .../new_job/advanced/new_job_controller.js | 3 + .../create_job/create_job_controller.js | 2 + .../create_job/create_job_controller.js | 2 + .../create_job/create_job_controller.js | 2 + .../create_job/create_job_controller.js | 2 + .../index_or_search_controller.js | 3 + .../steps/job_type/job_type_controller.js | 2 + .../plugins/ml/public/settings/breadcrumbs.js | 77 ++++++++++++++++ .../settings/filter_lists/edit/directive.js | 3 + .../settings/filter_lists/list/directive.js | 2 + .../calendars_list_controller.js | 2 + .../create_calendar_controller.js | 3 + .../ml/public/settings/settings_controller.js | 2 + .../public/timeseriesexplorer/breadcrumbs.js | 18 ++++ .../timeseriesexplorer_controller.js | 2 + 26 files changed, 331 insertions(+), 40 deletions(-) create mode 100644 x-pack/plugins/ml/public/breadcrumbs.js create mode 100644 x-pack/plugins/ml/public/datavisualizer/breadcrumbs.js create mode 100644 x-pack/plugins/ml/public/explorer/breadcrumbs.js create mode 100644 x-pack/plugins/ml/public/file_datavisualizer/breadcrumbs.js create mode 100644 x-pack/plugins/ml/public/jobs/breadcrumbs.js create mode 100644 x-pack/plugins/ml/public/settings/breadcrumbs.js create mode 100644 x-pack/plugins/ml/public/timeseriesexplorer/breadcrumbs.js diff --git a/x-pack/plugins/ml/public/breadcrumbs.js b/x-pack/plugins/ml/public/breadcrumbs.js new file mode 100644 index 0000000000000..f5deeff4cf253 --- /dev/null +++ b/x-pack/plugins/ml/public/breadcrumbs.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + + +export const ML_BREADCRUMB = Object.freeze({ + text: 'Machine Learning', + href: '#/' +}); diff --git a/x-pack/plugins/ml/public/components/nav_menu/nav_menu.js b/x-pack/plugins/ml/public/components/nav_menu/nav_menu.js index 12425b7fa6c54..da2915450449f 100644 --- a/x-pack/plugins/ml/public/components/nav_menu/nav_menu.js +++ b/x-pack/plugins/ml/public/components/nav_menu/nav_menu.js @@ -5,8 +5,6 @@ */ - -import _ from 'lodash'; import $ from 'jquery'; import template from './nav_menu.html'; import uiRouter from 'ui/routes'; @@ -23,8 +21,6 @@ module.directive('mlNavMenu', function (config) { template, link: function (scope, el, attrs) { - - // Tabs scope.name = attrs.name; @@ -43,46 +39,54 @@ module.directive('mlNavMenu', function (config) { scope.disableLinks = (isFullLicense() === false); - // Breadcrumbs - const crumbNames = { - jobs: { label: 'Job Management', url: '#/jobs' }, - new_job: { label: 'Create New Job', url: '#/jobs/new_job' }, - single_metric: { label: 'Single Metric Job', url: '' }, - multi_metric: { label: 'Multi Metric job', url: '' }, - population: { label: 'Population job', url: '' }, - advanced: { label: 'Advanced Job Configuration', url: '' }, - datavisualizer: { label: 'Data Visualizer', url: '' }, - filedatavisualizer: { label: 'File Data Visualizer (Experimental)', url: '' }, - explorer: { label: 'Anomaly Explorer', url: '#/explorer' }, - timeseriesexplorer: { label: 'Single Metric Viewer', url: '#/timeseriesexplorer' }, - settings: { label: 'Settings', url: '#/settings' }, - calendars_list: { label: 'Calendar Management', url: '#/settings/calendars_list' }, - new_calendar: { label: 'New Calendar', url: '#/settings/calendars_list/new_calendar' }, - edit_calendar: { label: 'Edit Calendar', url: '#/settings/calendars_list/edit_calendar' }, - filter_lists: { label: 'Filter Lists', url: '#/settings/filter_lists' }, - new_filter_list: { label: 'New Filter List', url: '#/settings/filter_lists/new' }, - edit_filter_list: { label: 'Edit Filter List', url: '#/settings/filter_lists/edit' }, - }; + // TODO - once the k7design flag is disabled, this should all be removed. + const isK7Design = chrome.getUiSettingsClient().get('k7design', false); + if (isK7Design === false) { + // Breadcrumbs + const crumbNames = { + jobs: { label: 'Job Management', url: '#/jobs' }, + new_job: { label: 'Create New Job', url: '#/jobs/new_job' }, + single_metric: { label: 'Single Metric Job', url: '' }, + multi_metric: { label: 'Multi Metric job', url: '' }, + population: { label: 'Population job', url: '' }, + advanced: { label: 'Advanced Job Configuration', url: '' }, + datavisualizer: { label: 'Data Visualizer', url: '' }, + filedatavisualizer: { label: 'File Data Visualizer (Experimental)', url: '' }, + explorer: { label: 'Anomaly Explorer', url: '#/explorer' }, + timeseriesexplorer: { label: 'Single Metric Viewer', url: '#/timeseriesexplorer' }, + settings: { label: 'Settings', url: '#/settings' }, + calendars_list: { label: 'Calendar Management', url: '#/settings/calendars_list' }, + new_calendar: { label: 'New Calendar', url: '#/settings/calendars_list/new_calendar' }, + edit_calendar: { label: 'Edit Calendar', url: '#/settings/calendars_list/edit_calendar' }, + filter_lists: { label: 'Filter Lists', url: '#/settings/filter_lists' }, + new_filter_list: { label: 'New Filter List', url: '#/settings/filter_lists/new' }, + edit_filter_list: { label: 'Edit Filter List', url: '#/settings/filter_lists/edit' }, + }; - const breadcrumbs = [{ label: 'Machine Learning', url: '#/' }]; + const breadcrumbs = [{ label: 'Machine Learning', url: '#/' }]; - // get crumbs from url - const crumbs = uiRouter.getBreadcrumbs(); - _.each(crumbs, (crumb) => { - breadcrumbs.push(crumbNames[crumb.id]); - }); - scope.breadcrumbs = breadcrumbs.filter(Boolean); + // get crumbs from url + const crumbs = uiRouter.getBreadcrumbs(); + if (crumbs.length > 1) { + crumbs.forEach((crumb) => { + breadcrumbs.push(crumbNames[crumb.id]); + }); + } - config.watch('k7design', (val) => scope.showPluginBreadcrumbs = !val); - chrome.breadcrumbs.set(scope.breadcrumbs.map(b => ({ text: b.label, href: b.url }))); + scope.breadcrumbs = breadcrumbs.filter(Boolean); + + config.watch('k7design', (val) => scope.showPluginBreadcrumbs = !val); + chrome.breadcrumbs.set(scope.breadcrumbs.map(b => ({ text: b.label, href: b.url }))); + + // when the page loads, focus on the first breadcrumb + el.ready(() => { + const $crumbs = $('.kuiLocalBreadcrumbs a'); + if ($crumbs.length) { + $crumbs[0].focus(); + } + }); + } - // when the page loads, focus on the first breadcrumb - el.ready(() => { - const $crumbs = $('.kuiLocalBreadcrumbs a'); - if ($crumbs.length) { - $crumbs[0].focus(); - } - }); } }; }); diff --git a/x-pack/plugins/ml/public/datavisualizer/breadcrumbs.js b/x-pack/plugins/ml/public/datavisualizer/breadcrumbs.js new file mode 100644 index 0000000000000..d7278ee83c90f --- /dev/null +++ b/x-pack/plugins/ml/public/datavisualizer/breadcrumbs.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + + +import { ML_BREADCRUMB } from '../breadcrumbs'; + + +export function getDataVisualizerBreadcrumbs() { + // Whilst top level nav menu with tabs remains, + // use root ML breadcrumb. + return [ + ML_BREADCRUMB + ]; +} + diff --git a/x-pack/plugins/ml/public/datavisualizer/datavisualizer_controller.js b/x-pack/plugins/ml/public/datavisualizer/datavisualizer_controller.js index 48ea057218cac..f26118647cad1 100644 --- a/x-pack/plugins/ml/public/datavisualizer/datavisualizer_controller.js +++ b/x-pack/plugins/ml/public/datavisualizer/datavisualizer_controller.js @@ -22,6 +22,7 @@ import { decorateQuery, luceneStringToDsl } from '@kbn/es-query'; import { notify, toastNotifications } from 'ui/notify'; import { ML_JOB_FIELD_TYPES, KBN_FIELD_TYPES } from 'plugins/ml/../common/constants/field_types'; +import { getDataVisualizerBreadcrumbs } from './breadcrumbs'; import { kbnTypeToMLJobType } from 'plugins/ml/util/field_types_utils'; import { IntervalHelperProvider } from 'plugins/ml/util/ml_time_buckets'; import { checkBasicLicense, isFullLicense } from 'plugins/ml/license/check_license'; @@ -36,6 +37,7 @@ import template from './datavisualizer.html'; uiRoutes .when('/jobs/new_job/datavisualizer', { template, + k7Breadcrumbs: getDataVisualizerBreadcrumbs, resolve: { CheckLicense: checkBasicLicense, privileges: checkGetJobsPrivilege, diff --git a/x-pack/plugins/ml/public/datavisualizer/selector/directive.js b/x-pack/plugins/ml/public/datavisualizer/selector/directive.js index 206ebcd96ed86..7fd91f5c1333c 100644 --- a/x-pack/plugins/ml/public/datavisualizer/selector/directive.js +++ b/x-pack/plugins/ml/public/datavisualizer/selector/directive.js @@ -9,6 +9,7 @@ import 'ngreact'; import { uiModules } from 'ui/modules'; const module = uiModules.get('apps/ml', ['react']); +import { getDataVisualizerBreadcrumbs } from '../breadcrumbs'; import { checkBasicLicense } from 'plugins/ml/license/check_license'; import { checkFindFileStructurePrivilege } from 'plugins/ml/privilege/check_privilege'; import { initPromise } from 'plugins/ml/util/promise'; @@ -20,6 +21,7 @@ const template = ``; uiRoutes .when('/jobs/?', { template, + k7Breadcrumbs: getJobManagementBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, diff --git a/x-pack/plugins/ml/public/jobs/new_job/advanced/new_job_controller.js b/x-pack/plugins/ml/public/jobs/new_job/advanced/new_job_controller.js index db1a1426c4714..ac366227bb075 100644 --- a/x-pack/plugins/ml/public/jobs/new_job/advanced/new_job_controller.js +++ b/x-pack/plugins/ml/public/jobs/new_job/advanced/new_job_controller.js @@ -18,6 +18,7 @@ import { checkFullLicense } from 'plugins/ml/license/check_license'; import { checkCreateJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; import template from './new_job.html'; import saveStatusTemplate from 'plugins/ml/jobs/new_job/advanced/save_status_modal/save_status_modal.html'; +import { getAdvancedJobConfigurationBreadcrumbs } from 'plugins/ml/jobs/breadcrumbs'; import { SearchItemsProvider, createJobForSaving, @@ -42,6 +43,7 @@ import { initPromise } from 'plugins/ml/util/promise'; uiRoutes .when('/jobs/new_job/advanced', { template, + k7Breadcrumbs: getAdvancedJobConfigurationBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkCreateJobsPrivilege, @@ -55,6 +57,7 @@ uiRoutes }) .when('/jobs/new_job/advanced/:jobId', { template, + k7Breadcrumbs: getAdvancedJobConfigurationBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkCreateJobsPrivilege, diff --git a/x-pack/plugins/ml/public/jobs/new_job/simple/multi_metric/create_job/create_job_controller.js b/x-pack/plugins/ml/public/jobs/new_job/simple/multi_metric/create_job/create_job_controller.js index b40b0947b11eb..d46e228a050cd 100644 --- a/x-pack/plugins/ml/public/jobs/new_job/simple/multi_metric/create_job/create_job_controller.js +++ b/x-pack/plugins/ml/public/jobs/new_job/simple/multi_metric/create_job/create_job_controller.js @@ -19,6 +19,7 @@ import uiRoutes from 'ui/routes'; import { checkLicenseExpired } from 'plugins/ml/license/check_license'; import { checkCreateJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; import { IntervalHelperProvider } from 'plugins/ml/util/ml_time_buckets'; +import { getCreateMultiMetricJobBreadcrumbs } from 'plugins/ml/jobs/breadcrumbs'; import { filterAggTypes } from 'plugins/ml/jobs/new_job/simple/components/utils/filter_agg_types'; import { validateJob } from 'plugins/ml/jobs/new_job/simple/components/utils/validate_job'; import { adjustIntervalDisplayed } from 'plugins/ml/jobs/new_job/simple/components/utils/adjust_interval'; @@ -47,6 +48,7 @@ import { timefilter } from 'ui/timefilter'; uiRoutes .when('/jobs/new_job/simple/multi_metric', { template, + k7Breadcrumbs: getCreateMultiMetricJobBreadcrumbs, resolve: { CheckLicense: checkLicenseExpired, privileges: checkCreateJobsPrivilege, diff --git a/x-pack/plugins/ml/public/jobs/new_job/simple/population/create_job/create_job_controller.js b/x-pack/plugins/ml/public/jobs/new_job/simple/population/create_job/create_job_controller.js index 8bef479ed0b65..47fc87cb00ecc 100644 --- a/x-pack/plugins/ml/public/jobs/new_job/simple/population/create_job/create_job_controller.js +++ b/x-pack/plugins/ml/public/jobs/new_job/simple/population/create_job/create_job_controller.js @@ -19,6 +19,7 @@ import uiRoutes from 'ui/routes'; import { checkLicenseExpired } from 'plugins/ml/license/check_license'; import { checkCreateJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; import { IntervalHelperProvider } from 'plugins/ml/util/ml_time_buckets'; +import { getCreatePopulationJobBreadcrumbs } from 'plugins/ml/jobs/breadcrumbs'; import { filterAggTypes } from 'plugins/ml/jobs/new_job/simple/components/utils/filter_agg_types'; import { validateJob } from 'plugins/ml/jobs/new_job/simple/components/utils/validate_job'; import { adjustIntervalDisplayed } from 'plugins/ml/jobs/new_job/simple/components/utils/adjust_interval'; @@ -46,6 +47,7 @@ import { timefilter } from 'ui/timefilter'; uiRoutes .when('/jobs/new_job/simple/population', { template, + k7Breadcrumbs: getCreatePopulationJobBreadcrumbs, resolve: { CheckLicense: checkLicenseExpired, privileges: checkCreateJobsPrivilege, diff --git a/x-pack/plugins/ml/public/jobs/new_job/simple/recognize/create_job/create_job_controller.js b/x-pack/plugins/ml/public/jobs/new_job/simple/recognize/create_job/create_job_controller.js index 21580cd85cf6d..47265c841394c 100644 --- a/x-pack/plugins/ml/public/jobs/new_job/simple/recognize/create_job/create_job_controller.js +++ b/x-pack/plugins/ml/public/jobs/new_job/simple/recognize/create_job/create_job_controller.js @@ -10,6 +10,7 @@ import _ from 'lodash'; import angular from 'angular'; import dateMath from '@elastic/datemath'; import { isJobIdValid, prefixDatafeedId } from 'plugins/ml/../common/util/job_utils'; +import { getCreateRecognizerJobBreadcrumbs } from 'plugins/ml/jobs/breadcrumbs'; import { SearchItemsProvider, addNewJobToRecentlyAccessed } from 'plugins/ml/jobs/new_job/utils/new_job_utils'; @@ -29,6 +30,7 @@ import { timefilter } from 'ui/timefilter'; uiRoutes .when('/jobs/new_job/simple/recognize', { template, + k7Breadcrumbs: getCreateRecognizerJobBreadcrumbs, resolve: { CheckLicense: checkLicenseExpired, privileges: checkCreateJobsPrivilege, diff --git a/x-pack/plugins/ml/public/jobs/new_job/simple/single_metric/create_job/create_job_controller.js b/x-pack/plugins/ml/public/jobs/new_job/simple/single_metric/create_job/create_job_controller.js index f979ee6023c65..a5a0cfce6a6bc 100644 --- a/x-pack/plugins/ml/public/jobs/new_job/simple/single_metric/create_job/create_job_controller.js +++ b/x-pack/plugins/ml/public/jobs/new_job/simple/single_metric/create_job/create_job_controller.js @@ -20,6 +20,7 @@ import { getSafeAggregationName } from 'plugins/ml/../common/util/job_utils'; import { checkLicenseExpired } from 'plugins/ml/license/check_license'; import { checkCreateJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; import { IntervalHelperProvider } from 'plugins/ml/util/ml_time_buckets'; +import { getCreateSingleMetricJobBreadcrumbs } from 'plugins/ml/jobs/breadcrumbs'; import { filterAggTypes } from 'plugins/ml/jobs/new_job/simple/components/utils/filter_agg_types'; import { validateJob } from 'plugins/ml/jobs/new_job/simple/components/utils/validate_job'; import { adjustIntervalDisplayed } from 'plugins/ml/jobs/new_job/simple/components/utils/adjust_interval'; @@ -48,6 +49,7 @@ import { timefilter } from 'ui/timefilter'; uiRoutes .when('/jobs/new_job/simple/single_metric', { template, + k7Breadcrumbs: getCreateSingleMetricJobBreadcrumbs, resolve: { CheckLicense: checkLicenseExpired, privileges: checkCreateJobsPrivilege, diff --git a/x-pack/plugins/ml/public/jobs/new_job/wizard/steps/index_or_search/index_or_search_controller.js b/x-pack/plugins/ml/public/jobs/new_job/wizard/steps/index_or_search/index_or_search_controller.js index a3c3583e7d3d4..50004a351c8d2 100644 --- a/x-pack/plugins/ml/public/jobs/new_job/wizard/steps/index_or_search/index_or_search_controller.js +++ b/x-pack/plugins/ml/public/jobs/new_job/wizard/steps/index_or_search/index_or_search_controller.js @@ -13,6 +13,7 @@ import uiRoutes from 'ui/routes'; import { checkLicenseExpired, checkBasicLicense } from 'plugins/ml/license/check_license'; +import { getCreateJobBreadcrumbs, getDataVisualizerIndexOrSearchBreadcrumbs } from 'plugins/ml/jobs/breadcrumbs'; import { preConfiguredJobRedirect } from 'plugins/ml/jobs/new_job/wizard/preconfigured_job_redirect'; import { checkCreateJobsPrivilege, checkFindFileStructurePrivilege } from 'plugins/ml/privilege/check_privilege'; import { loadIndexPatterns, getIndexPatterns } from 'plugins/ml/util/index_utils'; @@ -29,6 +30,7 @@ uiRoutes uiRoutes .when('/jobs/new_job/step/index_or_search', { template, + k7Breadcrumbs: getCreateJobBreadcrumbs, resolve: { CheckLicense: checkLicenseExpired, privileges: checkCreateJobsPrivilege, @@ -43,6 +45,7 @@ uiRoutes uiRoutes .when('/datavisualizer_index_select', { template, + k7Breadcrumbs: getDataVisualizerIndexOrSearchBreadcrumbs, resolve: { CheckLicense: checkBasicLicense, privileges: checkFindFileStructurePrivilege, diff --git a/x-pack/plugins/ml/public/jobs/new_job/wizard/steps/job_type/job_type_controller.js b/x-pack/plugins/ml/public/jobs/new_job/wizard/steps/job_type/job_type_controller.js index 87b0f266af4ab..df62094fe5c9e 100644 --- a/x-pack/plugins/ml/public/jobs/new_job/wizard/steps/job_type/job_type_controller.js +++ b/x-pack/plugins/ml/public/jobs/new_job/wizard/steps/job_type/job_type_controller.js @@ -14,6 +14,7 @@ import uiRoutes from 'ui/routes'; import { checkLicenseExpired } from 'plugins/ml/license/check_license'; import { checkCreateJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; +import { getCreateJobBreadcrumbs } from 'plugins/ml/jobs/breadcrumbs'; import { SearchItemsProvider } from 'plugins/ml/jobs/new_job/utils/new_job_utils'; import { loadCurrentIndexPattern, loadCurrentSavedSearch, timeBasedIndexCheck } from 'plugins/ml/util/index_utils'; import { addItemToRecentlyAccessed } from 'plugins/ml/util/recently_accessed'; @@ -25,6 +26,7 @@ import { timefilter } from 'ui/timefilter'; uiRoutes .when('/jobs/new_job/step/job_type', { template, + k7Breadcrumbs: getCreateJobBreadcrumbs, resolve: { CheckLicense: checkLicenseExpired, privileges: checkCreateJobsPrivilege, diff --git a/x-pack/plugins/ml/public/settings/breadcrumbs.js b/x-pack/plugins/ml/public/settings/breadcrumbs.js new file mode 100644 index 0000000000000..035e7ebf5db7a --- /dev/null +++ b/x-pack/plugins/ml/public/settings/breadcrumbs.js @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + + +import { ML_BREADCRUMB } from '../breadcrumbs'; + + +export function getSettingsBreadcrumbs() { + // Whilst top level nav menu with tabs remains, + // use root ML breadcrumb. + return [ + ML_BREADCRUMB + ]; +} + +export function getCalendarManagementBreadcrumbs() { + return [ + ...getSettingsBreadcrumbs(), + { + text: 'Calendar management', + href: '#/settings/calendars_list' + } + ]; +} + +export function getCreateCalendarBreadcrumbs() { + return [ + ...getCalendarManagementBreadcrumbs(), + { + text: 'Create calendar', + href: '#/settings/calendars_list/new_calendar' + } + ]; +} + +export function getEditCalendarBreadcrumbs() { + return [ + ...getCalendarManagementBreadcrumbs(), + { + text: 'Edit calendar', + href: '#/settings/calendars_list/edit_calendar' + } + ]; +} + +export function getFilterListsBreadcrumbs() { + return [ + ...getSettingsBreadcrumbs(), + { + text: 'Filter lists', + href: '#/settings/filter_lists' + } + ]; +} + +export function getCreateFilterListBreadcrumbs() { + return [ + ...getFilterListsBreadcrumbs(), + { + text: 'Create filter list', + href: '#/settings/filter_lists/new' + } + ]; +} + +export function getEditFilterListBreadcrumbs() { + return [ + ...getFilterListsBreadcrumbs(), + { + text: 'Edit filter list', + href: '#/settings/filter_lists/edit' + } + ]; +} diff --git a/x-pack/plugins/ml/public/settings/filter_lists/edit/directive.js b/x-pack/plugins/ml/public/settings/filter_lists/edit/directive.js index a72eae02c0ab1..a8bc48010e846 100644 --- a/x-pack/plugins/ml/public/settings/filter_lists/edit/directive.js +++ b/x-pack/plugins/ml/public/settings/filter_lists/edit/directive.js @@ -12,6 +12,7 @@ import ReactDOM from 'react-dom'; import { uiModules } from 'ui/modules'; const module = uiModules.get('apps/ml', ['react']); +import { getCreateFilterListBreadcrumbs, getEditFilterListBreadcrumbs } from '../../breadcrumbs'; import { checkFullLicense } from 'plugins/ml/license/check_license'; import { checkGetJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; import { getMlNodeCount } from 'plugins/ml/ml_nodes_check/check_ml_nodes'; @@ -29,6 +30,7 @@ const template = ` uiRoutes .when('/settings/filter_lists/new_filter_list', { template, + k7Breadcrumbs: getCreateFilterListBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, @@ -38,6 +40,7 @@ uiRoutes }) .when('/settings/filter_lists/edit_filter_list/:filterId', { template, + k7Breadcrumbs: getEditFilterListBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, diff --git a/x-pack/plugins/ml/public/settings/filter_lists/list/directive.js b/x-pack/plugins/ml/public/settings/filter_lists/list/directive.js index df54a65a5ccc5..60de17ce8f7a7 100644 --- a/x-pack/plugins/ml/public/settings/filter_lists/list/directive.js +++ b/x-pack/plugins/ml/public/settings/filter_lists/list/directive.js @@ -12,6 +12,7 @@ import ReactDOM from 'react-dom'; import { uiModules } from 'ui/modules'; const module = uiModules.get('apps/ml', ['react']); +import { getFilterListsBreadcrumbs } from '../../breadcrumbs'; import { checkFullLicense } from 'plugins/ml/license/check_license'; import { checkGetJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; import { getMlNodeCount } from 'plugins/ml/ml_nodes_check/check_ml_nodes'; @@ -29,6 +30,7 @@ const template = ` uiRoutes .when('/settings/filter_lists', { template, + k7Breadcrumbs: getFilterListsBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, diff --git a/x-pack/plugins/ml/public/settings/scheduled_events/calendars_list/calendars_list_controller.js b/x-pack/plugins/ml/public/settings/scheduled_events/calendars_list/calendars_list_controller.js index 03cb20d6255f8..eff4f9843ab51 100644 --- a/x-pack/plugins/ml/public/settings/scheduled_events/calendars_list/calendars_list_controller.js +++ b/x-pack/plugins/ml/public/settings/scheduled_events/calendars_list/calendars_list_controller.js @@ -13,6 +13,7 @@ import 'ui/pager'; import 'ui/sortable_column'; import uiRoutes from 'ui/routes'; +import { getCalendarManagementBreadcrumbs } from '../../breadcrumbs'; import { checkFullLicense } from 'plugins/ml/license/check_license'; import { checkGetJobsPrivilege, checkPermission } from 'plugins/ml/privilege/check_privilege'; import { getMlNodeCount, mlNodesAvailable } from 'plugins/ml/ml_nodes_check/check_ml_nodes'; @@ -27,6 +28,7 @@ import { timefilter } from 'ui/timefilter'; uiRoutes .when('/settings/calendars_list', { template, + k7Breadcrumbs: getCalendarManagementBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, diff --git a/x-pack/plugins/ml/public/settings/scheduled_events/new_calendar/create_calendar_controller.js b/x-pack/plugins/ml/public/settings/scheduled_events/new_calendar/create_calendar_controller.js index 55f4e813c7bbc..7a6e363aa1909 100644 --- a/x-pack/plugins/ml/public/settings/scheduled_events/new_calendar/create_calendar_controller.js +++ b/x-pack/plugins/ml/public/settings/scheduled_events/new_calendar/create_calendar_controller.js @@ -15,6 +15,7 @@ import 'plugins/ml/settings/scheduled_events/components/events_list'; import { validateCalendarId } from 'plugins/ml/settings/scheduled_events/components/utils/validate_calendar'; import uiRoutes from 'ui/routes'; +import { getCreateCalendarBreadcrumbs, getEditCalendarBreadcrumbs } from '../../breadcrumbs'; import { checkFullLicense } from 'plugins/ml/license/check_license'; import { checkGetJobsPrivilege } from 'plugins/ml/privilege/check_privilege'; import { checkMlNodesAvailable } from 'plugins/ml/ml_nodes_check/check_ml_nodes'; @@ -29,6 +30,7 @@ import template from './create_calendar.html'; uiRoutes .when('/settings/calendars_list/new_calendar', { template, + k7Breadcrumbs: getCreateCalendarBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, @@ -38,6 +40,7 @@ uiRoutes }) .when('/settings/calendars_list/edit_calendar/:calendarId', { template, + k7Breadcrumbs: getEditCalendarBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, diff --git a/x-pack/plugins/ml/public/settings/settings_controller.js b/x-pack/plugins/ml/public/settings/settings_controller.js index b4c0e123ef1e5..174efc934e921 100644 --- a/x-pack/plugins/ml/public/settings/settings_controller.js +++ b/x-pack/plugins/ml/public/settings/settings_controller.js @@ -7,6 +7,7 @@ import uiRoutes from 'ui/routes'; +import { getSettingsBreadcrumbs } from './breadcrumbs'; import { checkFullLicense } from 'plugins/ml/license/check_license'; import { checkGetJobsPrivilege, checkPermission } from 'plugins/ml/privilege/check_privilege'; import { getMlNodeCount } from 'plugins/ml/ml_nodes_check/check_ml_nodes'; @@ -19,6 +20,7 @@ import { timefilter } from 'ui/timefilter'; uiRoutes .when('/settings', { template, + k7Breadcrumbs: getSettingsBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, diff --git a/x-pack/plugins/ml/public/timeseriesexplorer/breadcrumbs.js b/x-pack/plugins/ml/public/timeseriesexplorer/breadcrumbs.js new file mode 100644 index 0000000000000..e0e5e5d1431a5 --- /dev/null +++ b/x-pack/plugins/ml/public/timeseriesexplorer/breadcrumbs.js @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + + +import { ML_BREADCRUMB } from '../breadcrumbs'; + + +export function getSingleMetricViewerBreadcrumbs() { + // Whilst top level nav menu with tabs remains, + // use root ML breadcrumb. + return [ + ML_BREADCRUMB + ]; +} + diff --git a/x-pack/plugins/ml/public/timeseriesexplorer/timeseriesexplorer_controller.js b/x-pack/plugins/ml/public/timeseriesexplorer/timeseriesexplorer_controller.js index 44b7d59fe504b..c47a931d87a08 100644 --- a/x-pack/plugins/ml/public/timeseriesexplorer/timeseriesexplorer_controller.js +++ b/x-pack/plugins/ml/public/timeseriesexplorer/timeseriesexplorer_controller.js @@ -30,6 +30,7 @@ import { isModelPlotEnabled, mlFunctionToESAggregation } from 'plugins/ml/../common/util/job_utils'; import { loadIndexPatterns, getIndexPatterns } from 'plugins/ml/util/index_utils'; +import { getSingleMetricViewerBreadcrumbs } from './breadcrumbs'; import { createTimeSeriesJobData, processForecastResults, @@ -53,6 +54,7 @@ import { initPromise } from 'plugins/ml/util/promise'; uiRoutes .when('/timeseriesexplorer/?', { template, + k7Breadcrumbs: getSingleMetricViewerBreadcrumbs, resolve: { CheckLicense: checkFullLicense, privileges: checkGetJobsPrivilege, From f92e5d6caa5370bf8d6f14f9621616fcf49fecfb Mon Sep 17 00:00:00 2001 From: Pete Harverson Date: Fri, 7 Dec 2018 08:41:45 +0000 Subject: [PATCH 2/2] [ML] Remove duplicate nouns from jobs and settings breadcrumbs --- x-pack/plugins/ml/public/jobs/breadcrumbs.js | 8 ++++---- x-pack/plugins/ml/public/settings/breadcrumbs.js | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/ml/public/jobs/breadcrumbs.js b/x-pack/plugins/ml/public/jobs/breadcrumbs.js index de810c5433146..4d49373e1a945 100644 --- a/x-pack/plugins/ml/public/jobs/breadcrumbs.js +++ b/x-pack/plugins/ml/public/jobs/breadcrumbs.js @@ -30,7 +30,7 @@ export function getCreateSingleMetricJobBreadcrumbs() { return [ ...getCreateJobBreadcrumbs(), { - text: 'Single metric job', + text: 'Single metric', href: '' } ]; @@ -40,7 +40,7 @@ export function getCreateMultiMetricJobBreadcrumbs() { return [ ...getCreateJobBreadcrumbs(), { - text: 'Multi metric job', + text: 'Multi metric', href: '' } ]; @@ -50,7 +50,7 @@ export function getCreatePopulationJobBreadcrumbs() { return [ ...getCreateJobBreadcrumbs(), { - text: 'Population job', + text: 'Population', href: '' } ]; @@ -60,7 +60,7 @@ export function getAdvancedJobConfigurationBreadcrumbs() { return [ ...getCreateJobBreadcrumbs(), { - text: 'Advanced job configuration', + text: 'Advanced configuration', href: '' } ]; diff --git a/x-pack/plugins/ml/public/settings/breadcrumbs.js b/x-pack/plugins/ml/public/settings/breadcrumbs.js index 035e7ebf5db7a..2fa1a6e782f03 100644 --- a/x-pack/plugins/ml/public/settings/breadcrumbs.js +++ b/x-pack/plugins/ml/public/settings/breadcrumbs.js @@ -30,7 +30,7 @@ export function getCreateCalendarBreadcrumbs() { return [ ...getCalendarManagementBreadcrumbs(), { - text: 'Create calendar', + text: 'Create', href: '#/settings/calendars_list/new_calendar' } ]; @@ -40,7 +40,7 @@ export function getEditCalendarBreadcrumbs() { return [ ...getCalendarManagementBreadcrumbs(), { - text: 'Edit calendar', + text: 'Edit', href: '#/settings/calendars_list/edit_calendar' } ]; @@ -60,7 +60,7 @@ export function getCreateFilterListBreadcrumbs() { return [ ...getFilterListsBreadcrumbs(), { - text: 'Create filter list', + text: 'Create', href: '#/settings/filter_lists/new' } ]; @@ -70,7 +70,7 @@ export function getEditFilterListBreadcrumbs() { return [ ...getFilterListsBreadcrumbs(), { - text: 'Edit filter list', + text: 'Edit', href: '#/settings/filter_lists/edit' } ];