UNPKG

3.82 kBJavaScriptView Raw
1"use strict";
2// (C) 2007-2019 GoodData Corporation
3var __assign = (this && this.__assign) || function () {
4 __assign = Object.assign || function(t) {
5 for (var s, i = 1, n = arguments.length; i < n; i++) {
6 s = arguments[i];
7 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8 t[p] = s[p];
9 }
10 return t;
11 };
12 return __assign.apply(this, arguments);
13};
14var __importDefault = (this && this.__importDefault) || function (mod) {
15 return (mod && mod.__esModule) ? mod : { "default": mod };
16};
17Object.defineProperty(exports, "__esModule", { value: true });
18var cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
19var typings_1 = require("@gooddata/typings");
20function convertElementsArray(arr, isText) {
21 return isText ? { values: arr } : { uris: arr };
22}
23function convertPositiveAttributeFilter(filter) {
24 var oldFilter = filter.positiveAttributeFilter;
25 return {
26 positiveAttributeFilter: {
27 displayForm: oldFilter.displayForm,
28 in: convertElementsArray(oldFilter.in, oldFilter.textFilter),
29 },
30 };
31}
32function convertNegativeAttributeFilter(filter) {
33 var oldFilter = filter.negativeAttributeFilter;
34 return {
35 negativeAttributeFilter: {
36 displayForm: oldFilter.displayForm,
37 notIn: convertElementsArray(oldFilter.notIn, oldFilter.textFilter),
38 },
39 };
40}
41function convertFilter(filter) {
42 if (typings_1.AFM.isPositiveAttributeFilter(filter)) {
43 return convertPositiveAttributeFilter(filter);
44 }
45 else if (typings_1.AFM.isNegativeAttributeFilter(filter)) {
46 return convertNegativeAttributeFilter(filter);
47 }
48 return filter;
49}
50exports.convertFilter = convertFilter;
51function convertMeasureFilter(filter) {
52 if (typings_1.AFM.isPositiveAttributeFilter(filter)) {
53 return convertPositiveAttributeFilter(filter);
54 }
55 else if (typings_1.AFM.isNegativeAttributeFilter(filter)) {
56 return convertNegativeAttributeFilter(filter);
57 }
58 return filter;
59}
60function convertFilters(filters) {
61 return filters !== undefined ? filters.map(convertFilter) : filters;
62}
63function convertMeasureFilters(filters) {
64 return filters !== undefined ? filters.map(convertMeasureFilter) : filters;
65}
66function convertMeasure(measure) {
67 if (typings_1.AFM.isSimpleMeasureDefinition(measure.definition)) {
68 var simpleMeasure = measure.definition.measure;
69 var filters = convertMeasureFilters(simpleMeasure.filters);
70 var filtersProp = filters ? { filters: filters } : {};
71 return __assign({}, measure, { definition: {
72 measure: __assign({}, simpleMeasure, filtersProp),
73 } });
74 }
75 return measure;
76}
77function convertMeasures(measures) {
78 return measures !== undefined ? measures.map(convertMeasure) : measures;
79}
80/**
81 * Converts 'client-land' AFM to one that will be sent to backend.
82 *
83 * @param afm afm to convert
84 * @returns new instance of ExecuteAFM.IAfm structure
85 */
86function convertAfm(afm) {
87 if (afm === undefined) {
88 return {};
89 }
90 var executeAFM = __assign({}, afm, { measures: convertMeasures(afm.measures), filters: convertFilters(afm.filters) });
91 return cloneDeep_1.default(executeAFM);
92}
93exports.convertAfm = convertAfm;
94function convertExecution(execution) {
95 return {
96 execution: {
97 afm: convertAfm(execution.execution.afm),
98 resultSpec: execution.execution.resultSpec,
99 },
100 };
101}
102/**
103 * Converts 'client-land' AFM to JSON payload acceptable by REST API.
104 *
105 * @param execution execution to send to API
106 */
107function convertExecutionToJson(execution) {
108 return JSON.stringify(convertExecution(execution));
109}
110exports.convertExecutionToJson = convertExecutionToJson;