UNPKG

joola.io.engine

Version:
95 lines (81 loc) 2.07 kB
/** * joola.io * * Copyright Joola Smart Solutions, Ltd. <info@joo.la> * * Licensed under GNU General Public License 3.0 or later. * Some rights reserved. See LICENSE, AUTHORS. * * @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+> */ var url = require('url'), _datatables = require('./datatables'), connector = require('../connectors/connector'); var list = function (datasourceid, datatableid) { var metrics = []; var datatables = []; if (datatableid) datatables.push(_datatables.get(datatableid)); else datatables = _datatables.list(datasourceid); if (!datatables) throw "no datatables found"; _.each(datatables, function (dt) { _.each(dt.metrics, function (m) { m.datatableid = dt.id; metrics.push(m); }) }); if (!datasourceid && !datatableid) { _.each(joola.config.integration.metrics, function (m) { m.class = 'calculated'; metrics.push(m); }); } _.each(metrics, function (metric) { switch (metric.type) { case 'int': metric.formatter = function (value) { return parseInt(value); }; break; case 'float': metric.formatter = function (value) { return parseFloat(value).toFixed(2); }; break; default: break; } }); return ce.clone(metrics); }; var _get = {}; var get = function (metricid) { var exist = _.find(_get, function (m) { return m.id == metricid; }); if (!exist) { var metrics = list(); var result = ce.clone(_.find(metrics, function (m) { return m.id.toLowerCase() == metricid.toLowerCase(); })); _get[metricid] = result; return result; } else { return ce.clone(exist); } }; var getByName = function (metricname) { var _self = this; var metrics = _self.list(); return ce.clone(_.find(metrics, function (m) { if (!m.name) m = _self.get(m.id); return m.name.toLowerCase() == metricname.toLowerCase(); })); }; exports.list = list; exports.get = get; exports.getByName = getByName;