UNPKG

@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

60 lines (50 loc) 1.71 kB
define(function (require) { return function PointSeriesGetAspects(Private) { var _ = require('lodash'); var fakeXAspect = Private(require('ui/agg_response/point_series/_fake_x_aspect')); var map = { segment: 'x', metric: 'y', radius: 'z', width: 'width', group: 'series' }; function columnToAspect(aspects, col, i) { var schema = col.aggConfig.schema.name; var name = map[schema]; if (!name) throw new TypeError('unknown schema name "' + schema + '"'); var aspect = { i: i, col: col, agg: col.aggConfig }; if (!aspects[name]) aspects[name] = []; aspects[name].push(aspect); } /** * Identify and group the columns based on the aspect of the pointSeries * they represent. * * @param {array} columns - the list of columns * @return {object} - an object with a key for each aspect (see map). The values * may be undefined, a single aspect, or an array of aspects. */ return function getAspects(vis, table) { var aspects = _(table.columns) // write each column into the aspects under it's group .transform(columnToAspect, {}) // unwrap groups that only have one value, and validate groups that have more .transform(function (aspects, group, name) { if (name !== 'y' && group.length > 1) { throw new TypeError('Only multiple metrics are supported in point series'); } aspects[name] = group.length > 1 ? group : group[0]; }) .value(); if (!aspects.x) { aspects.x = fakeXAspect(vis); } return aspects; }; }; });