Merge pull request #4285 from rashidkpc/feature/order-by-term

Order by term in terms agg
This commit is contained in:
Lukas Olson 2015-06-25 17:36:59 -07:00
commit 41ab57ae85
2 changed files with 31 additions and 17 deletions

View file

@ -28,7 +28,7 @@ define(function (require) {
title: 'Terms', title: 'Terms',
makeLabel: function (agg) { makeLabel: function (agg) {
var params = agg.params; var params = agg.params;
return params.order.display + ' ' + params.size + ' ' + params.field.displayName; return params.field.displayName + ': ' + params.order.display;
}, },
createFilter: createFilter, createFilter: createFilter,
params: [ params: [
@ -53,21 +53,6 @@ define(function (require) {
name: 'size', name: 'size',
default: 5 default: 5
}, },
{
name: 'order',
type: 'optioned',
default: 'desc',
editor: require('text!components/agg_types/controls/order_and_size.html'),
options: [
{ display: 'Top', val: 'desc' },
{ display: 'Bottom', val: 'asc' }
],
write: _.noop // prevent default write, it's handled by orderAgg
},
{
name: 'orderBy',
write: _.noop // prevent default write, it's handled by orderAgg
},
{ {
name: 'orderAgg', name: 'orderAgg',
type: AggConfig, type: AggConfig,
@ -122,6 +107,12 @@ define(function (require) {
// we aren't creating a custom aggConfig // we aren't creating a custom aggConfig
if (!orderBy || orderBy !== 'custom') { if (!orderBy || orderBy !== 'custom') {
params.orderAgg = null; params.orderAgg = null;
if (orderBy === '_term') {
params.orderBy = '_term';
return;
}
// ensure that orderBy is set to a valid agg // ensure that orderBy is set to a valid agg
if (!_.find($scope.responseValueAggs, { id: orderBy })) { if (!_.find($scope.responseValueAggs, { id: orderBy })) {
params.orderBy = null; params.orderBy = null;
@ -146,7 +137,12 @@ define(function (require) {
output.params.valueType = agg.field().type === 'number' ? 'float' : agg.field().type; output.params.valueType = agg.field().type === 'number' ? 'float' : agg.field().type;
} }
if (!orderAgg || orderAgg.type.name === 'count') { if (!orderAgg) {
order[agg.params.orderBy || '_count'] = dir;
return;
}
if (orderAgg.type.name === 'count') {
order._count = dir; order._count = dir;
return; return;
} }
@ -159,6 +155,21 @@ define(function (require) {
output.subAggs = (output.subAggs || []).concat(orderAgg); output.subAggs = (output.subAggs || []).concat(orderAgg);
order[orderAggId] = dir; order[orderAggId] = dir;
} }
},
{
name: 'order',
type: 'optioned',
default: 'desc',
editor: require('text!components/agg_types/controls/order_and_size.html'),
options: [
{ display: 'Descending', val: 'desc' },
{ display: 'Ascending', val: 'asc' }
],
write: _.noop // prevent default write, it's handled by orderAgg
},
{
name: 'orderBy',
write: _.noop // prevent default write, it's handled by orderAgg
} }
] ]
}); });

View file

@ -15,6 +15,9 @@
<option value="custom" ng-selected="agg.params.orderBy === 'custom'"> <option value="custom" ng-selected="agg.params.orderBy === 'custom'">
Custom Metric Custom Metric
</option> </option>
<option value="_term" ng-selected="agg.params.orderBy === '_term'">
Term
</option>
</select> </select>
</div> </div>
<div ng-show="agg.params.orderAgg" class="vis-editor-agg-order-agg"> <div ng-show="agg.params.orderAgg" class="vis-editor-agg-order-agg">