kibana-123
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
49 lines (42 loc) • 1.19 kB
JavaScript
var _ = require('lodash');
module.exports = function preProcessChainFn(tlConfig) {
return function preProcessChain(chain, queries) {
queries = queries || {};
function validateAndStore(item) {
if (_.isObject(item) && item.type === 'function') {
var functionDef = tlConfig.server.plugins.timelion.getFunction(item.function);
if (functionDef.datasource) {
queries[functionDef.cacheKey(item)] = item;
return true;
}
return false;
}
}
// Is this thing a function?
if (validateAndStore(chain)) {
return;
}
if (!_.isArray(chain)) return;
_.each(chain, function (operator) {
if (!_.isObject(operator)) {
return;
}
switch (operator.type) {
case 'chain':
preProcessChain(operator.chain, queries);
break;
case 'chainList':
preProcessChain(operator.list, queries);
break;
case 'function':
if (validateAndStore(operator)) {
break;
} else {
preProcessChain(operator.arguments, queries);
}
break;
}
});
return queries;
};
};