UNPKG

@gooddata/react-components

Version:

GoodData.UI - A powerful JavaScript library for building analytical applications

168 lines • 8.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // (C) 2019 GoodData Corporation var flow = require("lodash/flow"); var identity = require("lodash/identity"); var isArray = require("lodash/isArray"); var isObject = require("lodash/isObject"); var isString = require("lodash/isString"); var typings_1 = require("@gooddata/typings"); var stringifyObject = require("stringify-object"); var stringify = function (input) { return stringifyObject(input, { singleQuotes: false, inlineCharacterLimit: 50, indent: " ", }); }; var ARRAY_JOINER = ", "; var getObjQualifierValue = function (value) { return value.uri || value.identifier; }; // dot suffix handling e. g. ".localIdentifier(...)" // is curried explicitly to allow easier composition in cases where more than one dot suffix is supported var addStringDotItem = function (identifier, helperName) { if (helperName === void 0) { helperName = identifier; } return function (objToConvert) { return function (value) { return (objToConvert[identifier] ? value + "." + helperName + "(\"" + objToConvert[identifier] + "\")" : value); }; }; }; var addAggregation = addStringDotItem("aggregation"); var addAlias = addStringDotItem("alias"); var addFormat = addStringDotItem("format"); var addLocalIdentifier = addStringDotItem("localIdentifier"); var addTitle = addStringDotItem("title"); var addFilters = function (_a) { var filters = _a.filters; return function (value) { return filters ? value + ".filters(" + filters.map(exports.getModelNotationFor).join(ARRAY_JOINER) + ")" : value; }; }; var addLocators = function (_a) { var locators = _a.locators; return function (value) { var attributeLocators = locators.filter(function (l) { return !typings_1.AFM.isMeasureLocatorItem(l); }); return attributeLocators && attributeLocators.length ? value + ".attributeLocators(" + attributeLocators .map(function (a) { return stringify(a.attributeLocatorItem); }) .join(ARRAY_JOINER) + ")" : value; }; }; var addRatio = function (_a) { var computeRatio = _a.computeRatio; return function (value) { return computeRatio ? value + ".ratio()" : value; }; }; var convertAttribute = function (_a) { var visualizationAttribute = _a.visualizationAttribute; return flow([addAlias(visualizationAttribute), addLocalIdentifier(visualizationAttribute)])("Model.attribute(\"" + getObjQualifierValue(visualizationAttribute.displayForm) + "\")"); }; var baseMeasureDotAdders = function (measure) { return [ addAlias(measure), addFormat(measure), addLocalIdentifier(measure), addTitle(measure), ]; }; var convertSimpleMeasure = function (measure, definition) { return flow(baseMeasureDotAdders(measure).concat([ addAggregation(definition.measureDefinition), addFilters(definition.measureDefinition), addRatio(definition.measureDefinition), ]))("Model.measure(\"" + getObjQualifierValue(definition.measureDefinition.item) + "\")"); }; var convertArithmeticMeasure = function (measure, definition) { return flow(baseMeasureDotAdders(measure))("Model.arithmeticMeasure(" + stringify(definition.arithmeticMeasure.measureIdentifiers) + ", \"" + definition.arithmeticMeasure.operator + "\")"); }; var convertPopMeasure = function (measure, definition) { return flow(baseMeasureDotAdders(measure))("Model.popMeasure(\"" + definition.popMeasureDefinition.measureIdentifier + "\", \"" + getObjQualifierValue(definition.popMeasureDefinition.popAttribute) + "\")"); }; var convertPreviousPeriodMeasure = function (measure, definition) { return flow(baseMeasureDotAdders(measure))("Model.previousPeriodMeasure(\"" + definition.previousPeriodMeasure.measureIdentifier + "\", [" + (definition .previousPeriodMeasure.dateDataSets && definition.previousPeriodMeasure.dateDataSets .map(function (s) { return stringify({ dataSet: getObjQualifierValue(s.dataSet), periodsAgo: s.periodsAgo, }); }) .join(ARRAY_JOINER)) + "])"); }; var convertMeasure = function (_a) { var measure = _a.measure; var definition = measure.definition; if (typings_1.VisualizationInput.isMeasureDefinition(definition)) { return convertSimpleMeasure(measure, definition); } else if (typings_1.VisualizationInput.isArithmeticMeasureDefinition(definition)) { return convertArithmeticMeasure(measure, definition); } else if (typings_1.VisualizationInput.isPopMeasureDefinition(definition)) { return convertPopMeasure(measure, definition); } else if (typings_1.VisualizationInput.isPreviousPeriodMeasureDefinition(definition)) { return convertPreviousPeriodMeasure(measure, definition); } }; var convertAttributeSortItem = function (_a) { var attributeSortItem = _a.attributeSortItem; return addAggregation(attributeSortItem)("Model.attributeSortItem(\"" + attributeSortItem.attributeIdentifier + "\", \"" + attributeSortItem.direction + "\")"); }; var convertMeasureSortItem = function (_a) { var measureSortItem = _a.measureSortItem; var measureLocator = measureSortItem.locators.find(function (l) { return typings_1.AFM.isMeasureLocatorItem(l); }); return addLocators(measureSortItem)("Model.measureSortItem(\"" + measureLocator.measureLocatorItem.measureIdentifier + "\", \"" + measureSortItem.direction + "\")"); }; var convertAbsoluteDateFilter = function (_a) { var _b = _a.absoluteDateFilter, dataSet = _b.dataSet, from = _b.from, to = _b.to; var args = [getObjQualifierValue(dataSet), from, to].filter(identity).map(stringify); return "Model.absoluteDateFilter(" + args.join(ARRAY_JOINER) + ")"; }; var convertRelativeDateFilter = function (_a) { var _b = _a.relativeDateFilter, dataSet = _b.dataSet, granularity = _b.granularity, from = _b.from, to = _b.to; var args = [getObjQualifierValue(dataSet), granularity, from, to].filter(identity).map(stringify); return "Model.relativeDateFilter(" + args.join(ARRAY_JOINER) + ")"; }; var convertPositiveAttributeFilter = function (_a) { var _b = _a.positiveAttributeFilter, displayForm = _b.displayForm, inValues = _b.in, textFilter = _b.textFilter; var args = [getObjQualifierValue(displayForm), inValues, textFilter].filter(identity).map(stringify); return "Model.positiveAttributeFilter(" + args.join(ARRAY_JOINER) + ")"; }; var convertNegativeAttributeFilter = function (_a) { var _b = _a.negativeAttributeFilter, displayForm = _b.displayForm, notIn = _b.notIn, textFilter = _b.textFilter; var args = [getObjQualifierValue(displayForm), notIn, textFilter].filter(identity).map(stringify); return "Model.negativeAttributeFilter(" + args.join(ARRAY_JOINER) + ")"; }; exports.getModelNotationFor = function (data) { if (isArray(data)) { return "[" + data.map(exports.getModelNotationFor).join(ARRAY_JOINER) + "]"; } else if (typings_1.VisualizationInput.isAttribute(data)) { return convertAttribute(data); } else if (typings_1.VisualizationInput.isMeasure(data)) { return convertMeasure(data); } else if (typings_1.AFM.isAttributeSortItem(data)) { return convertAttributeSortItem(data); } else if (typings_1.AFM.isMeasureSortItem(data)) { return convertMeasureSortItem(data); } else if (typings_1.VisualizationInput.isAbsoluteDateFilter(data)) { return convertAbsoluteDateFilter(data); } else if (typings_1.VisualizationInput.isRelativeDateFilter(data)) { return convertRelativeDateFilter(data); } else if (typings_1.VisualizationInput.isPositiveAttributeFilter(data)) { return convertPositiveAttributeFilter(data); } else if (typings_1.VisualizationInput.isNegativeAttributeFilter(data)) { return convertNegativeAttributeFilter(data); } return isObject(data) || isString(data) ? stringify(data) : data; }; //# sourceMappingURL=objectToModelNotation.js.map