UNPKG

joola.io.engine

Version:
91 lines (75 loc) 1.94 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 _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;