@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
168 lines • 8.15 kB
JavaScript
;
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