diff --git a/src/ui/public/agg_types/buckets/terms.js b/src/ui/public/agg_types/buckets/terms.js index a75ef49b84887c..c30444e8d64473 100644 --- a/src/ui/public/agg_types/buckets/terms.js +++ b/src/ui/public/agg_types/buckets/terms.js @@ -148,7 +148,7 @@ export const termsBucketAgg = new BucketAggType({ makeOrderAgg: function (termsAgg, state) { state = state || {}; state.schema = orderAggSchema; - const orderAgg = this.aggConfigs.createAggConfig(state); + const orderAgg = termsAgg.aggConfigs.createAggConfig(state, { addToAggConfigs: false }); orderAgg.id = termsAgg.id + '-orderAgg'; return orderAgg; }, diff --git a/src/ui/public/agg_types/controls/order_agg.html b/src/ui/public/agg_types/controls/order_agg.html index 4d600c75fd5949..3dc09c56dd35f3 100644 --- a/src/ui/public/agg_types/controls/order_agg.html +++ b/src/ui/public/agg_types/controls/order_agg.html @@ -10,14 +10,15 @@ - - diff --git a/src/ui/public/vis/agg_configs.js b/src/ui/public/vis/agg_configs.js index c61fae5ec740bb..6aebeabd081599 100644 --- a/src/ui/public/vis/agg_configs.js +++ b/src/ui/public/vis/agg_configs.js @@ -96,7 +96,7 @@ class AggConfigs extends IndexedArray { updateAggTimeRange(param); } }); - if (agg.type.name === 'date_histogram') { + if (_.get(agg, 'type.name') === 'date_histogram') { agg.params.timeRange = timeRange; } }; diff --git a/test/functional/apps/visualize/_vertical_bar_chart.js b/test/functional/apps/visualize/_vertical_bar_chart.js index 28d97c23671048..a623a3e2e3261d 100644 --- a/test/functional/apps/visualize/_vertical_bar_chart.js +++ b/test/functional/apps/visualize/_vertical_bar_chart.js @@ -208,6 +208,17 @@ export default function ({ getService, getPageObjects }) { const legendEntries = await PageObjects.visualize.getLegendEntries(); expect(legendEntries).to.eql(expectedEntries); }); + + it('should allow custom sorting of series', async () => { + await PageObjects.visualize.toggleOpenEditor(1, 'false'); + await PageObjects.visualize.selectCustomSortMetric(3, 'Min', 'bytes'); + await PageObjects.visualize.clickGo(); + await PageObjects.header.waitUntilLoadingHasFinished(); + + const expectedEntries = ['404', '200', '503']; + const legendEntries = await PageObjects.visualize.getLegendEntries(); + expect(legendEntries).to.eql(expectedEntries); + }); }); describe('vertical bar with multiple splits', function () { diff --git a/test/functional/page_objects/visualize_page.js b/test/functional/page_objects/visualize_page.js index b7722669761458..d1820253630357 100644 --- a/test/functional/page_objects/visualize_page.js +++ b/test/functional/page_objects/visualize_page.js @@ -1132,6 +1132,17 @@ export function VisualizePageProvider({ getService, getPageObjects }) { const pieSlices = await this.getAllPieSlices(name); return await Promise.all(pieSlices.map(async pieSlice => await pieSlice.getAttribute('style'))); } + + async selectSortMetric(agg, metric) { + const sortMetric = await find.byCssSelector(`[data-test-subj="visEditorOrder${agg}-${metric}"]`); + return await sortMetric.click(); + } + + async selectCustomSortMetric(agg, metric, field) { + await this.selectSortMetric(agg, 'custom'); + await this.selectAggregation(metric, 'groupName'); + await this.selectField(field, 'groupName'); + } } return new VisualizePage();