@gooddata/gooddata-js
Version:
GoodData JavaScript SDK
48 lines (47 loc) • 2.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// (C) 2007-2018 GoodData Corporation
var get_1 = __importDefault(require("lodash/get"));
var set_1 = __importDefault(require("lodash/set"));
function getAttributeUris(displayForms) {
return displayForms.map(function (displayForm) {
return get_1.default(displayForm, ["attributeDisplayForm", "content", "formOf"]);
});
}
function createAttributesMap(displayForms, attributes) {
return displayForms.reduce(function (attributesMap, displayForm) {
var dfUri = get_1.default(displayForm, ["attributeDisplayForm", "meta", "uri"]);
var attribute = attributes.find(function (attr) {
return get_1.default(attr, ["attribute", "meta", "uri"]) ===
get_1.default(displayForm, ["attributeDisplayForm", "content", "formOf"]);
});
return set_1.default(attributesMap, [dfUri], attribute);
}, {});
}
function getMissingUrisInAttributesMap(displayFormsUris, attributesMap) {
var uris = displayFormsUris || [];
return uris.filter(function (uri) { return !attributesMap[uri]; });
}
exports.getMissingUrisInAttributesMap = getMissingUrisInAttributesMap;
var AttributesMapLoaderModule = /** @class */ (function () {
function AttributesMapLoaderModule(md) {
this.md = md;
}
AttributesMapLoaderModule.prototype.loadAttributesMap = function (projectId, attributeDisplayFormUris) {
var _this = this;
if (attributeDisplayFormUris.length === 0) {
return Promise.resolve({});
}
return this.md.getObjects(projectId, attributeDisplayFormUris).then(function (displayForms) {
var attributeUris = getAttributeUris(displayForms);
return _this.md.getObjects(projectId, attributeUris).then(function (attributes) {
return createAttributesMap(displayForms, attributes);
});
});
};
return AttributesMapLoaderModule;
}());
exports.AttributesMapLoaderModule = AttributesMapLoaderModule;