diff --git a/src/plugins/kibana/index.js b/src/plugins/kibana/index.js index 7958fc35c0f1a..a36b9bd28f829 100644 --- a/src/plugins/kibana/index.js +++ b/src/plugins/kibana/index.js @@ -21,7 +21,8 @@ module.exports = function (kibana) { 'visTypes', 'spyModes', 'fieldFormats', - 'navbarExtensions' + 'navbarExtensions', + 'settingsSections' ], injectVars: function (server, options) { diff --git a/src/plugins/kibana/public/kibana.js b/src/plugins/kibana/public/kibana.js index 8303dd4a5807e..d3704cba58be1 100644 --- a/src/plugins/kibana/public/kibana.js +++ b/src/plugins/kibana/public/kibana.js @@ -1,7 +1,6 @@ // autoloading // preloading (for faster webpack builds) - import moment from 'moment-timezone'; import chrome from 'ui/chrome'; import routes from 'ui/routes'; @@ -13,7 +12,6 @@ import 'plugins/kibana/discover/index'; import 'plugins/kibana/visualize/index'; import 'plugins/kibana/dashboard/index'; import 'plugins/kibana/settings/index'; -import 'plugins/kibana/settings/sections'; import 'plugins/kibana/doc'; import 'ui/vislib'; import 'ui/agg_response'; diff --git a/src/plugins/kibana/public/settings/index.js b/src/plugins/kibana/public/settings/index.js index 13da6dd62db31..09f27d9a0aa72 100644 --- a/src/plugins/kibana/public/settings/index.js +++ b/src/plugins/kibana/public/settings/index.js @@ -1,13 +1,17 @@ import _ from 'lodash'; -import sections from 'plugins/kibana/settings/sections/index'; +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'; -define(function (require) { - +import registry from 'ui/registry/settings_sections'; +define(function (require) { require('ui/routes') .when('/settings', { redirectTo: '/settings/indices' @@ -21,6 +25,7 @@ define(function (require) { require('ui/modules') .get('apps/settings') .directive('kbnSettingsApp', function (Private, $route, timefilter) { + const sections = Private(registry); return { restrict: 'E', template: require('plugins/kibana/settings/app.html'), @@ -30,7 +35,7 @@ define(function (require) { }, link: function ($scope, $el) { timefilter.enabled = false; - $scope.sections = sections; + $scope.sections = sections.inOrder; $scope.section = _.find($scope.sections, { name: $scope.sectionName }); $scope.sections.forEach(function (section) { diff --git a/src/plugins/kibana/public/settings/sections/about/index.js b/src/plugins/kibana/public/settings/sections/about/index.js index 6cebf1e650dcf..a82e7aedc903b 100644 --- a/src/plugins/kibana/public/settings/sections/about/index.js +++ b/src/plugins/kibana/public/settings/sections/about/index.js @@ -1,6 +1,7 @@ import _ from 'lodash'; -define(function (require) { +import registry from 'ui/registry/settings_sections'; +define(function (require) { require('ui/routes') .when('/settings/about', { template: require('plugins/kibana/settings/sections/about/index.html') @@ -13,10 +14,10 @@ define(function (require) { $scope.buildSha = buildSha; }); - return { - order: Infinity, + registry.register(_.constant({ + order: 1001, name: 'about', display: 'About', url: '#/settings/about' - }; + })); }); diff --git a/src/plugins/kibana/public/settings/sections/advanced/index.js b/src/plugins/kibana/public/settings/sections/advanced/index.js index ef7895e808f9b..7f531c4d1e0e4 100644 --- a/src/plugins/kibana/public/settings/sections/advanced/index.js +++ b/src/plugins/kibana/public/settings/sections/advanced/index.js @@ -1,10 +1,9 @@ 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'; -define(function (require) { - - +define(function (require) { require('ui/routes') .when('/settings/advanced', { template: require('plugins/kibana/settings/sections/advanced/index.html') @@ -52,10 +51,10 @@ define(function (require) { }; }); - return { + registry.register(_.constant({ order: 2, name: 'advanced', display: 'Advanced', url: '#/settings/advanced' - }; + })); }); diff --git a/src/plugins/kibana/public/settings/sections/index.js b/src/plugins/kibana/public/settings/sections/index.js deleted file mode 100644 index c2be1402c526c..0000000000000 --- a/src/plugins/kibana/public/settings/sections/index.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function (require) { - // each of these private modules returns an object defining that section, their properties - // are used to create the nav bar - return [ - require('plugins/kibana/settings/sections/indices/index'), - require('plugins/kibana/settings/sections/advanced/index'), - require('plugins/kibana/settings/sections/objects/index'), - require('plugins/kibana/settings/sections/status/index'), - require('plugins/kibana/settings/sections/about/index') - ]; -}); diff --git a/src/plugins/kibana/public/settings/sections/indices/index.js b/src/plugins/kibana/public/settings/sections/indices/index.js index dfba694eef411..fa9f77c24d1b6 100644 --- a/src/plugins/kibana/public/settings/sections/indices/index.js +++ b/src/plugins/kibana/public/settings/sections/indices/index.js @@ -1,10 +1,10 @@ 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'; -define(function (require) { - +define(function (require) { // add a dependency to all of the subsection routes require('ui/routes') .defaults(/settings\/indices/, { @@ -43,9 +43,10 @@ define(function (require) { }; }); - return { + registry.register(_.constant({ + order: 1, name: 'indices', display: 'Indices', - url: '#/settings/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 index e5f1395451644..38b8758f0e456 100644 --- a/src/plugins/kibana/public/settings/sections/objects/index.js +++ b/src/plugins/kibana/public/settings/sections/objects/index.js @@ -1,16 +1,17 @@ +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'; define(function (require) { - - // add the module deps to this module require('ui/modules').get('apps/settings'); - return { + 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 index 9dbbf3a1473f7..3f6272af27801 100644 --- a/src/plugins/kibana/public/settings/sections/status/index.js +++ b/src/plugins/kibana/public/settings/sections/status/index.js @@ -1,10 +1,11 @@ import _ from 'lodash'; -define(function (require) { +import registry from 'ui/registry/settings_sections'; - return { - order: 3, +define(function (require) { + registry.register(_.constant({ + order: 1000, name: 'status', display: 'Status', url: '/status' - }; + })); }); diff --git a/src/ui/public/registry/settings_sections.js b/src/ui/public/registry/settings_sections.js new file mode 100644 index 0000000000000..b00f1363eb053 --- /dev/null +++ b/src/ui/public/registry/settings_sections.js @@ -0,0 +1,6 @@ +define(function (require) { + return require('ui/registry/_registry')({ + name: 'settingsSections', + order: ['order'] + }); +}); diff --git a/src/ui/ui_exports.js b/src/ui/ui_exports.js index 3b552798b16dd..4bf2d26e6eed0 100644 --- a/src/ui/ui_exports.js +++ b/src/ui/ui_exports.js @@ -62,6 +62,7 @@ class UiExports { case 'spyModes': case 'chromeNavControls': case 'navbarExtensions': + case 'settingsSections': return (plugin, spec) => { this.aliases[type] = _.union(this.aliases[type] || [], spec); };