Merge branch 'master' of github.com:elastic/kibana into renameAllFiles

This commit is contained in:
spalger 2016-03-11 16:27:11 -07:00
commit f724032dc7
24 changed files with 138 additions and 102 deletions

View file

@ -28,7 +28,7 @@ remove a range.
or bottom _n_ elements of a given field to display, ordered by count or a custom metric.
*Filters*:: You can specify a set of {ref}/search-aggregations-bucket-filters-aggregation.html[_filters_] for the data.
You can specify a filter as a query string or in JSON format, just as in the Discover search bar. Click *Add Filter* to
add another filter. Click the images:labelbutton.png[] *label* button to open the label field, where you can type in a
add another filter. Click the image:images/labelbutton.png[] *label* button to open the label field, where you can type in a
name to display on the visualization.
*Significant Terms*:: Displays the results of the experimental
{ref}/search-aggregations-bucket-significantterms-aggregation.html[_significant terms_] aggregation.

View file

@ -87,7 +87,7 @@
"babel-runtime": "5.8.20",
"bluebird": "2.9.34",
"boom": "2.8.0",
"bootstrap": "3.3.5",
"bootstrap": "3.3.6",
"brace": "0.5.1",
"bunyan": "1.7.1",
"clipboard": "1.5.5",

View file

@ -3,8 +3,15 @@
<h5 ng-show="!field.details.error">Quick Count <kbn-info info="Top 5 values based on documents in the table" placement="right"></kbn-info>
<span ng-if="!field.details.error" class="small discover-field-details-count">
(
<a ng-show="field.indexed" ng-click="updateFilterInQuery('_exists_', field.name, '+')">{{::field.details.exists}}</a>
<span ng-show="!field.indexed">{{::field.details.exists}}</span>
<a
ng-show="!indexPattern.metaFields.includes(field.name)"
ng-click="updateFilterInQuery('_exists_', field.name, '+')">
{{::field.details.exists}}
</a>
<span
ng-show="indexPattern.metaFields.includes(field.name)">
{{::field.details.exists}}
</span>
/{{::field.details.total}} records
)
</span>

View file

@ -82,6 +82,7 @@ describe('Histogram Agg', function () {
describe('extended_bounds', function () {
it('writes when only eb.min is set', function () {
var output = paramWriter.write({
min_doc_count: true,
extended_bounds: { min: 0 }
});
expect(output.params.extended_bounds).to.have.property('min', 0);
@ -90,6 +91,7 @@ describe('Histogram Agg', function () {
it('writes when only eb.max is set', function () {
var output = paramWriter.write({
min_doc_count: true,
extended_bounds: { max: 0 }
});
expect(output.params.extended_bounds).to.have.property('min', undefined);
@ -98,6 +100,7 @@ describe('Histogram Agg', function () {
it('writes when both eb.min and eb.max are set', function () {
var output = paramWriter.write({
min_doc_count: true,
extended_bounds: { min: 99, max: 100 }
});
expect(output.params.extended_bounds).to.have.property('min', 99);
@ -106,10 +109,19 @@ describe('Histogram Agg', function () {
it('does not write when nothing is set', function () {
var output = paramWriter.write({
min_doc_count: true,
extended_bounds: {}
});
expect(output.params).to.not.have.property('extended_bounds');
});
it('does not write when min_doc_count is false', function () {
var output = paramWriter.write({
min_doc_count: false,
extended_bounds: { min: 99, max: 100 }
});
expect(output.params).to.not.have.property('extended_bounds');
});
});
});
});

View file

@ -2,12 +2,12 @@ import _ from 'lodash';
import angular from 'angular';
import AggTypesBucketsBucketAggTypeProvider from 'ui/agg_types/buckets/_bucket_agg_type';
import AggTypesBucketsCreateFilterFiltersProvider from 'ui/agg_types/buckets/create_filter/filters';
import CourierDataSourceDecorateQueryProvider from 'ui/courier/data_source/_decorate_query';
import DecorateQueryProvider from 'ui/courier/data_source/_decorate_query';
import filtersTemplate from 'ui/agg_types/controls/filters.html';
export default function FiltersAggDefinition(Private, Notifier) {
var BucketAggType = Private(AggTypesBucketsBucketAggTypeProvider);
var createFilter = Private(AggTypesBucketsCreateFilterFiltersProvider);
var decorateQuery = Private(CourierDataSourceDecorateQueryProvider);
var decorateQuery = Private(DecorateQueryProvider);
var notif = new Notifier({ location: 'Filters Agg' });
return new BucketAggType({

View file

@ -51,7 +51,7 @@ export default function HistogramAggDefinition(Private) {
write: function (aggConfig, output) {
var val = aggConfig.params.extended_bounds;
if (val.min != null || val.max != null) {
if (aggConfig.params.min_doc_count && (val.min != null || val.max != null)) {
output.params.extended_bounds = {
min: val.min,
max: val.max

View file

@ -3,7 +3,7 @@ import _ from 'lodash';
import ConfigDefaultsProvider from 'ui/config/defaults';
import ConfigDelayedUpdaterProvider from 'ui/config/_delayed_updater';
import ConfigValsProvider from 'ui/config/_vals';
import CourierDataSourceDocSourceProvider from 'ui/courier/data_source/doc_source';
import DocSourceProvider from 'ui/courier/data_source/doc_source';
import uiRoutes from 'ui/routes';
import uiModules from 'ui/modules';
import Notifier from 'ui/notify/notifier';
@ -30,7 +30,7 @@ module.service('config', function (Private, kbnVersion, kbnIndex, $rootScope, bu
// update once it is requested by calling #set() or #clear().
var updater;
var DocSource = Private(CourierDataSourceDocSourceProvider);
var DocSource = Private(DocSourceProvider);
var doc = (new DocSource())
.index(kbnIndex)
.type('config')

View file

@ -1,45 +1,48 @@
import errors from 'ui/errors';
import _ from 'lodash';
import errors from 'ui/errors';
import 'ui/es';
import 'ui/promises';
import 'ui/safe_confirm';
import 'ui/index_patterns';
import CourierDataSourceDocSourceProvider from 'ui/courier/data_source/doc_source';
import CourierDataSourceSearchSourceProvider from 'ui/courier/data_source/search_source';
import CourierFetchStrategySearchProvider from 'ui/courier/fetch/strategy/search';
import CourierRequestQueueProvider from 'ui/courier/_request_queue';
import CourierErrorHandlersProvider from 'ui/courier/_error_handlers';
import CourierFetchFetchProvider from 'ui/courier/fetch/fetch';
import CourierLooperDocProvider from 'ui/courier/looper/doc';
import CourierLooperSearchProvider from 'ui/courier/looper/search';
import CourierDataSourceRootSearchSourceProvider from 'ui/courier/data_source/_root_search_source';
import CourierSavedObjectSavedObjectProvider from 'ui/courier/saved_object/saved_object';
import CourierRedirectWhenMissingProvider from 'ui/courier/_redirect_when_missing';
import uiModules from 'ui/modules';
import Notifier from 'ui/notify/notifier';
import DocSourceProvider from './data_source/doc_source';
import SearchSourceProvider from './data_source/search_source';
import SearchStrategyProvider from './fetch/strategy/search';
import RequestQueueProvider from './_request_queue';
import ErrorHandlersProvider from './_error_handlers';
import FetchProvider from './fetch';
import DocLooperProvider from './looper/doc';
import SearchLooperProvider from './looper/search';
import RootSearchSourceProvider from './data_source/_root_search_source';
import SavedObjectProvider from './saved_object';
import RedirectWhenMissingProvider from './_redirect_when_missing';
uiModules.get('kibana/courier')
.service('courier', function ($rootScope, Private, Promise, indexPatterns, Notifier) {
.service('courier', function ($rootScope, Private, Promise, indexPatterns) {
function Courier() {
var self = this;
var DocSource = Private(CourierDataSourceDocSourceProvider);
var SearchSource = Private(CourierDataSourceSearchSourceProvider);
var searchStrategy = Private(CourierFetchStrategySearchProvider);
var DocSource = Private(DocSourceProvider);
var SearchSource = Private(SearchSourceProvider);
var searchStrategy = Private(SearchStrategyProvider);
var requestQueue = Private(CourierRequestQueueProvider);
var errorHandlers = Private(CourierErrorHandlersProvider);
var requestQueue = Private(RequestQueueProvider);
var errorHandlers = Private(ErrorHandlersProvider);
var fetch = Private(CourierFetchFetchProvider);
var docLooper = self.docLooper = Private(CourierLooperDocProvider);
var searchLooper = self.searchLooper = Private(CourierLooperSearchProvider);
var fetch = Private(FetchProvider);
var docLooper = self.docLooper = Private(DocLooperProvider);
var searchLooper = self.searchLooper = Private(SearchLooperProvider);
// expose some internal modules
self.setRootSearchSource = Private(CourierDataSourceRootSearchSourceProvider).set;
self.setRootSearchSource = Private(RootSearchSourceProvider).set;
self.SavedObject = Private(CourierSavedObjectSavedObjectProvider);
self.SavedObject = Private(SavedObjectProvider);
self.indexPatterns = indexPatterns;
self.redirectWhenMissing = Private(CourierRedirectWhenMissingProvider);
self.redirectWhenMissing = Private(RedirectWhenMissingProvider);
self.DocSource = DocSource;
self.SearchSource = SearchSource;

View file

@ -2,7 +2,7 @@ import moment from 'moment';
import expect from 'expect.js';
import ngMock from 'ng_mock';
import _ from 'lodash';
import CourierDataSourceDecorateQueryProvider from 'ui/courier/data_source/_decorate_query';
import DecorateQueryProvider from 'ui/courier/data_source/_decorate_query';
describe('Query decorator', function () {
@ -29,7 +29,7 @@ describe('Query decorator', function () {
beforeEach(ngMock.inject(function (Private, $injector, _config_) {
config = _config_;
fn = Private(CourierDataSourceDecorateQueryProvider);
fn = Private(DecorateQueryProvider);
}));
it('should be a function', function () {

View file

@ -1,19 +1,17 @@
import 'ui/private';
import ngMock from 'ng_mock';
import expect from 'expect.js';
import CourierDataSourceNormalizeSortRequestProvider from 'ui/courier/data_source/_normalize_sort_request';
import NormalizeSortRequestProvider from 'ui/courier/data_source/_normalize_sort_request';
import FixturesStubbedLogstashIndexPatternProvider from 'fixtures/stubbed_logstash_index_pattern';
describe('SearchSource#normalizeSortRequest', function () {
var normalizeSortRequest;
var indexPattern;
var normalizedSort;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private) {
normalizeSortRequest = Private(CourierDataSourceNormalizeSortRequestProvider);
normalizeSortRequest = Private(NormalizeSortRequestProvider);
indexPattern = Private(FixturesStubbedLogstashIndexPatternProvider);
normalizedSort = [{

View file

@ -1,14 +1,17 @@
import _ from 'lodash';
import angular from 'angular';
import CourierRequestQueueProvider from 'ui/courier/_request_queue';
import CourierErrorHandlersProvider from 'ui/courier/_error_handlers';
import CourierFetchFetchProvider from 'ui/courier/fetch/fetch';
import CourierDataSourceDecorateQueryProvider from 'ui/courier/data_source/_decorate_query';
import 'ui/promises';
import RequestQueueProvider from '../_request_queue';
import ErrorHandlersProvider from '../_error_handlers';
import FetchProvider from '../fetch';
import DecorateQueryProvider from './_decorate_query';
export default function SourceAbstractFactory(Private, Promise, PromiseEmitter) {
var requestQueue = Private(CourierRequestQueueProvider);
var errorHandlers = Private(CourierErrorHandlersProvider);
var courierFetch = Private(CourierFetchFetchProvider);
var requestQueue = Private(RequestQueueProvider);
var errorHandlers = Private(ErrorHandlersProvider);
var courierFetch = Private(FetchProvider);
function SourceAbstract(initialState, strategy) {
var self = this;
@ -268,7 +271,7 @@ export default function SourceAbstractFactory(Private, Promise, PromiseEmitter)
.then(function () {
if (type === 'search') {
// This is down here to prevent the circular dependency
var decorateQuery = Private(CourierDataSourceDecorateQueryProvider);
var decorateQuery = Private(DecorateQueryProvider);
flatState.body = flatState.body || {};

View file

@ -1,4 +1,5 @@
import _ from 'lodash';
export default function DecorateQuery(config) {
/**
* Decorate queries with default parameters

View file

@ -1,11 +1,12 @@
import _ from 'lodash';
import errors from 'ui/errors';
import CourierRequestQueueProvider from 'ui/courier/_request_queue';
import CourierFetchFetchProvider from 'ui/courier/fetch/fetch';
import RequestQueueProvider from 'ui/courier/_request_queue';
import FetchProvider from 'ui/courier/fetch/fetch';
export default function (Promise, Private, es) {
var requestQueue = Private(CourierRequestQueueProvider);
var courierFetch = Private(CourierFetchFetchProvider);
var requestQueue = Private(RequestQueueProvider);
var courierFetch = Private(FetchProvider);
/**
* Backend for doUpdate and doIndex

View file

@ -1,4 +1,5 @@
import _ from 'lodash';
export default function normalizeSortRequest(config) {
var defaultSortOptions = config.get('sort:options');
@ -48,4 +49,3 @@ export default function normalizeSortRequest(config) {
return normalized;
}
};

View file

@ -1,7 +1,7 @@
import CourierDataSourceSearchSourceProvider from 'ui/courier/data_source/search_source';
import SearchSourceProvider from 'ui/courier/data_source/search_source';
export default function RootSearchSource(Private, $rootScope, timefilter, Notifier) {
var SearchSource = Private(CourierDataSourceSearchSourceProvider);
var SearchSource = Private(SearchSourceProvider);
var notify = new Notifier({ location: 'Root Search Source' });

View file

@ -1,16 +1,18 @@
import _ from 'lodash';
import CourierDataSourceDocSendToEsProvider from 'ui/courier/data_source/_doc_send_to_es';
import CourierDataSourceAbstractProvider from 'ui/courier/data_source/_abstract';
import CourierFetchRequestDocProvider from 'ui/courier/fetch/request/doc';
import CourierFetchStrategyDocProvider from 'ui/courier/fetch/strategy/doc';
import 'ui/es';
import 'ui/storage';
import DocSendToEsProvider from './_doc_send_to_es';
import AbstractDataSourceProvider from './_abstract';
import DocRequestProvider from '../fetch/request/doc';
import DocStrategyProvider from '../fetch/strategy/doc';
export default function DocSourceFactory(Private, Promise, es, sessionStorage) {
var sendToEs = Private(CourierDataSourceDocSendToEsProvider);
var SourceAbstract = Private(CourierDataSourceAbstractProvider);
var DocRequest = Private(CourierFetchRequestDocProvider);
var docStrategy = Private(CourierFetchStrategyDocProvider);
var sendToEs = Private(DocSendToEsProvider);
var SourceAbstract = Private(AbstractDataSourceProvider);
var DocRequest = Private(DocRequestProvider);
var docStrategy = Private(DocStrategyProvider);
_.class(DocSource).inherits(SourceAbstract);
function DocSource(initialState) {

View file

@ -1,16 +1,18 @@
import _ from 'lodash';
import rootSearchSource from 'ui/courier/data_source/_root_search_source';
import CourierDataSourceAbstractProvider from 'ui/courier/data_source/_abstract';
import CourierFetchRequestSearchProvider from 'ui/courier/fetch/request/search';
import CourierFetchRequestSegmentedProvider from 'ui/courier/fetch/request/segmented';
import CourierFetchStrategySearchProvider from 'ui/courier/fetch/strategy/search';
import CourierDataSourceNormalizeSortRequestProvider from 'ui/courier/data_source/_normalize_sort_request';
import NormalizeSortRequestProvider from './_normalize_sort_request';
import rootSearchSource from './_root_search_source';
import AbstractDataSourceProvider from './_abstract';
import SearchRequestProvider from '../fetch/request/search';
import SegmentedRequestProvider from '../fetch/request/segmented';
import SearchStrategyProvider from '../fetch/strategy/search';
export default function SearchSourceFactory(Promise, Private) {
var SourceAbstract = Private(CourierDataSourceAbstractProvider);
var SearchRequest = Private(CourierFetchRequestSearchProvider);
var SegmentedRequest = Private(CourierFetchRequestSegmentedProvider);
var searchStrategy = Private(CourierFetchStrategySearchProvider);
var normalizeSortRequest = Private(CourierDataSourceNormalizeSortRequestProvider);
var SourceAbstract = Private(AbstractDataSourceProvider);
var SearchRequest = Private(SearchRequestProvider);
var SegmentedRequest = Private(SegmentedRequestProvider);
var searchStrategy = Private(SearchStrategyProvider);
var normalizeSortRequest = Private(NormalizeSortRequestProvider);
_.class(SearchSource).inherits(SourceAbstract);
function SearchSource(initialState) {

View file

@ -1,5 +1,9 @@
import _ from 'lodash';
export default function LooperFactory($timeout, Notifier, Promise) {
import 'ui/promises';
import Notifier from 'ui/notify/notifier';
export default function LooperFactory($timeout, Promise) {
var notify = new Notifier();
function Looper(ms, fn) {

View file

@ -1,18 +1,18 @@
import CourierFetchFetchProvider from 'ui/courier/fetch/fetch';
import CourierLooperLooperProvider from 'ui/courier/looper/_looper';
import CourierFetchStrategyDocProvider from 'ui/courier/fetch/strategy/doc';
import FetchProvider from '../fetch';
import LooperProvider from './_looper';
import DocStrategyProvider from '../fetch/strategy/doc';
export default function DocLooperService(Private) {
var fetch = Private(CourierFetchFetchProvider);
var Looper = Private(CourierLooperLooperProvider);
var docStrategy = Private(CourierFetchStrategyDocProvider);
var fetch = Private(FetchProvider);
var Looper = Private(LooperProvider);
var DocStrategy = Private(DocStrategyProvider);
/**
* The Looper which will manage the doc fetch interval
* @type {Looper}
*/
var docLooper = new Looper(1500, function () {
fetch.fetchQueued(docStrategy);
fetch.fetchQueued(DocStrategy);
});
return docLooper;

View file

@ -1,14 +1,14 @@
import CourierFetchFetchProvider from 'ui/courier/fetch/fetch';
import CourierFetchStrategySearchProvider from 'ui/courier/fetch/strategy/search';
import CourierRequestQueueProvider from 'ui/courier/_request_queue';
import CourierLooperLooperProvider from 'ui/courier/looper/_looper';
import FetchProvider from '../fetch';
import SearchStrategyProvider from '../fetch/strategy/search';
import RequestQueueProvider from '../_request_queue';
import LooperProvider from './_looper';
export default function SearchLooperService(Private, Promise, Notifier, $rootScope) {
var fetch = Private(CourierFetchFetchProvider);
var searchStrategy = Private(CourierFetchStrategySearchProvider);
var requestQueue = Private(CourierRequestQueueProvider);
var fetch = Private(FetchProvider);
var searchStrategy = Private(SearchStrategyProvider);
var requestQueue = Private(RequestQueueProvider);
var Looper = Private(CourierLooperLooperProvider);
var Looper = Private(LooperProvider);
var notif = new Notifier({ location: 'Search Looper' });
/**

View file

@ -1,15 +1,18 @@
import angular from 'angular';
import errors from 'ui/errors';
import _ from 'lodash';
import errors from 'ui/errors';
import slugifyId from 'ui/utils/slugify_id';
import CourierDataSourceDocSourceProvider from 'ui/courier/data_source/doc_source';
import CourierDataSourceSearchSourceProvider from 'ui/courier/data_source/search_source';
import UtilsMappingSetupProvider from 'ui/utils/mapping_setup';
import MappingSetupProvider from 'ui/utils/mapping_setup';
import DocSourceProvider from '../data_source/doc_source';
import SearchSourceProvider from '../data_source/search_source';
export default function SavedObjectFactory(es, kbnIndex, Promise, Private, Notifier, safeConfirm, indexPatterns) {
var DocSource = Private(CourierDataSourceDocSourceProvider);
var SearchSource = Private(CourierDataSourceSearchSourceProvider);
var mappingSetup = Private(UtilsMappingSetupProvider);
var DocSource = Private(DocSourceProvider);
var SearchSource = Private(SearchSourceProvider);
var mappingSetup = Private(MappingSetupProvider);
function SavedObject(config) {
if (!_.isObject(config)) config = {};

View file

@ -7,7 +7,7 @@ import errors from 'ui/errors';
import IndexedArray from 'ui/indexed_array';
import FixturesLogstashFieldsProvider from 'fixtures/logstash_fields';
import FixturesStubbedDocSourceResponseProvider from 'fixtures/stubbed_doc_source_response';
import CourierDataSourceDocSourceProvider from 'ui/courier/data_source/doc_source';
import DocSourceProvider from 'ui/courier/data_source/doc_source';
import IndexPatternsMapperProvider from 'ui/index_patterns/_mapper';
import UtilsMappingSetupProvider from 'ui/utils/mapping_setup';
import IndexPatternsIntervalsProvider from 'ui/index_patterns/_intervals';
@ -33,7 +33,7 @@ describe('index pattern', function () {
mockLogstashFields = Private(FixturesLogstashFieldsProvider);
docSourceResponse = Private(FixturesStubbedDocSourceResponseProvider);
DocSource = Private(CourierDataSourceDocSourceProvider);
DocSource = Private(DocSourceProvider);
sinon.stub(DocSource.prototype, 'doIndex');
sinon.stub(DocSource.prototype, 'fetch');

View file

@ -7,7 +7,7 @@ import RegistryFieldFormatsProvider from 'ui/registry/field_formats';
import IndexPatternsGetIdsProvider from 'ui/index_patterns/_get_ids';
import IndexPatternsMapperProvider from 'ui/index_patterns/_mapper';
import IndexPatternsIntervalsProvider from 'ui/index_patterns/_intervals';
import CourierDataSourceDocSourceProvider from 'ui/courier/data_source/doc_source';
import DocSourceProvider from 'ui/courier/data_source/doc_source';
import UtilsMappingSetupProvider from 'ui/utils/mapping_setup';
import IndexPatternsFieldListProvider from 'ui/index_patterns/_field_list';
import IndexPatternsFlattenHitProvider from 'ui/index_patterns/_flatten_hit';
@ -19,7 +19,7 @@ export default function IndexPatternFactory(Private, timefilter, Notifier, confi
var getIds = Private(IndexPatternsGetIdsProvider);
var mapper = Private(IndexPatternsMapperProvider);
var intervals = Private(IndexPatternsIntervalsProvider);
var DocSource = Private(CourierDataSourceDocSourceProvider);
var DocSource = Private(DocSourceProvider);
var mappingSetup = Private(UtilsMappingSetupProvider);
var FieldList = Private(IndexPatternsFieldListProvider);

View file

@ -1,7 +1,7 @@
import _ from 'lodash';
import CourierDataSourceDecorateQueryProvider from 'ui/courier/data_source/_decorate_query';
import DecorateQueryProvider from 'ui/courier/data_source/_decorate_query';
export default function GetQueryFromUser(es, Private) {
var decorateQuery = Private(CourierDataSourceDecorateQueryProvider);
var decorateQuery = Private(DecorateQueryProvider);
/**
* Take text from the user and make it into a query object