@spalger/kibana
Version:
Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic
63 lines (55 loc) • 1.66 kB
JavaScript
define(function (require) {
return function VisTypeSchemasFactory(Private) {
var _ = require('lodash');
var IndexedArray = require('ui/IndexedArray');
var AggParams = Private(require('ui/agg_types/AggParams'));
function Schemas(schemas) {
var self = this;
_(schemas || [])
.map(function (schema) {
if (!schema.name) throw new Error('all schema must have a unique name');
if (schema.name === 'split') {
schema.params = [
{
name: 'row',
default: true
}
];
schema.editor = require('plugins/kbn_vislib_vis_types/controls/rows_or_columns.html');
} else if (schema.name === 'radius') {
schema.editor = require('plugins/kbn_vislib_vis_types/controls/radius_ratio_option.html');
}
_.defaults(schema, {
min: 0,
max: Infinity,
group: 'buckets',
title: schema.name,
aggFilter: '*',
editor: false,
params: []
});
// convert the params into a params registry
schema.params = new AggParams(schema.params);
return schema;
})
.tap(function (schemas) {
self.all = new IndexedArray({
index: ['name'],
group: ['group'],
immutable: true,
initialSet: schemas
});
})
.groupBy('group')
.forOwn(function (group, groupName) {
self[groupName] = new IndexedArray({
index: ['name'],
immutable: true,
initialSet: group
});
})
.commit();
}
return Schemas;
};
});