Add cardinality agg, modify field type filter to optionally accept and array of types, or '*'

This commit is contained in:
Rashid Khan 2014-05-02 16:41:26 -07:00
parent 738c7ec367
commit 7f2f98b0ab
4 changed files with 29 additions and 3 deletions

View file

@ -24,7 +24,9 @@ define(function (require) {
$scope.vis = vis;
// .destroy() called by the visualize directive
})
.catch(notify.fatal);
.catch(function (e) {
console.log(e);
});
});
$scope.remove = function () {

View file

@ -16,6 +16,6 @@
class="form-control"
name="field"
ng-model="config.field"
ng-options="field.name as field.name for field in fields | fieldType:'number'">
ng-options="field.name as field.name for field in fields | fieldType:aggs.metricAggsByName[config.agg].types">
</select>
</div>

View file

@ -9,6 +9,7 @@ define(function (require) {
{
name: 'count',
display: 'Count',
types: ['number'],
makeLabel: function (params) {
return 'Count of documents';
}
@ -16,6 +17,7 @@ define(function (require) {
{
name: 'avg',
display: 'Average',
types: ['number'],
makeLabel: function (params) {
return 'Average ' + params.field;
}
@ -23,6 +25,7 @@ define(function (require) {
{
name: 'sum',
display: 'Sum',
types: ['number'],
makeLabel: function (params) {
return 'Sum of ' + params.field;
}
@ -30,6 +33,7 @@ define(function (require) {
{
name: 'min',
display: 'Min',
types: ['number'],
makeLabel: function (params) {
return 'Min ' + params.field;
}
@ -37,10 +41,19 @@ define(function (require) {
{
name: 'max',
display: 'Max',
types: ['number'],
makeLabel: function (params) {
return 'Max ' + params.field;
}
}
},
{
name: 'cardinality',
display: 'Unique count',
types: ['*'],
makeLabel: function (params) {
return 'Unique count of ' + params.field;
}
},
];
aggs.metricAggsByName = _.indexBy(aggs.metricAggs, 'name');

View file

@ -1,8 +1,19 @@
define(function (require) {
var _ = require('lodash');
require('modules')
.get('kibana/filters')
.filter('fieldType', function () {
return function (arr, type) {
if (type === '*') return arr;
if (_.isArray(type)) {
if (_.contains(type, '*')) return arr;
return _.filter(arr, function (field) {
return _.contains(type, field.type);
});
}
return arr && arr.filter(function (field) {
return (field.type === type);
});