diff --git a/src/kibana/components/time_buckets/calc_auto_interval.js b/src/kibana/components/time_buckets/calc_auto_interval.js index 71e16e4416a3..41e27cb0c02c 100644 --- a/src/kibana/components/time_buckets/calc_auto_interval.js +++ b/src/kibana/components/time_buckets/calc_auto_interval.js @@ -26,7 +26,7 @@ define(function (require) { var revRoundingRules = roundingRules.slice(0).reverse(); function find(rules, check, last) { - return function (buckets, duration) { + function pick(buckets, duration) { var target = duration / buckets; var lastResp; @@ -45,6 +45,11 @@ define(function (require) { } return moment.duration(Math.floor(target), 'ms'); + } + + return function (buckets, duration) { + var interval = pick(buckets, duration); + if (interval) return moment.duration(interval._data); }; } diff --git a/src/kibana/components/vis/_agg_config.js b/src/kibana/components/vis/_agg_config.js index c5c9082b4969..8478e789c9f6 100644 --- a/src/kibana/components/vis/_agg_config.js +++ b/src/kibana/components/vis/_agg_config.js @@ -174,6 +174,19 @@ define(function (require) { return this.type.createFilter(this, key); }; + /** + * Hook into param onRequest handling, and tell the aggConfig that it + * is being sent to elasticsearc. + * + * @return {[type]} [description] + */ + AggConfig.prototype.requesting = function () { + var self = this; + self.type.params.forEach(function (param) { + if (param.onRequest) param.onRequest(self); + }); + }; + /** * Convert this aggConfig to it's dsl syntax. * @@ -185,18 +198,10 @@ define(function (require) { */ AggConfig.prototype.toDsl = function () { if (this.type.hasNoDsl) return; - - var self = this; - self.type.params.forEach(function (param) { - if (param.onRequest) { - param.onRequest(self); - } - }); - - var output = self.write(); + var output = this.write(); var configDsl = {}; - configDsl[self.type.name] = output.params; + configDsl[this.type.name] = output.params; // if the config requires subAggs, write them to the dsl as well if (output.subAggs) { diff --git a/src/kibana/components/vis/vis.js b/src/kibana/components/vis/vis.js index e5abf47cd17c..04c27cd6dce5 100644 --- a/src/kibana/components/vis/vis.js +++ b/src/kibana/components/vis/vis.js @@ -90,6 +90,10 @@ define(function (require) { return new Vis(this.indexPattern, this.getState()); }; + Vis.prototype.requesting = function () { + _.invoke(this.aggs.getRequestAggs(), 'requesting'); + }; + Vis.prototype.isHierarchical = function () { if (_.isFunction(this.type.hierarchicalData)) { return !!this.type.hierarchicalData(this); diff --git a/src/kibana/plugins/discover/controllers/discover.js b/src/kibana/plugins/discover/controllers/discover.js index d1122846e43d..8caa0c684bd8 100644 --- a/src/kibana/plugins/discover/controllers/discover.js +++ b/src/kibana/plugins/discover/controllers/discover.js @@ -585,6 +585,7 @@ define(function (require) { }); $scope.searchSource.aggs(function () { + $scope.vis.requesting(); return $scope.vis.aggs.toDsl(); }); diff --git a/src/kibana/plugins/visualize/editor/editor.js b/src/kibana/plugins/visualize/editor/editor.js index fdaf0f87130d..bada0062ef3d 100644 --- a/src/kibana/plugins/visualize/editor/editor.js +++ b/src/kibana/plugins/visualize/editor/editor.js @@ -65,8 +65,15 @@ define(function (require) { }); var savedVis = $route.current.locals.savedVis; + var vis = savedVis.vis; var editableVis = vis.clone(); + vis.requesting = function () { + var requesting = editableVis.requesting; + requesting.call(vis); + requesting.call(editableVis); + }; + var searchSource = savedVis.searchSource; // config panel templates @@ -199,7 +206,9 @@ define(function (require) { $state.save(); searchSource.set('filter', $state.filters); if (!$state.linked) searchSource.set('query', $state.query); - if ($scope.vis.type.requiresSearch) courier.fetch(); + if ($scope.vis.type.requiresSearch) { + courier.fetch(); + } }; diff --git a/src/kibana/plugins/visualize/saved_visualizations/_saved_vis.js b/src/kibana/plugins/visualize/saved_visualizations/_saved_vis.js index bad341e79504..352e8cdca951 100644 --- a/src/kibana/plugins/visualize/saved_visualizations/_saved_vis.js +++ b/src/kibana/plugins/visualize/saved_visualizations/_saved_vis.js @@ -61,6 +61,7 @@ define(function (require) { }) .then(function (vis) { self.searchSource.aggs(function () { + self.vis.requesting(); return self.vis.aggs.toDsl(); }); diff --git a/src/kibana/services/timefilter.js b/src/kibana/services/timefilter.js index f674eedcbfe2..8777d562f09a 100644 --- a/src/kibana/services/timefilter.js +++ b/src/kibana/services/timefilter.js @@ -76,6 +76,7 @@ define(function (require) { lte: bounds.max.valueOf() }; } + return filter; };