UNPKG

@gooddata/gooddata-js

Version:
111 lines (110 loc) 3.82 kB
"use strict"; // (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;