UNPKG

kibana-with-account

Version:

kibana-with-account is develop based kibana project

61 lines (48 loc) 1.51 kB
define(function (require) { return function UniqueXValuesUtilService(Private) { var _ = require('lodash'); var flattenDataArray = Private(require('ui/vislib/components/zero_injection/flatten_data')); /* * Accepts a Kibana data object. * Returns an object with unique x axis values as keys with an object of * their index numbers and an isNumber boolean as their values. * e.g. { 'xAxisValue': { index: 1, isNumber: false }}, ... */ return function (obj) { if (!_.isObject(obj)) { throw new TypeError('UniqueXValuesUtilService expects an object'); } var flattenedData = flattenDataArray(obj); var uniqueXValues = new Map(); var charts; if (!obj.series) { charts = obj.rows ? obj.rows : obj.columns; } else { charts = [obj]; } var isDate = charts.every(function (chart) { return chart.ordered && chart.ordered.date; }); var isOrdered = charts.every(function (chart) { return chart.ordered; }); flattenedData.forEach(function (d, i) { var key = d.x; var prev = uniqueXValues.get(key); if (d.xi != null) { i = d.xi; } if (prev) { i = Math.min(i, prev.index); } uniqueXValues.set(key, { index: i, isDate: isDate, isOrdered: isOrdered, isNumber: _.isNumber(key) }); }); return uniqueXValues; }; }; });