diff --git a/src/plugins/kibana/index.js b/src/plugins/kibana/index.js index 045b442374f39..61b83cb38c9d0 100644 --- a/src/plugins/kibana/index.js +++ b/src/plugins/kibana/index.js @@ -19,14 +19,13 @@ module.exports = function (kibana) { title: 'Kibana', listed: false, description: 'the kibana you know and love', - //icon: 'plugins/kibana/settings/sections/about/barcode.svg', main: 'plugins/kibana/kibana', uses: [ 'visTypes', 'spyModes', 'fieldFormats', 'navbarExtensions', - 'settingsSections', + 'managementSections', 'docViews' ], @@ -62,11 +61,12 @@ module.exports = function (kibana) { icon: 'plugins/kibana/assets/dashboard.svg', }, { - title: 'Settings', + title: 'Management', order: 1000, - url: '/app/kibana#/settings', + url: '/app/kibana#/management', description: 'define index patterns, change config, and more', icon: 'plugins/kibana/assets/settings.svg', + linkToLastSubUrl: false } ], injectDefaultVars(server, options) { diff --git a/src/plugins/kibana/public/dashboard/components/panel/panel.js b/src/plugins/kibana/public/dashboard/components/panel/panel.js index 940948d31d291..5cdf1a8469dfa 100644 --- a/src/plugins/kibana/public/dashboard/components/panel/panel.js +++ b/src/plugins/kibana/public/dashboard/components/panel/panel.js @@ -15,7 +15,7 @@ uiModules const filterManager = Private(FilterManagerProvider); const notify = new Notifier(); - const services = require('plugins/kibana/settings/saved_object_registry').all().map(function (serviceObj) { + const services = require('plugins/kibana/management/saved_object_registry').all().map(function (serviceObj) { const service = $injector.get(serviceObj.service); return { type: service.type, @@ -79,7 +79,7 @@ uiModules const service = _.find(services, { type: type }); if (!service) return; - $scope.editUrl = '#settings/objects/' + service.name + '/' + id + '?notFound=' + e.savedObjectType; + $scope.editUrl = '#management/kibana/objects/' + service.name + '/' + id + '?notFound=' + e.savedObjectType; }); }); diff --git a/src/plugins/kibana/public/dashboard/services/saved_dashboards.js b/src/plugins/kibana/public/dashboard/services/saved_dashboards.js index bca33d1a2f573..d90f5faa750f7 100644 --- a/src/plugins/kibana/public/dashboard/services/saved_dashboards.js +++ b/src/plugins/kibana/public/dashboard/services/saved_dashboards.js @@ -9,7 +9,7 @@ const module = uiModules.get('app/dashboard'); // Register this service with the saved object registry so it can be // edited by the object editor. -require('plugins/kibana/settings/saved_object_registry').register({ +require('plugins/kibana/management/saved_object_registry').register({ service: 'savedDashboards', title: 'dashboards' }); diff --git a/src/plugins/kibana/public/discover/controllers/discover.js b/src/plugins/kibana/public/discover/controllers/discover.js index a8c0a01ef37bf..87ce5f4f74e0b 100644 --- a/src/plugins/kibana/public/discover/controllers/discover.js +++ b/src/plugins/kibana/public/discover/controllers/discover.js @@ -65,7 +65,7 @@ uiRoutes return savedSearches.get($route.current.params.id) .catch(courier.redirectWhenMissing({ 'search': '/discover', - 'index-pattern': '/settings/objects/savedSearches/' + $route.current.params.id + 'index-pattern': '/management/kibana/objects/savedSearches/' + $route.current.params.id })); } } diff --git a/src/plugins/kibana/public/discover/saved_searches/saved_searches.js b/src/plugins/kibana/public/discover/saved_searches/saved_searches.js index 0244613baeccb..0ad2526d78bc8 100644 --- a/src/plugins/kibana/public/discover/saved_searches/saved_searches.js +++ b/src/plugins/kibana/public/discover/saved_searches/saved_searches.js @@ -11,7 +11,7 @@ const module = uiModules.get('discover/saved_searches', [ // Register this service with the saved object registry so it can be // edited by the object editor. -require('plugins/kibana/settings/saved_object_registry').register({ +require('plugins/kibana/management/saved_object_registry').register({ service: 'savedSearches', title: 'searches' }); diff --git a/src/plugins/kibana/public/kibana.js b/src/plugins/kibana/public/kibana.js index 764f19dec9f77..bf96cf92207d2 100644 --- a/src/plugins/kibana/public/kibana.js +++ b/src/plugins/kibana/public/kibana.js @@ -11,7 +11,7 @@ import 'ui/autoload/all'; import 'plugins/kibana/discover/index'; import 'plugins/kibana/visualize/index'; import 'plugins/kibana/dashboard/index'; -import 'plugins/kibana/settings/index'; +import 'plugins/kibana/management/index'; import 'plugins/kibana/doc'; import 'ui/vislib'; import 'ui/agg_response'; diff --git a/src/plugins/kibana/public/management/app.html b/src/plugins/kibana/public/management/app.html new file mode 100644 index 0000000000000..ae024a25622f0 --- /dev/null +++ b/src/plugins/kibana/public/management/app.html @@ -0,0 +1,23 @@ +
+ + +
+
diff --git a/src/plugins/kibana/public/management/index.js b/src/plugins/kibana/public/management/index.js new file mode 100644 index 0000000000000..03e3884df165a --- /dev/null +++ b/src/plugins/kibana/public/management/index.js @@ -0,0 +1,64 @@ +import _ from 'lodash'; + +import 'plugins/kibana/management/sections'; +import 'plugins/kibana/management/styles/main.less'; +import 'ui/filters/start_from'; +import 'ui/field_editor'; +import 'plugins/kibana/management/sections/indices/_indexed_fields'; +import 'plugins/kibana/management/sections/indices/_scripted_fields'; +import 'ui/directives/bread_crumbs'; +import uiRoutes from 'ui/routes'; +import uiModules from 'ui/modules'; +import appTemplate from 'plugins/kibana/management/app.html'; +import landingTemplate from 'plugins/kibana/management/landing.html'; +import chrome from 'ui/chrome/chrome'; +import management from 'ui/management'; + +uiRoutes +.when('/management', { + template: landingTemplate +}); + +require('ui/index_patterns/route_setup/load_default')({ + notRequiredRe: /^\/management\/data\//, + whenMissingRedirectTo: '/management/data/index' +}); + +uiModules +.get('apps/management') +.directive('kbnManagementApp', function (Private, $route, $location, timefilter, buildNum, buildSha) { + return { + restrict: 'E', + template: appTemplate, + transclude: true, + scope: { + sectionName: '@section' + }, + + link: function ($scope) { + timefilter.enabled = false; + $scope.sections = management.items.inOrder; + $scope.section = management.getSection($scope.sectionName) || management; + + if ($scope.section) { + $scope.section.items.forEach(item => { + item.class = `#${$location.path()}`.indexOf(item.url) > -1 ? 'active' : undefined; + }); + } + + management.getSection('kibana').info = `Build ${buildNum}, Commit SHA ${buildSha.substr(0, 8)}`; + } + }; +}); + +uiModules +.get('apps/management') +.directive('kbnManagementLanding', function (kbnVersion) { + return { + restrict: 'E', + link: function ($scope) { + $scope.sections = management.items.inOrder; + $scope.kbnVersion = kbnVersion; + } + }; +}); diff --git a/src/plugins/kibana/public/management/landing.html b/src/plugins/kibana/public/management/landing.html new file mode 100644 index 0000000000000..81a761c4e0c5e --- /dev/null +++ b/src/plugins/kibana/public/management/landing.html @@ -0,0 +1,45 @@ + + +
+ Version: {{::kbnVersion}} +
+
+
+ +
+
+ {{::section.display}} + + + +
+ +
+ + +
+
+
+
+
+
diff --git a/src/plugins/kibana/public/settings/saved_object_registry.js b/src/plugins/kibana/public/management/saved_object_registry.js similarity index 100% rename from src/plugins/kibana/public/settings/saved_object_registry.js rename to src/plugins/kibana/public/management/saved_object_registry.js diff --git a/src/plugins/kibana/public/management/sections/index.js b/src/plugins/kibana/public/management/sections/index.js new file mode 100644 index 0000000000000..34a0f1e43b8de --- /dev/null +++ b/src/plugins/kibana/public/management/sections/index.js @@ -0,0 +1,3 @@ +import 'plugins/kibana/management/sections/settings'; +import 'plugins/kibana/management/sections/objects'; +import 'plugins/kibana/management/sections/indices'; diff --git a/src/plugins/kibana/public/settings/sections/indices/_create.html b/src/plugins/kibana/public/management/sections/indices/_create.html similarity index 97% rename from src/plugins/kibana/public/settings/sections/indices/_create.html rename to src/plugins/kibana/public/management/sections/indices/_create.html index 4bf6c76fec6c5..6eaa9d95279a1 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_create.html +++ b/src/plugins/kibana/public/management/sections/indices/_create.html @@ -1,6 +1,6 @@ - - -
+ + +
- - +
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/_create.js b/src/plugins/kibana/public/management/sections/indices/_create.js similarity index 93% rename from src/plugins/kibana/public/settings/sections/indices/_create.js rename to src/plugins/kibana/public/management/sections/indices/_create.js index 78069125040df..cb98e86824576 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_create.js +++ b/src/plugins/kibana/public/management/sections/indices/_create.js @@ -3,21 +3,20 @@ import moment from 'moment'; import { IndexPatternMissingIndices } from 'ui/errors'; import 'ui/directives/validate_index_name'; import 'ui/directives/auto_select_if_only_one'; -import PluginsKibanaSettingsSectionsIndicesRefreshKibanaIndexProvider from 'plugins/kibana/settings/sections/indices/_refresh_kibana_index'; +import RefreshKibanaIndex from 'plugins/kibana/management/sections/indices/_refresh_kibana_index'; import uiRoutes from 'ui/routes'; import uiModules from 'ui/modules'; -import createTemplate from 'plugins/kibana/settings/sections/indices/_create.html'; - +import createTemplate from 'plugins/kibana/management/sections/indices/_create.html'; uiRoutes -.when('/settings/indices/', { +.when('/management/data/index/', { template: createTemplate }); -uiModules.get('apps/settings') -.controller('settingsIndicesCreate', function ($scope, kbnUrl, Private, Notifier, indexPatterns, es, config, Promise) { +uiModules.get('apps/management') +.controller('managementIndicesCreate', function ($scope, kbnUrl, Private, Notifier, indexPatterns, es, config, Promise) { const notify = new Notifier(); - const refreshKibanaIndex = Private(PluginsKibanaSettingsSectionsIndicesRefreshKibanaIndexProvider); + const refreshKibanaIndex = Private(RefreshKibanaIndex); const intervals = indexPatterns.intervals; let samplePromise; @@ -73,7 +72,7 @@ uiModules.get('apps/settings') config.set('defaultIndex', indexPattern.id); } indexPatterns.cache.clear(indexPattern.id); - kbnUrl.change('/settings/indices/' + indexPattern.id); + kbnUrl.change('/management/kibana/indices/' + indexPattern.id); }); } }); diff --git a/src/plugins/kibana/public/settings/sections/indices/_date_scripts.js b/src/plugins/kibana/public/management/sections/indices/_date_scripts.js similarity index 100% rename from src/plugins/kibana/public/settings/sections/indices/_date_scripts.js rename to src/plugins/kibana/public/management/sections/indices/_date_scripts.js diff --git a/src/plugins/kibana/public/settings/sections/indices/_edit.html b/src/plugins/kibana/public/management/sections/indices/_edit.html similarity index 87% rename from src/plugins/kibana/public/settings/sections/indices/_edit.html rename to src/plugins/kibana/public/management/sections/indices/_edit.html index ee0e6f65a307c..31c9d7bc8df4b 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_edit.html +++ b/src/plugins/kibana/public/management/sections/indices/_edit.html @@ -1,13 +1,13 @@ - - -
+ + +
- - + + diff --git a/src/plugins/kibana/public/settings/sections/indices/_edit.js b/src/plugins/kibana/public/management/sections/indices/_edit.js similarity index 60% rename from src/plugins/kibana/public/settings/sections/indices/_edit.js rename to src/plugins/kibana/public/management/sections/indices/_edit.js index c9c6388222b83..663f917356b4c 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_edit.js +++ b/src/plugins/kibana/public/management/sections/indices/_edit.js @@ -1,38 +1,44 @@ import _ from 'lodash'; -import 'plugins/kibana/settings/sections/indices/_indexed_fields'; -import 'plugins/kibana/settings/sections/indices/_scripted_fields'; -import 'plugins/kibana/settings/sections/indices/_index_header'; -import PluginsKibanaSettingsSectionsIndicesRefreshKibanaIndexProvider from 'plugins/kibana/settings/sections/indices/_refresh_kibana_index'; +import 'plugins/kibana/management/sections/indices/_indexed_fields'; +import 'plugins/kibana/management/sections/indices/_scripted_fields'; +import 'plugins/kibana/management/sections/indices/_index_header'; +import RefreshKibanaIndex from 'plugins/kibana/management/sections/indices/_refresh_kibana_index'; import UrlProvider from 'ui/url'; -import PluginsKibanaSettingsSectionsIndicesFieldTypesProvider from 'plugins/kibana/settings/sections/indices/_field_types'; +import IndicesFieldTypesProvider from 'plugins/kibana/management/sections/indices/_field_types'; import uiRoutes from 'ui/routes'; import uiModules from 'ui/modules'; -import editTemplate from 'plugins/kibana/settings/sections/indices/_edit.html'; +import editTemplate from 'plugins/kibana/management/sections/indices/_edit.html'; uiRoutes -.when('/settings/indices/:indexPatternId', { +.when('/management/kibana/indices/:indexPatternId?', { template: editTemplate, resolve: { - indexPattern: function ($route, courier) { - return courier.indexPatterns.get($route.current.params.indexPatternId) - .catch(courier.redirectWhenMissing('/settings/indices')); + indexPattern: function ($route, config, courier) { + const params = $route.current.params; + + if (typeof params.indexPatternId === 'undefined') { + params.indexPatternId = config.get('defaultIndex'); + } + + return courier.indexPatterns.get(params.indexPatternId) + .catch(courier.redirectWhenMissing('/management/data/index')); } } }); -uiModules.get('apps/settings') -.controller('settingsIndicesEdit', function ($scope, $location, $route, config, courier, Notifier, Private, AppState, docTitle) { +uiModules.get('apps/management') +.controller('managementIndicesEdit', function ($scope, $location, $route, config, courier, Notifier, Private, AppState, docTitle) { const notify = new Notifier(); const $state = $scope.state = new AppState(); - const refreshKibanaIndex = Private(PluginsKibanaSettingsSectionsIndicesRefreshKibanaIndexProvider); + const refreshKibanaIndex = Private(RefreshKibanaIndex); $scope.kbnUrl = Private(UrlProvider); $scope.indexPattern = $route.current.locals.indexPattern; docTitle.change($scope.indexPattern.id); const otherIds = _.without($route.current.locals.indexPatternIds, $scope.indexPattern.id); - const fieldTypes = Private(PluginsKibanaSettingsSectionsIndicesFieldTypesProvider); + const fieldTypes = Private(IndicesFieldTypesProvider); $scope.$watch('indexPattern.fields', function () { $scope.fieldTypes = fieldTypes($scope.indexPattern); }); @@ -65,7 +71,7 @@ uiModules.get('apps/settings') courier.indexPatterns.delete($scope.indexPattern) .then(refreshKibanaIndex) .then(function () { - $location.url('/settings/indices'); + $location.url('/management/data/index'); }) .catch(notify.fatal); }; diff --git a/src/plugins/kibana/public/settings/sections/indices/_field_controls.html b/src/plugins/kibana/public/management/sections/indices/_field_controls.html similarity index 100% rename from src/plugins/kibana/public/settings/sections/indices/_field_controls.html rename to src/plugins/kibana/public/management/sections/indices/_field_controls.html diff --git a/src/plugins/kibana/public/settings/sections/indices/_field_editor.html b/src/plugins/kibana/public/management/sections/indices/_field_editor.html similarity index 63% rename from src/plugins/kibana/public/settings/sections/indices/_field_editor.html rename to src/plugins/kibana/public/management/sections/indices/_field_editor.html index c5f0312503219..d1427e780f274 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_field_editor.html +++ b/src/plugins/kibana/public/management/sections/indices/_field_editor.html @@ -1,7 +1,7 @@ - - + +