From b6308b9c6d684a432596f7e1f4600eef4774cba7 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Wed, 18 Feb 2015 11:51:52 -0700 Subject: [PATCH] [visualize/editor] properly filter multi-value metric aggs from orderByAgg --- .../components/agg_types/buckets/terms.js | 2 +- src/kibana/filters/_prop_filter.js | 28 +++++++++++-------- src/kibana/plugins/vis_types/vislib/area.js | 2 +- .../plugins/vis_types/vislib/histogram.js | 2 +- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/kibana/components/agg_types/buckets/terms.js b/src/kibana/components/agg_types/buckets/terms.js index 0364acf2278c..519af5da8cb5 100644 --- a/src/kibana/components/agg_types/buckets/terms.js +++ b/src/kibana/components/agg_types/buckets/terms.js @@ -12,7 +12,7 @@ define(function (require) { group: 'none', name: 'orderAgg', title: 'Order Agg', - aggFilter: '!percentiles' + aggFilter: ['!percentiles', '!std_dev'] } ])).all[0]; diff --git a/src/kibana/filters/_prop_filter.js b/src/kibana/filters/_prop_filter.js index 82040d121da9..eb0e9dc77bd9 100644 --- a/src/kibana/filters/_prop_filter.js +++ b/src/kibana/filters/_prop_filter.js @@ -24,26 +24,30 @@ define(function (require) { if (!_.isArray(filters)) filters = filters.split(','); if (_.contains(filters, '*')) return list; - filters = filters.map(function (filter) { - var match = true; + var options = filters.reduce(function (options, filter) { + var type = 'include'; var value = filter; if (filter.charAt(0) === '!') { - match = false; + type = 'exclude'; value = filter.substr(1); } - return { - match: match, - value: value - }; - }); + if (!options[type]) options[type] = []; + options[type].push(value); + return options; + }, {}); return list.filter(function (item) { - for (var i = 0; i < filters.length; i++) { - var filter = filters[i]; - if ((item[prop] === filter.value) === filter.match) return true; - } + var value = item[prop]; + + var excluded = options.exclude && _.contains(options.exclude, value); + if (excluded) return false; + + var included = !options.include || _.contains(options.include, value); + if (included) return true; + + return false; }); }; } diff --git a/src/kibana/plugins/vis_types/vislib/area.js b/src/kibana/plugins/vis_types/vislib/area.js index e8e390506827..4b85c515a656 100644 --- a/src/kibana/plugins/vis_types/vislib/area.js +++ b/src/kibana/plugins/vis_types/vislib/area.js @@ -28,7 +28,7 @@ define(function (require) { name: 'metric', title: 'Y-Axis', min: 1, - aggFilter: '!std_deviation', + aggFilter: '!std_dev', defaults: [ { schema: 'metric', type: 'count' } ] diff --git a/src/kibana/plugins/vis_types/vislib/histogram.js b/src/kibana/plugins/vis_types/vislib/histogram.js index a9d0ba6978b0..f590b924b6df 100644 --- a/src/kibana/plugins/vis_types/vislib/histogram.js +++ b/src/kibana/plugins/vis_types/vislib/histogram.js @@ -26,7 +26,7 @@ define(function (require) { name: 'metric', title: 'Y-Axis', min: 1, - aggFilter: '!std_deviation', + aggFilter: '!std_dev', defaults: [ { schema: 'metric', type: 'count' } ]