@gooddata/gooddata-js
Version:
GoodData JavaScript SDK
63 lines (62 loc) • 2.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
var execute_afm_1 = require("../../execution/execute-afm");
var DataSource = /** @class */ (function () {
function DataSource(execFactory, afm, fingerprint, responseFactory, resultFactory) {
this.execFactory = execFactory;
this.afm = afm;
this.fingerprint = fingerprint;
this.responseFactory = responseFactory;
this.resultFactory = resultFactory;
this.executionPromises = {};
}
DataSource.prototype.getData = function (resultSpec) {
return this.execFactory(resultSpec);
};
DataSource.prototype.getPage = function (resultSpec, limit, offset) {
var _this = this;
if (limit === void 0) { limit = []; }
if (offset === void 0) { offset = []; }
var resultSpecFingerprint = json_stable_stringify_1.default(resultSpec);
if (!this.responseFactory) {
throw new Error("Missing responseFactory!");
}
if (!this.executionPromises[resultSpecFingerprint]) {
this.executionPromises[resultSpecFingerprint] = this.responseFactory(resultSpec);
}
return this.executionPromises[resultSpecFingerprint].then(function (executionResponse) {
if (!_this.resultFactory) {
throw new Error("Missing resultFactory!");
}
var safeOffset = offset.map(function (offsetItem) {
if (offsetItem === void 0) { offsetItem = 0; }
return offsetItem;
});
var safeLimit = limit.map(function (limitItem) {
if (limitItem === void 0) { limitItem = execute_afm_1.DEFAULT_LIMIT; }
var safeLimitItem = Math.min(limitItem, execute_afm_1.DEFAULT_LIMIT);
if (safeLimitItem < limitItem) {
// tslint:disable-next-line:no-console
console.warn("The maximum limit per page is " + execute_afm_1.DEFAULT_LIMIT);
}
return safeLimitItem;
});
return _this.resultFactory(executionResponse.links.executionResult, safeLimit, safeOffset).then(function (executionResult) { return ({
executionResult: executionResult,
executionResponse: executionResponse,
}); });
});
};
DataSource.prototype.getAfm = function () {
return this.afm;
};
DataSource.prototype.getFingerprint = function () {
return this.fingerprint ? this.fingerprint : json_stable_stringify_1.default(this.afm);
};
return DataSource;
}());
exports.DataSource = DataSource;