diff --git a/src/plugins/kibana/public/dashboard/index.js b/src/plugins/kibana/public/dashboard/index.js index 4d6fea7fb3447..3e53421f928ad 100644 --- a/src/plugins/kibana/public/dashboard/index.js +++ b/src/plugins/kibana/public/dashboard/index.js @@ -16,6 +16,9 @@ define(function (require) { require('plugins/kibana/dashboard/services/saved_dashboards'); require('plugins/kibana/dashboard/styles/main.less'); + require('ui/saved_objects/saved_object_registry').register(require('plugins/kibana/dashboard/services/saved_dashboard_register')); + + var app = require('ui/modules').get('app/dashboard', [ 'elasticsearch', 'ngRoute', @@ -49,6 +52,7 @@ define(function (require) { app.directive('dashboardApp', function (Notifier, courier, AppState, timefilter, kbnUrl) { return { controller: function ($scope, $route, $routeParams, $location, Private, getAppState) { + var queryFilter = Private(require('ui/filter_bar/query_filter')); var notify = new Notifier({ diff --git a/src/plugins/kibana/public/dashboard/services/saved_dashboard_register.js b/src/plugins/kibana/public/dashboard/services/saved_dashboard_register.js new file mode 100644 index 0000000000000..df54e6c3abdbc --- /dev/null +++ b/src/plugins/kibana/public/dashboard/services/saved_dashboard_register.js @@ -0,0 +1,5 @@ +define(function (require) { + return function savedDashboardFn(savedDashboards) { + return savedDashboards; + }; +}); diff --git a/src/plugins/kibana/public/dashboard/services/saved_dashboards.js b/src/plugins/kibana/public/dashboard/services/saved_dashboards.js index 70711f8dafbc2..5d9024000bea3 100644 --- a/src/plugins/kibana/public/dashboard/services/saved_dashboards.js +++ b/src/plugins/kibana/public/dashboard/services/saved_dashboards.js @@ -17,6 +17,13 @@ define(function (require) { this.type = SavedDashboard.type; this.Class = SavedDashboard; + + this.loaderProperties = { + name: 'dashboards', + noun: 'Dashboard', + nouns: 'dashboards' + }; + // Returns a single dashboard by ID, should be the name of the dashboard this.get = function (id) { diff --git a/src/plugins/kibana/public/discover/index.js b/src/plugins/kibana/public/discover/index.js index 4b776cacf88ae..1a34560164418 100644 --- a/src/plugins/kibana/public/discover/index.js +++ b/src/plugins/kibana/public/discover/index.js @@ -8,4 +8,7 @@ define(function (require, module, exports) { // preload require('ui/doc_table/components/table_row'); + + require('ui/saved_objects/saved_object_registry').register(require('plugins/kibana/discover/saved_searches/saved_search_register')); + }); diff --git a/src/plugins/kibana/public/discover/saved_searches/saved_search_register.js b/src/plugins/kibana/public/discover/saved_searches/saved_search_register.js new file mode 100644 index 0000000000000..82a6f38df3ce4 --- /dev/null +++ b/src/plugins/kibana/public/discover/saved_searches/saved_search_register.js @@ -0,0 +1,5 @@ +define(function (require) { + return function savedSearchObjectFn(savedSearches) { + return savedSearches; + }; +}); 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 782480bc5c9fd..b6c9c6373bccb 100644 --- a/src/plugins/kibana/public/discover/saved_searches/saved_searches.js +++ b/src/plugins/kibana/public/discover/saved_searches/saved_searches.js @@ -25,6 +25,12 @@ define(function (require) { this.type = SavedSearch.type; this.Class = SavedSearch; + this.loaderProperties = { + name: 'searches', + noun: 'Saved Search', + nouns: 'saved searches' + }; + this.get = function (id) { return (new SavedSearch(id)).init(); }; diff --git a/src/plugins/kibana/public/visualize/index.js b/src/plugins/kibana/public/visualize/index.js index 84703656a4009..870549bb11c1a 100644 --- a/src/plugins/kibana/public/visualize/index.js +++ b/src/plugins/kibana/public/visualize/index.js @@ -23,4 +23,8 @@ define(function (require) { require('plugins/kibana/visualize/editor/vis_options'); require('plugins/kibana/visualize/saved_visualizations/_saved_vis'); require('plugins/kibana/visualize/saved_visualizations/saved_visualizations'); + + require('ui/saved_objects/saved_object_registry') + .register(require('plugins/kibana/visualize/saved_visualizations/saved_visualization_register')); + }); diff --git a/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualization_register.js b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualization_register.js new file mode 100644 index 0000000000000..a6d59dda16fed --- /dev/null +++ b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualization_register.js @@ -0,0 +1,5 @@ +define(function (require) { + return function savedVisualizationFn(savedVisualizations) { + return savedVisualizations; + }; +}); 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 d2ea77ace4712..aa49e31513894 100644 --- a/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js +++ b/src/plugins/kibana/public/visualize/saved_visualizations/saved_visualizations.js @@ -20,6 +20,12 @@ define(function (require) { this.type = SavedVis.type; this.Class = SavedVis; + this.loaderProperties = { + name: 'visualizations', + noun: 'Visualization', + nouns: 'visualizations' + }; + this.get = function (id) { return (new SavedVis(id)).init(); }; diff --git a/src/ui/public/directives/saved_object_finder.js b/src/ui/public/directives/saved_object_finder.js index 21d498f9db44f..9167cfaa38f1a 100644 --- a/src/ui/public/directives/saved_object_finder.js +++ b/src/ui/public/directives/saved_object_finder.js @@ -4,28 +4,9 @@ define(function (require) { var rison = require('ui/utils/rison'); var keymap = require('ui/utils/key_map'); - module.directive('savedObjectFinder', function (savedSearches, savedVisualizations, savedDashboards, $location, kbnUrl) { - - var types = { - searches: { - service: savedSearches, - name: 'searches', - noun: 'Saved Search', - nouns: 'saved searches' - }, - visualizations: { - service: savedVisualizations, - name: 'visualizations', - noun: 'Visualization', - nouns: 'visualizations' - }, - dashboards: { - service: savedDashboards, - name: 'dashboards', - noun: 'Dashboard', - nouns: 'dashboards' - } - }; + module.directive('savedObjectFinder', function ($location, $injector, kbnUrl, Private) { + + var services = Private(require('ui/saved_objects/saved_object_registry')).byLoaderPropertiesName; return { restrict: 'E', @@ -54,13 +35,11 @@ define(function (require) { // the most recently entered search/filter var prevSearch; - // the service we will use to find records - var service; - // the list of hits, used to render display self.hits = []; - self.objectType = types[$scope.type]; + self.service = services[$scope.type]; + self.properties = self.service.loaderProperties; filterResults(); @@ -230,7 +209,7 @@ define(function (require) { }; self.hitCountNoun = function () { - return ((self.hitCount === 1) ? self.objectType.noun : self.objectType.nouns).toLowerCase(); + return ((self.hitCount === 1) ? self.properties.noun : self.properties.nouns).toLowerCase(); }; function selectTopHit() { @@ -241,8 +220,8 @@ define(function (require) { } function filterResults() { - if (!self.objectType) return; - if (!self.objectType.service) return; + if (!self.service) return; + if (!self.properties) return; // track the filter that we use for this search, // but ensure that we don't search for the same @@ -252,7 +231,7 @@ define(function (require) { if (prevSearch === filter) return; prevSearch = filter; - self.objectType.service.find(filter) + self.service.find(filter) .then(function (hits) { // ensure that we don't display old results // as we can't really cancel requests diff --git a/src/ui/public/partials/saved_object_finder.html b/src/ui/public/partials/saved_object_finder.html index 96b79be59a281..7432e71d8a543 100644 --- a/src/ui/public/partials/saved_object_finder.html +++ b/src/ui/public/partials/saved_object_finder.html @@ -1,13 +1,13 @@
-

+

\ No newline at end of file diff --git a/src/ui/public/saved_objects/saved_object_registry.js b/src/ui/public/saved_objects/saved_object_registry.js new file mode 100644 index 0000000000000..233469a8ccf57 --- /dev/null +++ b/src/ui/public/saved_objects/saved_object_registry.js @@ -0,0 +1,7 @@ +define(function (require) { + return require('ui/registry/_registry')({ + name: 'savedObjects', + index: ['loaderProperties.name'], + order: ['loaderProperties.name'] + }); +});