UNPKG

kibana-riya

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

52 lines (41 loc) 1.64 kB
'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var _ = require('lodash'); var loadFunctions = require('../load_functions.js'); var fitFunctions = loadFunctions('fit_functions'); module.exports = function TimelionFunction(name, config) { _classCallCheck(this, TimelionFunction); this.name = name; this.args = config.args || []; this.argsByName = _.indexBy(this.args, 'name'); this.help = config.help || ''; this.aliases = config.aliases || []; this.extended = config.extended || false; // WTF is this? How could you not have a fn? Wtf would the thing be used for? var originalFunction = config.fn || function (input) { return input; }; // Currently only re-fits the series. this.originalFn = originalFunction; this.fn = function (args, tlConfig) { var config = _.clone(tlConfig); return Promise.resolve(originalFunction(args, config)).then(function (seriesList) { seriesList.list = _.map(seriesList.list, function (series) { var target = tlConfig.getTargetSeries(); // Don't fit if the series are already the same if (_.isEqual(_.map(series.data, 0), _.map(target, 0))) return series; var fit; if (args.byName.fit) { fit = args.byName.fit; } else if (series.fit) { fit = series.fit; } else { fit = 'nearest'; } series.data = fitFunctions[fit](series.data, tlConfig.getTargetSeries()); return series; }); return seriesList; }); }; };