@gooddata/gooddata-js
Version:
GoodData JavaScript SDK
111 lines (110 loc) • 3.82 kB
JavaScript
;
// (C) 2007-2019 GoodData Corporation
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
var typings_1 = require("@gooddata/typings");
function convertElementsArray(arr, isText) {
return isText ? { values: arr } : { uris: arr };
}
function convertPositiveAttributeFilter(filter) {
var oldFilter = filter.positiveAttributeFilter;
return {
positiveAttributeFilter: {
displayForm: oldFilter.displayForm,
in: convertElementsArray(oldFilter.in, oldFilter.textFilter),
},
};
}
function convertNegativeAttributeFilter(filter) {
var oldFilter = filter.negativeAttributeFilter;
return {
negativeAttributeFilter: {
displayForm: oldFilter.displayForm,
notIn: convertElementsArray(oldFilter.notIn, oldFilter.textFilter),
},
};
}
function convertFilter(filter) {
if (typings_1.AFM.isPositiveAttributeFilter(filter)) {
return convertPositiveAttributeFilter(filter);
}
else if (typings_1.AFM.isNegativeAttributeFilter(filter)) {
return convertNegativeAttributeFilter(filter);
}
return filter;
}
exports.convertFilter = convertFilter;
function convertMeasureFilter(filter) {
if (typings_1.AFM.isPositiveAttributeFilter(filter)) {
return convertPositiveAttributeFilter(filter);
}
else if (typings_1.AFM.isNegativeAttributeFilter(filter)) {
return convertNegativeAttributeFilter(filter);
}
return filter;
}
function convertFilters(filters) {
return filters !== undefined ? filters.map(convertFilter) : filters;
}
function convertMeasureFilters(filters) {
return filters !== undefined ? filters.map(convertMeasureFilter) : filters;
}
function convertMeasure(measure) {
if (typings_1.AFM.isSimpleMeasureDefinition(measure.definition)) {
var simpleMeasure = measure.definition.measure;
var filters = convertMeasureFilters(simpleMeasure.filters);
var filtersProp = filters ? { filters: filters } : {};
return __assign({}, measure, { definition: {
measure: __assign({}, simpleMeasure, filtersProp),
} });
}
return measure;
}
function convertMeasures(measures) {
return measures !== undefined ? measures.map(convertMeasure) : measures;
}
/**
* Converts 'client-land' AFM to one that will be sent to backend.
*
* @param afm afm to convert
* @returns new instance of ExecuteAFM.IAfm structure
*/
function convertAfm(afm) {
if (afm === undefined) {
return {};
}
var executeAFM = __assign({}, afm, { measures: convertMeasures(afm.measures), filters: convertFilters(afm.filters) });
return cloneDeep_1.default(executeAFM);
}
exports.convertAfm = convertAfm;
function convertExecution(execution) {
return {
execution: {
afm: convertAfm(execution.execution.afm),
resultSpec: execution.execution.resultSpec,
},
};
}
/**
* Converts 'client-land' AFM to JSON payload acceptable by REST API.
*
* @param execution execution to send to API
*/
function convertExecutionToJson(execution) {
return JSON.stringify(convertExecution(execution));
}
exports.convertExecutionToJson = convertExecutionToJson;