UNPKG

@gooddata/gooddata-js

Version:
117 lines (116 loc) 4.88 kB
"use strict"; 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 }); // (C) 2007-2020 GoodData Corporation var compact_1 = __importDefault(require("lodash/compact")); var typings_1 = require("@gooddata/typings"); var FilterConverter_1 = require("./FilterConverter"); var formats_1 = require("../constants/formats"); var MeasureConverter = { convertMeasure: convertMeasure, }; exports.default = MeasureConverter; function convertMeasure(measure) { var definition = measure.measure.definition; var convertedDefinition = convertMeasureDefinition(definition); var format = getFormat(measure); var formatProp = format ? { format: format } : {}; var alias = measure.measure.alias ? measure.measure.alias : measure.measure.title; var aliasProp = alias ? { alias: alias } : {}; return __assign({ localIdentifier: measure.measure.localIdentifier, definition: convertedDefinition }, aliasProp, formatProp); } function convertMeasureDefinition(definition) { if (typings_1.VisualizationObject.isMeasureDefinition(definition)) { return convertSimpleMeasureDefinition(definition); } else if (typings_1.VisualizationObject.isPopMeasureDefinition(definition)) { return convertPopMeasureDefinition(definition); } else if (typings_1.VisualizationObject.isPreviousPeriodMeasureDefinition(definition)) { return convertPreviousPeriodMeasureDefinition(definition); } else if (typings_1.VisualizationObject.isArithmeticMeasureDefinition(definition)) { return convertArithmeticMeasureDefinition(definition); } else { throw Error("The measure definition is not supported: " + JSON.stringify(definition)); } } function convertSimpleMeasureDefinition(definition) { var measureDefinition = definition.measureDefinition; var filters = measureDefinition.filters ? compact_1.default(measureDefinition.filters.map(FilterConverter_1.convertVisualizationObjectFilter)) : []; var filtersProp = filters.length ? { filters: filters } : {}; var aggregation = measureDefinition.aggregation; var aggregationProp = aggregation ? { aggregation: aggregation } : {}; var computeRatio = measureDefinition.computeRatio; var computeRatioProp = computeRatio ? { computeRatio: computeRatio } : {}; return { measure: __assign({ item: measureDefinition.item }, filtersProp, aggregationProp, computeRatioProp), }; } function convertPopMeasureDefinition(definition) { var popMeasureDefinition = definition.popMeasureDefinition; return { popMeasure: { measureIdentifier: popMeasureDefinition.measureIdentifier, popAttribute: popMeasureDefinition.popAttribute, }, }; } function convertPreviousPeriodMeasureDefinition(definition) { var previousPeriodMeasure = definition.previousPeriodMeasure; return { previousPeriodMeasure: { measureIdentifier: previousPeriodMeasure.measureIdentifier, dateDataSets: previousPeriodMeasure.dateDataSets.map(function (dateDataSet) { return ({ dataSet: dateDataSet.dataSet, periodsAgo: dateDataSet.periodsAgo, }); }), }, }; } function convertArithmeticMeasureDefinition(definition) { var arithmeticMeasure = definition.arithmeticMeasure; return { arithmeticMeasure: { measureIdentifiers: arithmeticMeasure.measureIdentifiers.slice(), operator: arithmeticMeasure.operator, }, }; } function getFormat(measure) { var _a = measure.measure, definition = _a.definition, format = _a.format; if (format) { return format; } var isArithmeticMeasureChange = typings_1.VisualizationObject.isArithmeticMeasureDefinition(definition) && definition.arithmeticMeasure.operator === "change"; if (isArithmeticMeasureChange) { return formats_1.DEFAULT_PERCENTAGE_FORMAT; } if (typings_1.VisualizationObject.isMeasureDefinition(definition)) { var measureDefinition = definition.measureDefinition; if (measureDefinition.computeRatio) { return formats_1.DEFAULT_PERCENTAGE_FORMAT; } if (measureDefinition.aggregation === "count") { return formats_1.DEFAULT_INTEGER_FORMAT; } } return undefined; }