From 91b6d925292f7bb62f059f2ba06c41e775ef2eb7 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Thu, 12 May 2016 17:26:39 -0700 Subject: [PATCH 01/17] Changes settings to management Signed-off-by: Tyler Smalley --- src/plugins/kibana/index.js | 7 +- .../dashboard/components/panel/panel.js | 4 +- .../dashboard/services/saved_dashboards.js | 2 +- .../public/discover/controllers/discover.js | 2 +- .../discover/saved_searches/saved_searches.js | 2 +- src/plugins/kibana/public/kibana.js | 2 +- src/plugins/kibana/public/management/app.html | 23 + src/plugins/kibana/public/management/index.js | 64 +++ .../kibana/public/management/landing.html | 45 ++ .../saved_object_registry.js | 0 .../public/management/sections/index.js | 3 + .../sections/indices/_create.html | 10 +- .../sections/indices/_create.js | 14 +- .../sections/indices/_date_scripts.js | 0 .../sections/indices/_edit.html | 16 +- .../sections/indices/_edit.js | 26 +- .../sections/indices/_field_controls.html | 0 .../sections/indices/_field_editor.html | 10 +- .../sections/indices/_field_editor.js | 14 +- .../sections/indices/_field_name.html | 0 .../sections/indices/_field_popularity.html | 0 .../sections/indices/_field_type.html | 0 .../sections/indices/_field_types.js | 0 .../sections/indices/_index_header.html | 0 .../sections/indices/_index_header.js | 6 +- .../sections/indices/_indexed_fields.html | 0 .../sections/indices/_indexed_fields.js | 10 +- .../sections/indices/_refresh_kibana_index.js | 0 .../sections/indices/_scripted_fields.html | 0 .../sections/indices/_scripted_fields.js | 12 +- .../sections/indices/index.html | 2 +- .../management/sections/indices/index.js | 66 +++ .../sections/objects/_objects.html | 10 +- .../sections/objects/_objects.js | 12 +- .../sections/objects/_view.html | 8 +- .../sections/objects/_view.js | 12 +- .../management/sections/objects/index.js | 15 + .../sections/settings}/advanced_row.html | 0 .../sections/settings}/advanced_row.js | 4 +- .../sections/settings}/index.html | 8 +- .../sections/settings}/index.js | 25 +- .../lib/__tests__/get_editor_type.js | 2 +- .../settings}/lib/__tests__/get_val_type.js | 2 +- .../lib/__tests__/to_editable_config.js | 2 +- .../sections/settings}/lib/get_editor_type.js | 0 .../sections/settings}/lib/get_val_type.js | 0 .../settings}/lib/to_editable_config.js | 0 .../{settings => management}/styles/main.less | 119 +++-- src/plugins/kibana/public/settings/app.html | 14 - src/plugins/kibana/public/settings/index.js | 53 -- .../settings/sections/about/barcode.svg | 454 ------------------ .../public/settings/sections/about/index.html | 35 -- .../public/settings/sections/about/index.js | 25 - .../public/settings/sections/indices/index.js | 54 --- .../public/settings/sections/objects/index.js | 18 - .../public/settings/sections/status/index.js | 9 - .../kibana/public/visualize/editor/editor.js | 6 +- .../saved_visualizations.js | 4 +- src/ui/public/chrome/api/angular.js | 10 +- src/ui/public/directives/bread_crumbs.js | 7 +- .../public/directives/saved_object_finder.js | 2 +- src/ui/public/errors.js | 2 +- src/ui/public/field_editor/field_editor.js | 1 - .../field_format_editor.js | 2 +- src/ui/public/icons/beats.svg | 1 + src/ui/public/icons/elasticsearch.svg | 1 + src/ui/public/icons/kibana.svg | 1 + src/ui/public/icons/logstash.svg | 1 + src/ui/public/index_patterns/_ensure_some.js | 2 +- src/ui/public/index_patterns/_field.js | 2 +- .../public/index_patterns/_index_pattern.js | 8 +- src/ui/public/management/__tests__/index.js | 10 + src/ui/public/management/__tests__/section.js | 108 +++++ src/ui/public/management/index.js | 23 + src/ui/public/management/section.js | 68 +++ src/ui/public/registry/settings_sections.js | 5 - src/ui/public/styles/base.less | 46 ++ src/ui/public/styles/variables/colors.less | 5 + src/ui/public/styles/variables/for-theme.less | 12 +- src/ui/ui_exports.js | 2 +- .../_creation_form_changes.js | 0 .../_index_pattern_create_delete.js | 0 .../_index_pattern_popularity.js | 0 .../_index_pattern_results_sort.js | 0 .../_initial_state.js | 0 .../_kibana_settings.js} | 8 +- .../apps/{settings => management}/index.js | 2 +- test/functional/index.js | 2 +- test/server_config.js | 2 +- test/support/pages/settings_page.js | 63 +-- 90 files changed, 743 insertions(+), 884 deletions(-) create mode 100644 src/plugins/kibana/public/management/app.html create mode 100644 src/plugins/kibana/public/management/index.js create mode 100644 src/plugins/kibana/public/management/landing.html rename src/plugins/kibana/public/{settings => management}/saved_object_registry.js (100%) create mode 100644 src/plugins/kibana/public/management/sections/index.js rename src/plugins/kibana/public/{settings => management}/sections/indices/_create.html (97%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_create.js (93%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_date_scripts.js (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_edit.html (87%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_edit.js (65%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_field_controls.html (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_field_editor.html (63%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_field_editor.js (75%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_field_name.html (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_field_popularity.html (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_field_type.html (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_field_types.js (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_index_header.html (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_index_header.js (75%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_indexed_fields.html (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_indexed_fields.js (84%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_refresh_kibana_index.js (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_scripted_fields.html (100%) rename src/plugins/kibana/public/{settings => management}/sections/indices/_scripted_fields.js (84%) rename src/plugins/kibana/public/{settings => management}/sections/indices/index.html (96%) create mode 100644 src/plugins/kibana/public/management/sections/indices/index.js rename src/plugins/kibana/public/{settings => management}/sections/objects/_objects.html (93%) rename src/plugins/kibana/public/{settings => management}/sections/objects/_objects.js (92%) rename src/plugins/kibana/public/{settings => management}/sections/objects/_view.html (94%) rename src/plugins/kibana/public/{settings => management}/sections/objects/_view.js (94%) create mode 100644 src/plugins/kibana/public/management/sections/objects/index.js rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/advanced_row.html (100%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/advanced_row.js (92%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/index.html (88%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/index.js (56%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/lib/__tests__/get_editor_type.js (91%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/lib/__tests__/get_val_type.js (94%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/lib/__tests__/to_editable_config.js (96%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/lib/get_editor_type.js (100%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/lib/get_val_type.js (100%) rename src/plugins/kibana/public/{settings/sections/advanced => management/sections/settings}/lib/to_editable_config.js (100%) rename src/plugins/kibana/public/{settings => management}/styles/main.less (59%) delete mode 100644 src/plugins/kibana/public/settings/app.html delete mode 100644 src/plugins/kibana/public/settings/index.js delete mode 100644 src/plugins/kibana/public/settings/sections/about/barcode.svg delete mode 100644 src/plugins/kibana/public/settings/sections/about/index.html delete mode 100644 src/plugins/kibana/public/settings/sections/about/index.js delete mode 100644 src/plugins/kibana/public/settings/sections/indices/index.js delete mode 100644 src/plugins/kibana/public/settings/sections/objects/index.js delete mode 100644 src/plugins/kibana/public/settings/sections/status/index.js create mode 100755 src/ui/public/icons/beats.svg create mode 100755 src/ui/public/icons/elasticsearch.svg create mode 100755 src/ui/public/icons/kibana.svg create mode 100755 src/ui/public/icons/logstash.svg create mode 100644 src/ui/public/management/__tests__/index.js create mode 100644 src/ui/public/management/__tests__/section.js create mode 100644 src/ui/public/management/index.js create mode 100644 src/ui/public/management/section.js delete mode 100644 src/ui/public/registry/settings_sections.js rename test/functional/apps/{settings => management}/_creation_form_changes.js (100%) rename test/functional/apps/{settings => management}/_index_pattern_create_delete.js (100%) rename test/functional/apps/{settings => management}/_index_pattern_popularity.js (100%) rename test/functional/apps/{settings => management}/_index_pattern_results_sort.js (100%) rename test/functional/apps/{settings => management}/_initial_state.js (100%) rename test/functional/apps/{settings/_advanced_settings.js => management/_kibana_settings.js} (87%) rename test/functional/apps/{settings => management}/index.js (95%) diff --git a/src/plugins/kibana/index.js b/src/plugins/kibana/index.js index 045b442374f39..3ba9aec21c177 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,9 +61,9 @@ 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', } 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..7b63d9925e83f --- /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..b1dd7b35a0e63 --- /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\//, + whenMissingRedirectTo: '/management/kibana/indices' +}); + +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.get($scope.sectionName) || management; + + if ($scope.section) { + $scope.section.items.forEach(item => { + item.class = item.url === '#' + $location.path() ? 'active' : undefined; + }); + } + + management.get('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..18ecf9a50def7 --- /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..9448b933c65fc 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..32257638e122f 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_create.js +++ b/src/plugins/kibana/public/management/sections/indices/_create.js @@ -3,21 +3,21 @@ 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/kibana/indices/', { 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 +73,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 65% rename from src/plugins/kibana/public/settings/sections/indices/_edit.js rename to src/plugins/kibana/public/management/sections/indices/_edit.js index c9c6388222b83..d2096aaaadbe7 100644 --- a/src/plugins/kibana/public/settings/sections/indices/_edit.js +++ b/src/plugins/kibana/public/management/sections/indices/_edit.js @@ -1,38 +1,38 @@ 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')); + .catch(courier.redirectWhenMissing('/management/kibana/indices')); } } }); -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 +65,7 @@ uiModules.get('apps/settings') courier.indexPatterns.delete($scope.indexPattern) .then(refreshKibanaIndex) .then(function () { - $location.url('/settings/indices'); + $location.url('/management/kibana/indices'); }) .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 @@ - - + + - - + + diff --git a/src/plugins/kibana/public/settings/sections/objects/_objects.js b/src/plugins/kibana/public/management/sections/objects/_objects.js similarity index 92% rename from src/plugins/kibana/public/settings/sections/objects/_objects.js rename to src/plugins/kibana/public/management/sections/objects/_objects.js index 1a3938aeeb647..1d68a35cb3fea 100644 --- a/src/plugins/kibana/public/settings/sections/objects/_objects.js +++ b/src/plugins/kibana/public/management/sections/objects/_objects.js @@ -1,8 +1,8 @@ import { saveAs } from '@spalger/filesaver'; import { extend, find, flattenDeep, partialRight, pick, pluck, sortBy } from 'lodash'; import angular from 'angular'; -import registry from 'plugins/kibana/settings/saved_object_registry'; -import objectIndexHTML from 'plugins/kibana/settings/sections/objects/_objects.html'; +import registry from 'plugins/kibana/management/saved_object_registry'; +import objectIndexHTML from 'plugins/kibana/management/sections/objects/_objects.html'; import 'ui/directives/file_upload'; import uiRoutes from 'ui/routes'; import uiModules from 'ui/modules'; @@ -10,12 +10,12 @@ import uiModules from 'ui/modules'; const MAX_SIZE = Math.pow(2, 31) - 1; uiRoutes -.when('/settings/objects', { +.when('/management/kibana/objects', { template: objectIndexHTML }); -uiModules.get('apps/settings') -.directive('kbnSettingsObjects', function (kbnIndex, Notifier, Private, kbnUrl, Promise) { +uiModules.get('apps/management') +.directive('kbnManagementObjects', function (kbnIndex, Notifier, Private, kbnUrl, Promise) { return { restrict: 'E', controller: function ($scope, $injector, $q, AppState, es) { @@ -79,7 +79,7 @@ uiModules.get('apps/settings') id: item.id }; - kbnUrl.change('/settings/objects/{{ service }}/{{ id }}', params); + kbnUrl.change('/management/kibana/objects/{{ service }}/{{ id }}', params); }; $scope.bulkDelete = function () { diff --git a/src/plugins/kibana/public/settings/sections/objects/_view.html b/src/plugins/kibana/public/management/sections/objects/_view.html similarity index 94% rename from src/plugins/kibana/public/settings/sections/objects/_view.html rename to src/plugins/kibana/public/management/sections/objects/_view.html index b8ce631383970..9ece77d0627a3 100644 --- a/src/plugins/kibana/public/settings/sections/objects/_view.html +++ b/src/plugins/kibana/public/management/sections/objects/_view.html @@ -1,5 +1,5 @@ - - + + - - \ No newline at end of file + + diff --git a/src/plugins/kibana/public/settings/sections/objects/_view.js b/src/plugins/kibana/public/management/sections/objects/_view.js similarity index 94% rename from src/plugins/kibana/public/settings/sections/objects/_view.js rename to src/plugins/kibana/public/management/sections/objects/_view.js index f3f54f97cfea6..ef868fa6bfa90 100644 --- a/src/plugins/kibana/public/settings/sections/objects/_view.js +++ b/src/plugins/kibana/public/management/sections/objects/_view.js @@ -1,19 +1,19 @@ import _ from 'lodash'; import angular from 'angular'; import rison from 'rison-node'; -import registry from 'plugins/kibana/settings/saved_object_registry'; -import objectViewHTML from 'plugins/kibana/settings/sections/objects/_view.html'; +import registry from 'plugins/kibana/management/saved_object_registry'; +import objectViewHTML from 'plugins/kibana/management/sections/objects/_view.html'; import IndexPatternsCastMappingTypeProvider from 'ui/index_patterns/_cast_mapping_type'; import uiRoutes from 'ui/routes'; import uiModules from 'ui/modules'; uiRoutes -.when('/settings/objects/:service/:id', { +.when('/management/kibana/objects/:service/:id', { template: objectViewHTML }); -uiModules.get('apps/settings') -.directive('kbnSettingsObjectsView', function (kbnIndex, Notifier) { +uiModules.get('apps/management') +.directive('kbnManagementObjectsView', function (kbnIndex, Notifier) { return { restrict: 'E', controller: function ($scope, $injector, $routeParams, $location, $window, $rootScope, es, Private) { @@ -210,7 +210,7 @@ uiModules.get('apps/settings') .then(function (resp) { const msg = 'You successfully ' + action + ' the "' + $scope.obj._source.title + '" ' + $scope.title.toLowerCase() + ' object'; - $location.path('/settings/objects').search({ + $location.path('/management/kibana/objects').search({ _a: rison.encode({ tab: serviceObj.title }) diff --git a/src/plugins/kibana/public/management/sections/objects/index.js b/src/plugins/kibana/public/management/sections/objects/index.js new file mode 100644 index 0000000000000..3f9a1e96d7d88 --- /dev/null +++ b/src/plugins/kibana/public/management/sections/objects/index.js @@ -0,0 +1,15 @@ +import management from 'ui/management'; +import 'plugins/kibana/management/sections/objects/_view'; +import 'plugins/kibana/management/sections/objects/_objects'; +import 'ace'; +import 'ui/directives/confirm_click'; +import uiModules from 'ui/modules'; + +// add the module deps to this module +uiModules.get('apps/management'); + +management.get('kibana').register('objects', { + display: 'Saved Objects', + order: 10, + path: 'kibana/objects' +}); diff --git a/src/plugins/kibana/public/settings/sections/advanced/advanced_row.html b/src/plugins/kibana/public/management/sections/settings/advanced_row.html similarity index 100% rename from src/plugins/kibana/public/settings/sections/advanced/advanced_row.html rename to src/plugins/kibana/public/management/sections/settings/advanced_row.html diff --git a/src/plugins/kibana/public/settings/sections/advanced/advanced_row.js b/src/plugins/kibana/public/management/sections/settings/advanced_row.js similarity index 92% rename from src/plugins/kibana/public/settings/sections/advanced/advanced_row.js rename to src/plugins/kibana/public/management/sections/settings/advanced_row.js index 5b82fdc2907ae..3f295c8f23c1a 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/advanced_row.js +++ b/src/plugins/kibana/public/management/sections/settings/advanced_row.js @@ -1,9 +1,9 @@ import _ from 'lodash'; import 'ui/elastic_textarea'; import uiModules from 'ui/modules'; -import advancedRowTemplate from 'plugins/kibana/settings/sections/advanced/advanced_row.html'; +import advancedRowTemplate from 'plugins/kibana/management/sections/settings/advanced_row.html'; -uiModules.get('apps/settings') +uiModules.get('apps/management') .directive('advancedRow', function (config, Notifier) { return { restrict: 'A', diff --git a/src/plugins/kibana/public/settings/sections/advanced/index.html b/src/plugins/kibana/public/management/sections/settings/index.html similarity index 88% rename from src/plugins/kibana/public/settings/sections/advanced/index.html rename to src/plugins/kibana/public/management/sections/settings/index.html index 13f85f7c88194..08402cca6b9cd 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/index.html +++ b/src/plugins/kibana/public/management/sections/settings/index.html @@ -1,5 +1,5 @@ - - + +

Caution: You can break stuff here

Be careful in here, these settings are for very advanced users only. @@ -24,5 +24,5 @@

Caution: You can break stuff here

- - + + diff --git a/src/plugins/kibana/public/settings/sections/advanced/index.js b/src/plugins/kibana/public/management/sections/settings/index.js similarity index 56% rename from src/plugins/kibana/public/settings/sections/advanced/index.js rename to src/plugins/kibana/public/management/sections/settings/index.js index 2e7cbb0e7524d..45da5606b3e72 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/index.js +++ b/src/plugins/kibana/public/management/sections/settings/index.js @@ -1,18 +1,18 @@ import _ from 'lodash'; -import registry from 'ui/registry/settings_sections'; -import toEditableConfig from 'plugins/kibana/settings/sections/advanced/lib/to_editable_config'; -import 'plugins/kibana/settings/sections/advanced/advanced_row'; +import toEditableConfig from 'plugins/kibana/management/sections/settings/lib/to_editable_config'; +import 'plugins/kibana/management/sections/settings/advanced_row'; +import management from 'ui/management'; import uiRoutes from 'ui/routes'; import uiModules from 'ui/modules'; -import indexTemplate from 'plugins/kibana/settings/sections/advanced/index.html'; +import indexTemplate from 'plugins/kibana/management/sections/settings/index.html'; uiRoutes -.when('/settings/advanced', { +.when('/management/kibana/settings', { template: indexTemplate }); -uiModules.get('apps/settings') -.directive('kbnSettingsAdvanced', function (config, Notifier, Private, $rootScope) { +uiModules.get('apps/management') +.directive('kbnManagementAdvanced', function (config, Notifier, Private, $rootScope) { return { restrict: 'E', link: function ($scope) { @@ -39,9 +39,8 @@ uiModules.get('apps/settings') }; }); -registry.register(_.constant({ - order: 2, - name: 'advanced', - display: 'Advanced', - url: '#/settings/advanced' -})); +management.get('kibana').register('settings', { + display: 'Settings', + order: 20, + path: 'kibana/settings' +}); diff --git a/src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/get_editor_type.js b/src/plugins/kibana/public/management/sections/settings/lib/__tests__/get_editor_type.js similarity index 91% rename from src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/get_editor_type.js rename to src/plugins/kibana/public/management/sections/settings/lib/__tests__/get_editor_type.js index 2b230c3fe5a22..824660fd1f1de 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/get_editor_type.js +++ b/src/plugins/kibana/public/management/sections/settings/lib/__tests__/get_editor_type.js @@ -1,5 +1,5 @@ -import getEditorType from 'plugins/kibana/settings/sections/advanced/lib/get_editor_type'; +import getEditorType from 'plugins/kibana/management/sections/settings/lib/get_editor_type'; import expect from 'expect.js'; describe('Settings', function () { diff --git a/src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/get_val_type.js b/src/plugins/kibana/public/management/sections/settings/lib/__tests__/get_val_type.js similarity index 94% rename from src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/get_val_type.js rename to src/plugins/kibana/public/management/sections/settings/lib/__tests__/get_val_type.js index d92162787f834..27bc982798622 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/get_val_type.js +++ b/src/plugins/kibana/public/management/sections/settings/lib/__tests__/get_val_type.js @@ -1,5 +1,5 @@ -import getValType from 'plugins/kibana/settings/sections/advanced/lib/get_val_type'; +import getValType from 'plugins/kibana/management/sections/settings/lib/get_val_type'; import expect from 'expect.js'; describe('Settings', function () { diff --git a/src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/to_editable_config.js b/src/plugins/kibana/public/management/sections/settings/lib/__tests__/to_editable_config.js similarity index 96% rename from src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/to_editable_config.js rename to src/plugins/kibana/public/management/sections/settings/lib/__tests__/to_editable_config.js index 91690be14d9a1..782692e77bd5e 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/lib/__tests__/to_editable_config.js +++ b/src/plugins/kibana/public/management/sections/settings/lib/__tests__/to_editable_config.js @@ -1,5 +1,5 @@ -import toEditableConfig from 'plugins/kibana/settings/sections/advanced/lib/to_editable_config'; +import toEditableConfig from 'plugins/kibana/management/sections/settings/lib/to_editable_config'; import expect from 'expect.js'; describe('Settings', function () { diff --git a/src/plugins/kibana/public/settings/sections/advanced/lib/get_editor_type.js b/src/plugins/kibana/public/management/sections/settings/lib/get_editor_type.js similarity index 100% rename from src/plugins/kibana/public/settings/sections/advanced/lib/get_editor_type.js rename to src/plugins/kibana/public/management/sections/settings/lib/get_editor_type.js diff --git a/src/plugins/kibana/public/settings/sections/advanced/lib/get_val_type.js b/src/plugins/kibana/public/management/sections/settings/lib/get_val_type.js similarity index 100% rename from src/plugins/kibana/public/settings/sections/advanced/lib/get_val_type.js rename to src/plugins/kibana/public/management/sections/settings/lib/get_val_type.js diff --git a/src/plugins/kibana/public/settings/sections/advanced/lib/to_editable_config.js b/src/plugins/kibana/public/management/sections/settings/lib/to_editable_config.js similarity index 100% rename from src/plugins/kibana/public/settings/sections/advanced/lib/to_editable_config.js rename to src/plugins/kibana/public/management/sections/settings/lib/to_editable_config.js diff --git a/src/plugins/kibana/public/settings/styles/main.less b/src/plugins/kibana/public/management/styles/main.less similarity index 59% rename from src/plugins/kibana/public/settings/styles/main.less rename to src/plugins/kibana/public/management/styles/main.less index beddd122eed35..1e9e0bb1ea815 100644 --- a/src/plugins/kibana/public/settings/styles/main.less +++ b/src/plugins/kibana/public/management/styles/main.less @@ -1,13 +1,14 @@ @import (reference) "~ui/styles/theme"; @import (reference) "~ui/styles/variables"; -kibana-settings-app, -kbn-settings-indices, -kbn-settings-indices-edit, -kbn-settings-indices-create, -kbn-settings-advanced, -kbn-settings-objects, -kbn-settings-objects-view { +kbn-management-app, +kbn-management-landing, +kbn-management-indices, +kbn-management-indices-edit, +kbn-management-indices-create, +kbn-management-advanced, +kbn-management-objects, +kbn-management-objects-view { display: block; } @@ -15,41 +16,95 @@ nav.navbar { height: 70px; } +.tab-management { + background-color: @kibanaGray6; +} + .settings-nav { text-transform: capitalize; } -li.kbn-settings-tab:first-letter { +li.kbn-management-tab:first-letter { text-transform: capitalize; } -kbn-settings-app { - div.app-container { - div.container-fluid { - padding-left: 0; - padding-right: 0; +kbn-management-app { + bread-crumbs ul { + height: 36px; + } + + li.current-page { + font-size: 1.5em; + margin: 0 10px; + } +} + +kbn-management-landing { + padding: 5px; + + .product-overview { + color: @kibanaGray2; + padding: 5px 0 10px 10px; + } + + .management-section-info { + bottom: 0; + display: none; + color: @kibanaPink1; + font-size: 0.8em; + position: absolute; + } + + .panel-heading i { + font-size: 0.9em; + padding: 5px; + } + + .management-section { + padding-left: 5px; + padding-right: 5px; + } + + .management-section-info-expanded { + .panel-heading i { + color: @black; + } + + .management-section-info { + display: block; + } + } + + .panel-product { + margin-bottom: 10px; + + .panel-body { + padding-bottom: 30px; + font-size: 17px; + line-height: 32px; + position: relative; } } } -kbn-settings-objects { +kbn-management-objects { form { margin-bottom: @line-height-computed; } .list-unstyled { li { border-bottom: 1px solid; - border-bottom-color: @settings-objects-list-border; + border-bottom-color: @management-objects-list-border; padding: 8px; } } .empty { - color: @settings-objects-empty-color; + color: @management-objects-empty-color; } .action-bar { margin-top: 10px; - background-color: @settings-objects-action-bar-bg; + background-color: @management-objects-action-bar-bg; padding: 4px 12px; label { @@ -71,7 +126,7 @@ kbn-settings-objects { } } -kbn-settings-advanced { +kbn-management-advanced { // super specific rule to override bootstrap's equally specific rule // https://github.com/twbs/bootstrap/blob/1f329f8f17aa989eabc6e94bdcab93e69ef0e463/less/tables.less#L35 .table > tbody > tr > td { @@ -79,32 +134,13 @@ kbn-settings-advanced { } } -kbn-settings-objects-view { +kbn-management-objects-view { label { font-family: @font-family-monospace; } .ace_editor { height: 300px; } } -.kbn-settings-about { - margin-top: 30px; - - .jumbotron h1 { - font-weight: bold; - } - - &-versions { - td { - width: 50%; - } - - td:first-child { - font-weight: bold; - text-align: right; - } - } -} - .advanced-settings { overflow-x: scroll; @@ -112,7 +148,7 @@ kbn-settings-objects-view { width: 100%; tr.default td.value { - color: @settings-advanced-table-default-color; + color: @management-advanced-table-default-color; } td { @@ -141,7 +177,7 @@ kbn-settings-objects-view { .indices-settings { i.active { - color: @settings-indices-active-color; + color: @management-indices-active-color; } tr.field-settings { @@ -168,7 +204,7 @@ kbn-settings-objects-view { } } -kbn-settings-indices { +kbn-management-indices { .fields { table { .table-striped() @@ -197,7 +233,6 @@ kbn-settings-indices { } } - .kbn-settings-indices-create { .time-and-pattern > div {} } diff --git a/src/plugins/kibana/public/settings/app.html b/src/plugins/kibana/public/settings/app.html deleted file mode 100644 index f78a64d809790..0000000000000 --- a/src/plugins/kibana/public/settings/app.html +++ /dev/null @@ -1,14 +0,0 @@ -
- - -
-
diff --git a/src/plugins/kibana/public/settings/index.js b/src/plugins/kibana/public/settings/index.js deleted file mode 100644 index 59e7d4b1a922a..0000000000000 --- a/src/plugins/kibana/public/settings/index.js +++ /dev/null @@ -1,53 +0,0 @@ -import _ from 'lodash'; -import 'plugins/kibana/settings/sections/indices/index'; -import 'plugins/kibana/settings/sections/advanced/index'; -import 'plugins/kibana/settings/sections/objects/index'; -import 'plugins/kibana/settings/sections/status/index'; -import 'plugins/kibana/settings/sections/about/index'; -import 'plugins/kibana/settings/styles/main.less'; -import 'ui/filters/start_from'; -import 'ui/field_editor'; -import 'plugins/kibana/settings/sections/indices/_indexed_fields'; -import 'plugins/kibana/settings/sections/indices/_scripted_fields'; -import 'ui/directives/bread_crumbs'; -import registry from 'ui/registry/settings_sections'; -import uiRoutes from 'ui/routes'; -import uiModules from 'ui/modules'; -import appTemplate from 'plugins/kibana/settings/app.html'; - - -uiRoutes -.when('/settings', { - redirectTo: '/settings/indices' -}); - -require('ui/index_patterns/route_setup/load_default')({ - notRequiredRe: /^\/settings\//, - whenMissingRedirectTo: '/settings/indices' -}); - -uiModules -.get('apps/settings') -.directive('kbnSettingsApp', function (Private, $route, timefilter) { - const sections = Private(registry); - - return { - restrict: 'E', - template: appTemplate, - transclude: true, - scope: { - sectionName: '@section' - }, - link: function ($scope, $el) { - timefilter.enabled = false; - $scope.sections = sections.inOrder; - $scope.section = _.find($scope.sections, { name: $scope.sectionName }); - - $scope.sections.forEach(section => { - section.class = section === $scope.section ? 'active' : undefined; - }); - } - }; -}); - -// preload diff --git a/src/plugins/kibana/public/settings/sections/about/barcode.svg b/src/plugins/kibana/public/settings/sections/about/barcode.svg deleted file mode 100644 index 671b628ca1507..0000000000000 --- a/src/plugins/kibana/public/settings/sections/about/barcode.svg +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/plugins/kibana/public/settings/sections/about/index.html b/src/plugins/kibana/public/settings/sections/about/index.html deleted file mode 100644 index fc537b1a3818e..0000000000000 --- a/src/plugins/kibana/public/settings/sections/about/index.html +++ /dev/null @@ -1,35 +0,0 @@ - -
-
-
- Kibana Barcode Logo
-

Kibana

-

- - - - - - - - - - - - - - - - - - - - - -
Version{{kbnVersion}}
Build{{buildNum}}
Commit SHA{{buildSha | limitTo:7}}
Server name{{serverName}}
-

- © 2015 All Rights Reserved - Elasticsearch -
-
-
-
diff --git a/src/plugins/kibana/public/settings/sections/about/index.js b/src/plugins/kibana/public/settings/sections/about/index.js deleted file mode 100644 index 3040b7a89cb98..0000000000000 --- a/src/plugins/kibana/public/settings/sections/about/index.js +++ /dev/null @@ -1,25 +0,0 @@ -import _ from 'lodash'; -import registry from 'ui/registry/settings_sections'; -import uiRoutes from 'ui/routes'; -import uiModules from 'ui/modules'; -import indexTemplate from 'plugins/kibana/settings/sections/about/index.html'; - -uiRoutes -.when('/settings/about', { - template: indexTemplate -}); - -uiModules.get('apps/settings') -.controller('settingsAbout', function ($scope, kbnVersion, buildNum, buildSha, serverName) { - $scope.kbnVersion = kbnVersion; - $scope.buildNum = buildNum; - $scope.buildSha = buildSha; - $scope.serverName = serverName; -}); - -registry.register(_.constant({ - order: 1001, - name: 'about', - display: 'About', - url: '#/settings/about' -})); diff --git a/src/plugins/kibana/public/settings/sections/indices/index.js b/src/plugins/kibana/public/settings/sections/indices/index.js deleted file mode 100644 index 9670fbdfad498..0000000000000 --- a/src/plugins/kibana/public/settings/sections/indices/index.js +++ /dev/null @@ -1,54 +0,0 @@ -import _ from 'lodash'; -import registry from 'ui/registry/settings_sections'; -import 'plugins/kibana/settings/sections/indices/_create'; -import 'plugins/kibana/settings/sections/indices/_edit'; -import 'plugins/kibana/settings/sections/indices/_field_editor'; -import uiRoutes from 'ui/routes'; -import uiModules from 'ui/modules'; -import indexTemplate from 'plugins/kibana/settings/sections/indices/index.html'; - - -// add a dependency to all of the subsection routes -uiRoutes -.defaults(/settings\/indices/, { - resolve: { - indexPatternIds: function (courier) { - return courier.indexPatterns.getIds(); - } - } -}); - -// wrapper directive, which sets some global stuff up like the left nav -uiModules.get('apps/settings') -.directive('kbnSettingsIndices', function ($route, config, kbnUrl) { - return { - restrict: 'E', - transclude: true, - template: indexTemplate, - link: function ($scope) { - $scope.editingId = $route.current.params.indexPatternId; - config.bindToScope($scope, 'defaultIndex'); - - $scope.$watch('defaultIndex', function () { - const ids = $route.current.locals.indexPatternIds; - $scope.indexPatternList = ids.map(function (id) { - return { - id: id, - url: kbnUrl.eval('#/settings/indices/{{id}}', {id: id}), - class: 'sidebar-item-title ' + ($scope.editingId === id ? 'active' : ''), - default: $scope.defaultIndex === id - }; - }); - }); - - $scope.$emit('application.load'); - } - }; -}); - -registry.register(_.constant({ - order: 1, - name: 'indices', - display: 'Indices', - url: '#/settings/indices' -})); diff --git a/src/plugins/kibana/public/settings/sections/objects/index.js b/src/plugins/kibana/public/settings/sections/objects/index.js deleted file mode 100644 index df98bbf2f5430..0000000000000 --- a/src/plugins/kibana/public/settings/sections/objects/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import _ from 'lodash'; -import registry from 'ui/registry/settings_sections'; -import 'plugins/kibana/settings/sections/objects/_view'; -import 'plugins/kibana/settings/sections/objects/_objects'; -import 'ace'; -import 'ui/directives/confirm_click'; -import uiModules from 'ui/modules'; - - -// add the module deps to this module -uiModules.get('apps/settings'); - -registry.register(_.constant({ - order: 3, - name: 'objects', - display: 'Objects', - url: '#/settings/objects' -})); diff --git a/src/plugins/kibana/public/settings/sections/status/index.js b/src/plugins/kibana/public/settings/sections/status/index.js deleted file mode 100644 index 0b3af4c489a76..0000000000000 --- a/src/plugins/kibana/public/settings/sections/status/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import _ from 'lodash'; -import registry from 'ui/registry/settings_sections'; - -registry.register(_.constant({ - order: 1000, - name: 'status', - display: 'Status', - url: '/status' -})); diff --git a/src/plugins/kibana/public/visualize/editor/editor.js b/src/plugins/kibana/public/visualize/editor/editor.js index 1d115af6c8eee..580bbb0aec632 100644 --- a/src/plugins/kibana/public/visualize/editor/editor.js +++ b/src/plugins/kibana/public/visualize/editor/editor.js @@ -43,9 +43,9 @@ uiRoutes return savedVisualizations.get($route.current.params.id) .catch(courier.redirectWhenMissing({ 'visualization': '/visualize', - 'search': '/settings/objects/savedVisualizations/' + $route.current.params.id, - 'index-pattern': '/settings/objects/savedVisualizations/' + $route.current.params.id, - 'index-pattern-field': '/settings/objects/savedVisualizations/' + $route.current.params.id + 'search': '/management/kibana/objects/savedVisualizations/' + $route.current.params.id, + 'index-pattern': '/management/kibana/objects/savedVisualizations/' + $route.current.params.id, + 'index-pattern-field': '/management/kibana/objects/savedVisualizations/' + $route.current.params.id })); } } diff --git a/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js index aa711aa0adf57..512cfd407cb44 100644 --- a/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js +++ b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js @@ -8,7 +8,7 @@ const app = uiModules.get('app/visualize'); // 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: 'savedVisualizations', title: 'visualizations' }); @@ -70,7 +70,7 @@ app.service('savedVisualizations', function (Promise, es, kbnIndex, SavedVis, Pr if (!typeName || !visTypes.byName[typeName]) { if (!typeName) notify.error('Visualization type is missing. Please add a type to this visualization.', hit); else notify.error('Visualization type of "' + typeName + '" is invalid. Please change to a valid type.', hit); - return kbnUrl.redirect('/settings/objects/savedVisualizations/{{id}}', {id: source.id}); + return kbnUrl.redirect('/management/kibana/objects/savedVisualizations/{{id}}', {id: source.id}); } source.type = visTypes.byName[typeName]; diff --git a/src/ui/public/chrome/api/angular.js b/src/ui/public/chrome/api/angular.js index fb9a21982dea5..e8f9b30115e6b 100644 --- a/src/ui/public/chrome/api/angular.js +++ b/src/ui/public/chrome/api/angular.js @@ -39,7 +39,15 @@ module.exports = function (chrome, internals) { }; chrome.getBreadcrumbs = () => { - return $location.path().split('/').slice(1); + let path = $location.path(); + let length = path.length - 1; + + // trim trailing slash + if (path.charAt(length) === '/') { + length--; + } + + return path.substr(1, length).split('/'); }; const notify = new Notifier(); diff --git a/src/ui/public/directives/bread_crumbs.js b/src/ui/public/directives/bread_crumbs.js index 145c2749f85a0..b5a590a60b308 100644 --- a/src/ui/public/directives/bread_crumbs.js +++ b/src/ui/public/directives/bread_crumbs.js @@ -7,13 +7,14 @@ let module = uiModules.get('kibana'); module.directive('breadCrumbs', function () { return { restrict: 'E', - scope: true, + scope: { + omitCurrentPage: '=' + }, template: breadCrumbsTemplate, controller: function ($scope) { $scope.crumbs = chrome.getBreadcrumbs(); - if (_.last($scope.crumbs) === '') { - // Remove the empty string from the end of the array + if ($scope.omitCurrentPage === true) { $scope.crumbs.pop(); } } diff --git a/src/ui/public/directives/saved_object_finder.js b/src/ui/public/directives/saved_object_finder.js index 92ed0abfa76fd..9649d05d49f8d 100644 --- a/src/ui/public/directives/saved_object_finder.js +++ b/src/ui/public/directives/saved_object_finder.js @@ -227,7 +227,7 @@ module.directive('savedObjectFinder', function ($location, $injector, kbnUrl, Pr }; self.manageObjects = function (type) { - $location.url('/settings/objects?_a=' + rison.encode({tab: type})); + $location.url('/management/kibana/objects?_a=' + rison.encode({tab: type})); }; self.hitCountNoun = function () { diff --git a/src/ui/public/errors.js b/src/ui/public/errors.js index e1d2464a6aaab..4be1e8fde4895 100644 --- a/src/ui/public/errors.js +++ b/src/ui/public/errors.js @@ -194,7 +194,7 @@ _.class(errors.NoDefinedIndexPatterns).inherits(KbnError); /** - * Tried to load a route besides settings/indices but you don't have a default index pattern! + * Tried to load a route besides management/indices but you don't have a default index pattern! */ errors.NoDefaultIndexPattern = function NoDefaultIndexPattern(type) { KbnError.call(this, diff --git a/src/ui/public/field_editor/field_editor.js b/src/ui/public/field_editor/field_editor.js index 3b4692eb1120a..57f9006dfa831 100644 --- a/src/ui/public/field_editor/field_editor.js +++ b/src/ui/public/field_editor/field_editor.js @@ -142,4 +142,3 @@ uiModules } }; }); - diff --git a/src/ui/public/field_format_editor/field_format_editor.js b/src/ui/public/field_format_editor/field_format_editor.js index ee60560543c21..962e1668397b0 100644 --- a/src/ui/public/field_format_editor/field_format_editor.js +++ b/src/ui/public/field_format_editor/field_format_editor.js @@ -3,7 +3,7 @@ import $ from 'jquery'; import uiModules from 'ui/modules'; uiModules -.get('app/settings') +.get('app/management') .directive('fieldFormatEditor', function (Private, $compile) { return { restrict: 'A', diff --git a/src/ui/public/icons/beats.svg b/src/ui/public/icons/beats.svg new file mode 100755 index 0000000000000..af2f80be45af3 --- /dev/null +++ b/src/ui/public/icons/beats.svg @@ -0,0 +1 @@ +Icon-Beats \ No newline at end of file diff --git a/src/ui/public/icons/elasticsearch.svg b/src/ui/public/icons/elasticsearch.svg new file mode 100755 index 0000000000000..d099a0bb40a2f --- /dev/null +++ b/src/ui/public/icons/elasticsearch.svg @@ -0,0 +1 @@ +Icon-Elasticsearch \ No newline at end of file diff --git a/src/ui/public/icons/kibana.svg b/src/ui/public/icons/kibana.svg new file mode 100755 index 0000000000000..b0948973577f5 --- /dev/null +++ b/src/ui/public/icons/kibana.svg @@ -0,0 +1 @@ +Icon-Kibana \ No newline at end of file diff --git a/src/ui/public/icons/logstash.svg b/src/ui/public/icons/logstash.svg new file mode 100755 index 0000000000000..defafe2dce886 --- /dev/null +++ b/src/ui/public/icons/logstash.svg @@ -0,0 +1 @@ +Icon-Logstash \ No newline at end of file diff --git a/src/ui/public/index_patterns/_ensure_some.js b/src/ui/public/index_patterns/_ensure_some.js index ec97f3874926c..02167d9b41042 100644 --- a/src/ui/public/index_patterns/_ensure_some.js +++ b/src/ui/public/index_patterns/_ensure_some.js @@ -6,7 +6,7 @@ export default function EnsureSomeIndexPatternsFn(Private, Notifier, $location, return function promiseHandler(patterns) { if (!patterns || patterns.length === 0) { // notify.warning(new errors.NoDefinedIndexPatterns()); - kbnUrl.redirectPath('/settings/indices'); + kbnUrl.redirectPath('/management/kibana/indices'); } return patterns; diff --git a/src/ui/public/index_patterns/_field.js b/src/ui/public/index_patterns/_field.js index a0c4e6a0cba98..af4471f48feef 100644 --- a/src/ui/public/index_patterns/_field.js +++ b/src/ui/public/index_patterns/_field.js @@ -71,7 +71,7 @@ export default function FieldObjectProvider(Private, shortDotsFilter, $rootScope } Field.prototype.routes = { - edit: '/settings/indices/{{indexPattern.id}}/field/{{name}}' + edit: '/management/kibana/indices/{{indexPattern.id}}/field/{{name}}' }; return Field; diff --git a/src/ui/public/index_patterns/_index_pattern.js b/src/ui/public/index_patterns/_index_pattern.js index 3f40531c57233..0f7b8c8130cee 100644 --- a/src/ui/public/index_patterns/_index_pattern.js +++ b/src/ui/public/index_patterns/_index_pattern.js @@ -30,10 +30,10 @@ export default function IndexPatternFactory(Private, Notifier, config, kbnIndex, const configWatchers = new WeakMap(); const docSources = new WeakMap(); const getRoutes = () => ({ - edit: '/settings/indices/{{id}}', - addField: '/settings/indices/{{id}}/create-field', - indexedFields: '/settings/indices/{{id}}?_a=(tab:indexedFields)', - scriptedFields: '/settings/indices/{{id}}?_a=(tab:scriptedFields)' + edit: '/management/kibana/indices/{{id}}', + addField: '/management/kibana/indices/{{id}}/create-field', + indexedFields: '/management/kibana/indices/{{id}}?_a=(tab:indexedFields)', + scriptedFields: '/management/kibana/indices/{{id}}?_a=(tab:scriptedFields)' }); const mapping = mappingSetup.expandShorthand({ diff --git a/src/ui/public/management/__tests__/index.js b/src/ui/public/management/__tests__/index.js new file mode 100644 index 0000000000000..d0316ca48472d --- /dev/null +++ b/src/ui/public/management/__tests__/index.js @@ -0,0 +1,10 @@ +import expect from 'expect.js'; + +import management from 'ui/management'; +import ManagementSection from 'ui/management/section'; + +describe('Management', () => { + it('provides ManagementSection', () => { + expect(management).to.be.a(ManagementSection); + }); +}); diff --git a/src/ui/public/management/__tests__/section.js b/src/ui/public/management/__tests__/section.js new file mode 100644 index 0000000000000..f16aad04a431e --- /dev/null +++ b/src/ui/public/management/__tests__/section.js @@ -0,0 +1,108 @@ +import expect from 'expect.js'; + +import ManagementSection from 'ui/management/section'; +import IndexedArray from 'ui/indexed_array'; + +describe('ManagementSection', () => { + describe('constructor', () => { + it('defaults display to id', () => { + const section = new ManagementSection('kibana'); + expect(section.display).to.be('kibana'); + }); + + it('exposes items', () => { + const section = new ManagementSection('kibana'); + expect(section.items).to.beEmpty; + }); + + it('sets url based on path', () => { + const section = new ManagementSection('kibana', { path: 'foo' }); + expect(section.url).to.be('#/management/foo'); + }); + + it('assigns all options', () => { + const section = new ManagementSection('kibana', { description: 'test' }); + expect(section.description).to.be('test'); + }); + }); + + describe('register', () => { + let section; + + beforeEach(() => { + section = new ManagementSection('kibana'); + }); + + it('returns a ManagementSection', () => { + expect(section.register('about')).to.be.a(ManagementSection); + }); + + it('provides a reference to the parent', () => { + expect(section.register('about').parent).to.eql(section); + }); + + it('adds item', function () { + section.register('about', { description: 'test' }); + + expect(section.items).to.have.length(1); + expect(section.items[0]).to.be.a(ManagementSection); + expect(section.items[0].id).to.be('about'); + }); + + it('can only register a section once', () => { + let threwException = false; + section.register('about'); + + try { + section.register('about'); + } catch (e) { + threwException = e.message.indexOf('is already registered') > -1; + }; + + expect(threwException).to.be(true); + }); + }); + + describe('get', () => { + let section; + + beforeEach(() => { + section = new ManagementSection('kibana'); + section.register('about'); + }); + + it('returns registered section', () => { + expect(section.get('about')).to.be.a(ManagementSection); + }); + + it('returns undefined if un-registered', () => { + expect(section.get('unknown')).to.be(undefined); + }); + }); + + describe('items', () => { + let section; + + beforeEach(() => { + section = new ManagementSection('kibana'); + + section.register('three', { order: 3 }); + section.register('one', { order: 1 }); + section.register('two', { order: 2 }); + }); + + it('is an indexed array', () => { + expect(section.items).to.be.a(IndexedArray); + }); + + it('is indexed on id', () => { + expect(section.items.byId).to.be.an('object'); + expect(Object.keys(section.items.byId)).to.eql(['three', 'one', 'two']); + }); + + it('can be ordered', () => { + const ids = section.items.inOrder.map((i) => { return i.id; }); + expect(ids).to.eql(['one', 'two', 'three']); + }); + }); +}); diff --git a/src/ui/public/management/index.js b/src/ui/public/management/index.js new file mode 100644 index 0000000000000..55939d00a1b09 --- /dev/null +++ b/src/ui/public/management/index.js @@ -0,0 +1,23 @@ +import ManagementSection from './section'; + +const sections = new ManagementSection('management', { + display: 'Management' +}); + +// TODO: where should this live? +sections.register('data', { + display: 'Connect Data', + order: 0 +}); + +sections.register('elasticsearch', { + display: 'Elasticsearch', + order: 10 +}); + +sections.register('kibana', { + display: 'Kibana', + order: 20, +}); + +export default sections; diff --git a/src/ui/public/management/section.js b/src/ui/public/management/section.js new file mode 100644 index 0000000000000..617132833c816 --- /dev/null +++ b/src/ui/public/management/section.js @@ -0,0 +1,68 @@ +import {assign} from 'lodash'; +import IndexedArray from 'ui/indexed_array'; + +export default class ManagementSection { + + /** + * @param {string} id + * @param {object} options + * @returns {ManagementSection} + */ + + constructor(id, options = {}) { + this.display = id; + this.id = id; + this.items = new IndexedArray({ + index: ['id'], + order: ['order'] + }); + + if (!options.url) { + options.url = '#/management/' + options.path || ''; + } + + assign(this, options); + } + + /** + * Registers a section + * + * @param {string} id + * @param {object} options + * @returns {ManagementSection} + */ + + register(id, options = {}) { + const item = new ManagementSection(id, assign(options, { parent: this })); + + if (this.hasItem(id)) { + throw new Error(`'${id}' is already registered`); + } + + this.items.push(item); + + return item; + } + + /** + * Determine if an id is already registered + * + * @param {string} id + * @returns {boolean} + */ + + hasItem(id) { + return this.items.byId.hasOwnProperty(id); + } + + /** + * Fetches a section by id + * + * @param {string} id + * @returns {ManagementSection} + */ + + get(id) { + return this.items.byId[id]; + } +} diff --git a/src/ui/public/registry/settings_sections.js b/src/ui/public/registry/settings_sections.js deleted file mode 100644 index 0dcd261a2bd33..0000000000000 --- a/src/ui/public/registry/settings_sections.js +++ /dev/null @@ -1,5 +0,0 @@ -import uiRegistry from 'ui/registry/_registry'; -export default uiRegistry({ - name: 'settingsSections', - order: ['order'] -}); diff --git a/src/ui/public/styles/base.less b/src/ui/public/styles/base.less index bc5d2eb534cc4..c91f4742e93fa 100644 --- a/src/ui/public/styles/base.less +++ b/src/ui/public/styles/base.less @@ -608,4 +608,50 @@ fieldset { } } +.panel-product { + margin-bottom: 10px; + + .panel-heading { + background-color: @kibanaBlue3; + border-radius: 0; + color: @white; + font-size: 17px; + padding: 7px 10px; + } + + .panel-heading-elasticsearch, + .panel-heading-kibana, + .panel-heading-beats, + .panel-heading-logstash { + background-position: 4px 7px; + background-repeat: no-repeat; + background-size: 26px 26px; + padding-left: 32px; + } + + .panel-heading-elasticsearch { + background-color: @product-elasticsearch; + background-image: url("~ui/icons/elasticsearch.svg"); + } + + .panel-heading-kibana { + background-color: @product-kibana; + background-image: url("~ui/icons/kibana.svg"); + } + + .panel-heading-beats { + background-color: @product-beats; + background-image: url("~ui/icons/beats.svg"); + } + + .panel-heading-logstash { + background-color: @product-logstash; + background-image: url("~ui/icons/logstash.svg"); + } + + .panel-body { + padding: 10px; + } +} + @import (reference) "~dragula/dist/dragula.css"; diff --git a/src/ui/public/styles/variables/colors.less b/src/ui/public/styles/variables/colors.less index ece20608f74d5..5bbddaa6a37b6 100644 --- a/src/ui/public/styles/variables/colors.less +++ b/src/ui/public/styles/variables/colors.less @@ -62,3 +62,8 @@ @kibanaPink1: #E8488B; @kibanaPink2: #FF95C1; + +@product-kibana: @kibanaPink1; +@product-elasticsearch: #3EBEB0; +@product-logstash: #F3BD19; +@product-beats: #07A5DE; diff --git a/src/ui/public/styles/variables/for-theme.less b/src/ui/public/styles/variables/for-theme.less index 9995ba06cefb6..6dbb4cf26dd38 100644 --- a/src/ui/public/styles/variables/for-theme.less +++ b/src/ui/public/styles/variables/for-theme.less @@ -111,14 +111,14 @@ @app-switcher-app-description-color: @gray; -// Settings ==================================================================== -@settings-objects-list-border: @gray-lighter; -@settings-objects-empty-color: @gray-light; -@settings-objects-action-bar-bg: @gray-lighter; +// Management ================================================================== +@management-objects-list-border: @gray-lighter; +@management-objects-empty-color: @gray-light; +@management-objects-action-bar-bg: @gray-lighter; -@settings-advanced-table-default-color: @input-color-placeholder; +@management-advanced-table-default-color: @input-color-placeholder; -@settings-indices-active-color: @btn-success-bg; +@management-indices-active-color: @btn-success-bg; // Visualize =================================================================== diff --git a/src/ui/ui_exports.js b/src/ui/ui_exports.js index b7f985d85bf67..9cd4d2dc1ebed 100644 --- a/src/ui/ui_exports.js +++ b/src/ui/ui_exports.js @@ -81,7 +81,7 @@ class UiExports { case 'spyModes': case 'chromeNavControls': case 'navbarExtensions': - case 'settingsSections': + case 'managementSections': case 'docViews': case 'hacks': return (plugin, spec) => { diff --git a/test/functional/apps/settings/_creation_form_changes.js b/test/functional/apps/management/_creation_form_changes.js similarity index 100% rename from test/functional/apps/settings/_creation_form_changes.js rename to test/functional/apps/management/_creation_form_changes.js diff --git a/test/functional/apps/settings/_index_pattern_create_delete.js b/test/functional/apps/management/_index_pattern_create_delete.js similarity index 100% rename from test/functional/apps/settings/_index_pattern_create_delete.js rename to test/functional/apps/management/_index_pattern_create_delete.js diff --git a/test/functional/apps/settings/_index_pattern_popularity.js b/test/functional/apps/management/_index_pattern_popularity.js similarity index 100% rename from test/functional/apps/settings/_index_pattern_popularity.js rename to test/functional/apps/management/_index_pattern_popularity.js diff --git a/test/functional/apps/settings/_index_pattern_results_sort.js b/test/functional/apps/management/_index_pattern_results_sort.js similarity index 100% rename from test/functional/apps/settings/_index_pattern_results_sort.js rename to test/functional/apps/management/_index_pattern_results_sort.js diff --git a/test/functional/apps/settings/_initial_state.js b/test/functional/apps/management/_initial_state.js similarity index 100% rename from test/functional/apps/settings/_initial_state.js rename to test/functional/apps/management/_initial_state.js diff --git a/test/functional/apps/settings/_advanced_settings.js b/test/functional/apps/management/_kibana_settings.js similarity index 87% rename from test/functional/apps/settings/_advanced_settings.js rename to test/functional/apps/management/_kibana_settings.js index 498842801fbd2..c9f8783d255a5 100644 --- a/test/functional/apps/settings/_advanced_settings.js +++ b/test/functional/apps/management/_kibana_settings.js @@ -19,11 +19,14 @@ bdd.describe('creating and deleting default index', function describeIndexTests( bdd.describe('index pattern creation', function indexPatternCreation() { bdd.before(function () { - return settingsPage.createIndexPattern(); + return settingsPage.createIndexPattern() + .then(function () { + return settingsPage.navigateTo(); + }); }); bdd.it('should allow setting advanced settings', function () { - return settingsPage.clickAdvancedTab() + return settingsPage.clickKibanaSettings() .then(function TestCallSetAdvancedSettingsForTimezone() { common.saveScreenshot('Settings-advanced-tab'); common.debug('calling setAdvancedSetting'); @@ -37,6 +40,5 @@ bdd.describe('creating and deleting default index', function describeIndexTests( expect(advancedSetting).to.be('America/Phoenix'); }); }); - }); }); diff --git a/test/functional/apps/settings/index.js b/test/functional/apps/management/index.js similarity index 95% rename from test/functional/apps/settings/index.js rename to test/functional/apps/management/index.js index 08a7fc86a1eff..9c04fffedef76 100644 --- a/test/functional/apps/settings/index.js +++ b/test/functional/apps/management/index.js @@ -21,5 +21,5 @@ bdd.describe('settings app', function () { require('./_index_pattern_create_delete'); require('./_index_pattern_results_sort'); require('./_index_pattern_popularity'); - require('./_advanced_settings'); + require('./_kibana_settings'); }); diff --git a/test/functional/index.js b/test/functional/index.js index 52202e316f58f..c881e78b1abe7 100644 --- a/test/functional/index.js +++ b/test/functional/index.js @@ -22,7 +22,7 @@ define(function (require) { 'intern/dojo/node!../support/index', 'intern/dojo/node!./apps/discover', 'intern/dojo/node!./status_page', - 'intern/dojo/node!./apps/settings', + 'intern/dojo/node!./apps/management', 'intern/dojo/node!./apps/visualize', 'intern/dojo/node!./apps/console', 'intern/dojo/node!./apps/dashboard' diff --git a/test/server_config.js b/test/server_config.js index 35bf5fefa7386..a462a525685b9 100644 --- a/test/server_config.js +++ b/test/server_config.js @@ -40,7 +40,7 @@ module.exports = { }, settings: { pathname: kibanaURL, - hash: '/settings' + hash: '/management' }, console: { pathname: 'app/console', diff --git a/test/support/pages/settings_page.js b/test/support/pages/settings_page.js index 5ac4b080d0e3e..1695c1504caa1 100644 --- a/test/support/pages/settings_page.js +++ b/test/support/pages/settings_page.js @@ -9,9 +9,21 @@ export default (function () { SettingsPage.prototype = { constructor: SettingsPage, - clickAdvancedTab: function () { - common.debug('in clickAdvancedTab'); - return common.findTestSubject('settingsNav advanced').click(); + clickNavigation: function () { + // TODO: find better way to target the element + return this.remote.findDisplayedByCssSelector('.app-link:nth-child(5) a').click(); + }, + + clickPath: function (path) { + return this.remote.findDisplayedByCssSelector('[kbn-href="#/management/' + path + '"]').click(); + }, + + clickKibanaSettings: function () { + return this.clickPath('kibana/settings'); + }, + + clickKibanaIndicies: function () { + return this.clickPath('kibana/indices'); }, getAdvancedSettings: function getAdvancedSettings(propertyName) { @@ -20,14 +32,9 @@ export default (function () { .getVisibleText(); }, - - clickAdvancedTab: function () { - common.debug('in clickAdvancedTab'); - return common.findTestSubject('settingsNav advanced').click(); - }, - setAdvancedSettings: function setAdvancedSettings(propertyName, propertyValue) { var self = this; + return common.findTestSubject('advancedSetting&' + propertyName + ' editButton') .click() .then(function () { @@ -51,12 +58,10 @@ export default (function () { .getVisibleText(); }, - navigateTo: function () { return common.navigateToApp('settings'); }, - getTimeBasedEventsCheckbox: function () { return this.remote.setFindTimeout(defaultFindTimeout) .findByCssSelector('input[ng-model="index.isTimeBased"]'); @@ -108,12 +113,7 @@ export default (function () { getCreateButton: function () { return this.remote.setFindTimeout(defaultFindTimeout) - .findDisplayedByCssSelector('.btn'); - }, - - clickCreateButton: function () { - return this.remote.setFindTimeout(defaultFindTimeout) - .findByCssSelector('.btn').click(); + .findDisplayedByCssSelector('[type="submit"]'); }, clickDefaultIndexButton: function () { @@ -169,7 +169,7 @@ export default (function () { getFieldsTabCount: function () { var self = this; - var selector = 'li.kbn-settings-tab.active a small'; + var selector = 'li.kbn-management-tab.active a small'; return common.try(function () { return self.remote.setFindTimeout(defaultFindTimeout / 10) @@ -284,21 +284,26 @@ export default (function () { var self = this; return common.try(function () { - return self.selectTimeFieldOption('@timestamp') - .then(function () { - return self.getCreateButton().click(); - }); + return self.navigateTo() + .then(function () { + return self.selectTimeFieldOption('@timestamp'); + }) + .then(function () { + return self.getCreateButton().click(); + }); }) .then(function () { return common.try(function () { return self.remote.getCurrentUrl() - .then(function (currentUrl) { - if (!currentUrl.match(/indices\/.+\?/)) { - throw new Error('Index pattern not created'); - } else { - common.debug('Index pattern created: ' + currentUrl); - } - }); + .then(function (currentUrl) { + common.log('currentUrl', currentUrl); + + if (!currentUrl.match(/indices\/.+\?/)) { + throw new Error('Index pattern not created'); + } else { + common.debug('Index pattern created: ' + currentUrl); + } + }); }); }); }, From b43ac4cdd59be22896655e64acf2a91858bd9228 Mon Sep 17 00:00:00 2001 From: CJ Cenizal Date: Wed, 8 Jun 2016 16:48:30 -0700 Subject: [PATCH 02/17] Refactor management styles for less specificity. --- .../kibana/public/management/landing.html | 6 +-- .../kibana/public/management/styles/main.less | 49 ++++++++++--------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/plugins/kibana/public/management/landing.html b/src/plugins/kibana/public/management/landing.html index 18ecf9a50def7..81a761c4e0c5e 100644 --- a/src/plugins/kibana/public/management/landing.html +++ b/src/plugins/kibana/public/management/landing.html @@ -10,12 +10,12 @@ ng-class="{ 'management-section-info-expanded': section.showInfo }" class="col-xs-12 management-section management-section-{{::section.id}}"> -
+
{{::section.display}} @@ -28,7 +28,7 @@ class="col-xs-4 col-md-3" ng-repeat="item in section.items.inOrder"> - + {{::item.display}} diff --git a/src/plugins/kibana/public/management/styles/main.less b/src/plugins/kibana/public/management/styles/main.less index 1e9e0bb1ea815..495f939685045 100644 --- a/src/plugins/kibana/public/management/styles/main.less +++ b/src/plugins/kibana/public/management/styles/main.less @@ -41,6 +41,31 @@ kbn-management-app { kbn-management-landing { padding: 5px; +} + + .management-panel-product { + margin-bottom: 10px; + + .panel-body { + padding-bottom: 30px; + position: relative; + } + } + + .management-section { + padding-left: 5px; + padding-right: 5px; + } + + .management-link { + font-size: 17px; + line-height: 32px; + } + + .panel-heading-icon { + font-size: 0.9em; + padding: 5px; + } .product-overview { color: @kibanaGray2; @@ -55,18 +80,8 @@ kbn-management-landing { position: absolute; } - .panel-heading i { - font-size: 0.9em; - padding: 5px; - } - - .management-section { - padding-left: 5px; - padding-right: 5px; - } - .management-section-info-expanded { - .panel-heading i { + .panel-heading-icon { color: @black; } @@ -75,18 +90,6 @@ kbn-management-landing { } } - .panel-product { - margin-bottom: 10px; - - .panel-body { - padding-bottom: 30px; - font-size: 17px; - line-height: 32px; - position: relative; - } - } -} - kbn-management-objects { form { margin-bottom: @line-height-computed; From 0ac1c8c9a76b075ab091f1da1d85b01d0ea036ad Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Fri, 10 Jun 2016 11:13:46 -0700 Subject: [PATCH 03/17] Changes MangementSection.get{,Section} Signed-off-by: Tyler Smalley --- src/plugins/kibana/public/management/index.js | 4 ++-- .../kibana/public/management/sections/indices/index.js | 10 +++++----- .../kibana/public/management/sections/objects/index.js | 2 +- .../public/management/sections/settings/index.js | 2 +- src/ui/public/management/__tests__/section.js | 6 +++--- src/ui/public/management/section.js | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/plugins/kibana/public/management/index.js b/src/plugins/kibana/public/management/index.js index b1dd7b35a0e63..cc6c25458fb63 100644 --- a/src/plugins/kibana/public/management/index.js +++ b/src/plugins/kibana/public/management/index.js @@ -38,7 +38,7 @@ uiModules link: function ($scope) { timefilter.enabled = false; $scope.sections = management.items.inOrder; - $scope.section = management.get($scope.sectionName) || management; + $scope.section = management.getSection($scope.sectionName) || management; if ($scope.section) { $scope.section.items.forEach(item => { @@ -46,7 +46,7 @@ uiModules }); } - management.get('kibana').info = `Build ${buildNum}, Commit SHA ${buildSha.substr(0, 8)}`; + management.getSection('kibana').info = `Build ${buildNum}, Commit SHA ${buildSha.substr(0, 8)}`; } }; }); diff --git a/src/plugins/kibana/public/management/sections/indices/index.js b/src/plugins/kibana/public/management/sections/indices/index.js index faac8d0ec8af9..3298ac5e06fc8 100644 --- a/src/plugins/kibana/public/management/sections/indices/index.js +++ b/src/plugins/kibana/public/management/sections/indices/index.js @@ -21,10 +21,10 @@ uiRoutes uiModules.get('apps/management') .run(function (config) { const index = config.get('defaultIndex'); - const kibana = management.get('kibana'); + const kibana = management.getSection('kibana'); - if (index && kibana && kibana.get('indices')) { - kibana.get('indices').url = `#/management/kibana/indices/${index}`; + if (index && kibana && kibana.getSection('indices')) { + kibana.getSection('indices').url = `#/management/kibana/indices/${index}`; } }) .directive('kbnManagementIndices', function ($route, config, kbnUrl) { @@ -53,13 +53,13 @@ uiModules.get('apps/management') }; }); -management.get('data').register('indices', { +management.getSection('data').register('indices', { display: 'Existing Data', order: 0, path: 'kibana/indices/' }); -management.get('kibana').register('indices', { +management.getSection('kibana').register('indices', { display: 'Index Patterns', order: 0, path: 'kibana/indices/' diff --git a/src/plugins/kibana/public/management/sections/objects/index.js b/src/plugins/kibana/public/management/sections/objects/index.js index 3f9a1e96d7d88..69e2f4842f698 100644 --- a/src/plugins/kibana/public/management/sections/objects/index.js +++ b/src/plugins/kibana/public/management/sections/objects/index.js @@ -8,7 +8,7 @@ import uiModules from 'ui/modules'; // add the module deps to this module uiModules.get('apps/management'); -management.get('kibana').register('objects', { +management.getSection('kibana').register('objects', { display: 'Saved Objects', order: 10, path: 'kibana/objects' diff --git a/src/plugins/kibana/public/management/sections/settings/index.js b/src/plugins/kibana/public/management/sections/settings/index.js index 45da5606b3e72..b3912faac5d53 100644 --- a/src/plugins/kibana/public/management/sections/settings/index.js +++ b/src/plugins/kibana/public/management/sections/settings/index.js @@ -39,7 +39,7 @@ uiModules.get('apps/management') }; }); -management.get('kibana').register('settings', { +management.getSection('kibana').register('settings', { display: 'Settings', order: 20, path: 'kibana/settings' diff --git a/src/ui/public/management/__tests__/section.js b/src/ui/public/management/__tests__/section.js index f16aad04a431e..512cf65ae1993 100644 --- a/src/ui/public/management/__tests__/section.js +++ b/src/ui/public/management/__tests__/section.js @@ -63,7 +63,7 @@ describe('ManagementSection', () => { }); }); - describe('get', () => { + describe('getSection', () => { let section; beforeEach(() => { @@ -72,11 +72,11 @@ describe('ManagementSection', () => { }); it('returns registered section', () => { - expect(section.get('about')).to.be.a(ManagementSection); + expect(section.getSection('about')).to.be.a(ManagementSection); }); it('returns undefined if un-registered', () => { - expect(section.get('unknown')).to.be(undefined); + expect(section.getSection('unknown')).to.be(undefined); }); }); diff --git a/src/ui/public/management/section.js b/src/ui/public/management/section.js index 617132833c816..209f4b6f4a21f 100644 --- a/src/ui/public/management/section.js +++ b/src/ui/public/management/section.js @@ -62,7 +62,7 @@ export default class ManagementSection { * @returns {ManagementSection} */ - get(id) { + getSection(id) { return this.items.byId[id]; } } From 8e69ed2f0b2732928bddcbf7b4a82ebdbe407f04 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Fri, 10 Jun 2016 11:14:06 -0700 Subject: [PATCH 04/17] Maintain section selection for child pages Signed-off-by: Tyler Smalley --- src/plugins/kibana/public/management/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/kibana/public/management/index.js b/src/plugins/kibana/public/management/index.js index cc6c25458fb63..ae8e064ed2590 100644 --- a/src/plugins/kibana/public/management/index.js +++ b/src/plugins/kibana/public/management/index.js @@ -42,7 +42,7 @@ uiModules if ($scope.section) { $scope.section.items.forEach(item => { - item.class = item.url === '#' + $location.path() ? 'active' : undefined; + item.class = `#${$location.path()}`.indexOf(item.url) > -1 ? 'active' : undefined; }); } From 78e96f9af042fafdc1ed16b707787eb6cdacfb95 Mon Sep 17 00:00:00 2001 From: Tyler Smalley Date: Fri, 10 Jun 2016 11:14:54 -0700 Subject: [PATCH 05/17] Removes title on Indicies as it's represented in the sub-nav Signed-off-by: Tyler Smalley --- src/plugins/kibana/public/management/sections/indices/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/kibana/public/management/sections/indices/index.html b/src/plugins/kibana/public/management/sections/indices/index.html index dfa8410b500dc..68c95608bd07d 100644 --- a/src/plugins/kibana/public/management/sections/indices/index.html +++ b/src/plugins/kibana/public/management/sections/indices/index.html @@ -2,7 +2,6 @@
View {{ title }} Delete {{ title }} Object @@ -32,5 +32,5 @@

Proceed with caution