joola.io.engine
Version:
joola.io's Framework Engine
91 lines (75 loc) • 1.94 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 _self = this;
var dimensions = [];
var datatables = [];
//if (_list)
// return _list;
if (datatableid)
datatables.push(_datatables.get(datatableid));
else
datatables = _datatables.list(datasourceid);
_.each(datatables, function (dt) {
_.each(dt.dimensions, function (d) {
d.datatableid = dt.id;
//if (!d.name)
// d = get(d.id);
//cache by id
// _get[d.id] = d;
//cache by name
// _getByName[d.name] = d;
dimensions.push(d);
})
});
if (!datasourceid && !datatableid) {
_.each(joola.config.integration.dimensions, function (d) {
d.class = 'calculated';
dimensions.push(d);
});
}
//_list = ce.clone(dimensions);
return ce.clone(dimensions);
};
var _get = {};
var get = function (dimensionid) {
var result;
var exist = _.find(_get, function (d) {
return d.id == dimensionid;
});
if (!exist) {
var dimensions = list();
result = ce.clone(_.find(dimensions, function (d) {
return d.id.toLowerCase() == dimensionid.toLowerCase();
}));
return result;
}
else {
result = ce.clone(exist);
return result;
}
};
var getByName = function (dimensionname) {
var _self = this;
var dimensions = list();
return ce.clone(_.find(dimensions, function (d) {
if (!d.name)
d = _self.get(d.id);
return d.name.toLowerCase() == dimensionname.toLowerCase();
}));
};
exports.list = list;
exports.get = get;
exports.getByName = getByName;