joola.io.engine
Version:
joola.io's Framework Engine
95 lines (81 loc) • 2.07 kB
JavaScript
/**
* 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;