@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
192 lines • 8.54 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// (C) 2007-2018 GoodData Corporation
var typings_1 = require("@gooddata/typings");
var afmHelper_1 = require("../helpers/afmHelper");
var executionResultHelper_1 = require("../helpers/executionResultHelper");
var mappingHeader_1 = require("../helpers/mappingHeader");
var MappingHeader_1 = require("../interfaces/MappingHeader");
function arithmeticMeasureLocalIdentifierDeepMatch(measures, measureHeaders, operandLocalIdentifier, predicate, context) {
var operandInAfm = measures.find(function (measure) { return measure.localIdentifier === operandLocalIdentifier; });
var operandHeader = measureHeaders.find(function (header) { return mappingHeader_1.getMappingHeaderLocalIdentifier(header) === operandLocalIdentifier; });
if (typings_1.AFM.isArithmeticMeasureDefinition(operandInAfm.definition)) {
return operandInAfm.definition.arithmeticMeasure.measureIdentifiers.some(function (operandLocalIdentifier) {
return arithmeticMeasureLocalIdentifierDeepMatch(measures, measureHeaders, operandLocalIdentifier, predicate, context);
});
}
return predicate(operandHeader, context);
}
function getMasterMeasureOperandIdentifiers(measure) {
if (typings_1.AFM.isArithmeticMeasureDefinition(measure.definition)) {
return measure.definition.arithmeticMeasure.measureIdentifiers;
}
return null;
}
function getDerivedMeasureMasterMeasureOperandIdentifiers(measure, afm) {
if (!afmHelper_1.isDerivedMeasure(measure)) {
return null;
}
var masterMeasureLocalIdentifier = afmHelper_1.getMasterMeasureLocalIdentifier(measure);
var masterMeasure = afmHelper_1.findMeasureByLocalIdentifier(afm, masterMeasureLocalIdentifier);
return getMasterMeasureOperandIdentifiers(masterMeasure);
}
function composedFromQualifier(predicate) {
return function (header, context) {
if (!MappingHeader_1.isMappingHeaderMeasureItem(header)) {
return false;
}
var afm = context.afm, executionResponse = context.executionResponse;
var measureLocalIdentifier = mappingHeader_1.getMappingHeaderLocalIdentifier(header);
var measureInAFM = afm.measures.find(function (measure) {
return measure.localIdentifier === measureLocalIdentifier;
});
if (!measureInAFM) {
return false;
}
var arithmeticMeasureOperands = getDerivedMeasureMasterMeasureOperandIdentifiers(measureInAFM, afm) ||
getMasterMeasureOperandIdentifiers(measureInAFM);
if (!arithmeticMeasureOperands) {
return false;
}
var measureGroup = executionResultHelper_1.findMeasureGroupInDimensions(executionResponse.dimensions);
return arithmeticMeasureOperands.some(function (operandLocalIdentifier) {
return arithmeticMeasureLocalIdentifierDeepMatch(afm.measures, measureGroup.items, operandLocalIdentifier, predicate, context);
});
};
}
function getSimpleMeasureUri(afmMeasure) {
var definition = afmMeasure.definition;
if (!typings_1.AFM.isSimpleMeasureDefinition(definition)) {
return null;
}
if (typings_1.AFM.isObjectUriQualifier(definition.measure.item)) {
return definition.measure.item.uri;
}
return null;
}
function getSimpleMeasureIdentifier(afmMeasure) {
var definition = afmMeasure.definition;
if (!typings_1.AFM.isSimpleMeasureDefinition(definition)) {
return null;
}
if (typings_1.AFM.isObjIdentifierQualifier(definition.measure.item)) {
return definition.measure.item.identifier;
}
return null;
}
function findMeasureInAfmByHeader(header, afm) {
var localIdentifier = mappingHeader_1.getMappingHeaderLocalIdentifier(header);
return afmHelper_1.findMeasureByLocalIdentifier(afm, localIdentifier);
}
function matchHeaderUri(uri, header) {
var headerUri = mappingHeader_1.getMappingHeaderUri(header);
return headerUri ? headerUri === uri : false;
}
function matchHeaderIdentifier(identifier, header) {
var headerIdentifier = mappingHeader_1.getMappingHeaderIdentifier(header);
return headerIdentifier ? headerIdentifier === identifier : false;
}
function matchAfmMeasureUri(uri, afmMeasure) {
var measureUri = getSimpleMeasureUri(afmMeasure);
return measureUri ? measureUri === uri : false;
}
function matchAfmMeasureIdentifier(identifier, afmMeasure) {
var measureIdentifier = getSimpleMeasureIdentifier(afmMeasure);
return measureIdentifier ? measureIdentifier === identifier : false;
}
function matchDerivedMeasureByMasterUri(uri, afmMeasure, context) {
var afm = context.afm, executionResponse = context.executionResponse;
var masterMeasureLocalIdentifier = afmHelper_1.getMasterMeasureLocalIdentifier(afmMeasure);
var isDerived = !!masterMeasureLocalIdentifier;
if (isDerived) {
var masterMeasureHeader = executionResultHelper_1.findMeasureHeaderByLocalIdentifier(executionResponse, masterMeasureLocalIdentifier);
if (matchHeaderUri(uri, masterMeasureHeader)) {
return true;
}
var masterMeasure = afmHelper_1.findMeasureByLocalIdentifier(afm, masterMeasureLocalIdentifier);
return matchAfmMeasureUri(uri, masterMeasure);
}
return false;
}
function matchDerivedMeasureByMasterIdentifier(identifier, afmMeasure, context) {
var afm = context.afm, executionResponse = context.executionResponse;
var masterMeasureLocalIdentifier = afmHelper_1.getMasterMeasureLocalIdentifier(afmMeasure);
var isDerived = !!masterMeasureLocalIdentifier;
if (isDerived) {
var masterMeasureHeader = executionResultHelper_1.findMeasureHeaderByLocalIdentifier(executionResponse, masterMeasureLocalIdentifier);
if (matchHeaderIdentifier(identifier, masterMeasureHeader)) {
return true;
}
var masterMeasure = afmHelper_1.findMeasureByLocalIdentifier(afm, masterMeasureLocalIdentifier);
return matchAfmMeasureIdentifier(identifier, masterMeasure);
}
return false;
}
function uriMatch(uri) {
return function (header, context) {
if (matchHeaderUri(uri, header)) {
return true;
}
if (!MappingHeader_1.isMappingHeaderMeasureItem(header)) {
return false;
}
var afmMeasure = findMeasureInAfmByHeader(header, context.afm);
if (!afmMeasure) {
return false;
}
if (matchAfmMeasureUri(uri, afmMeasure)) {
return true;
}
return matchDerivedMeasureByMasterUri(uri, afmMeasure, context);
};
}
exports.uriMatch = uriMatch;
function identifierMatch(identifier) {
return function (header, context) {
if (MappingHeader_1.isMappingHeaderAttributeItem(header)) {
return false;
}
if (matchHeaderIdentifier(identifier, header)) {
return true;
}
if (!MappingHeader_1.isMappingHeaderMeasureItem(header)) {
return false;
}
var afmMeasure = findMeasureInAfmByHeader(header, context.afm);
if (!afmMeasure) {
return false;
}
if (matchAfmMeasureIdentifier(identifier, afmMeasure)) {
return true;
}
return matchDerivedMeasureByMasterIdentifier(identifier, afmMeasure, context);
};
}
exports.identifierMatch = identifierMatch;
function attributeItemNameMatch(name) {
return function (header, _context) {
return MappingHeader_1.isMappingHeaderAttributeItem(header)
? header.attributeHeaderItem && header.attributeHeaderItem.name === name
: false;
};
}
exports.attributeItemNameMatch = attributeItemNameMatch;
function localIdentifierMatch(localIdentifier) {
return function (header, _context) {
if (!mappingHeader_1.hasMappingHeaderLocalIdentifier(header)) {
return false;
}
var headerLocalIdentifier = mappingHeader_1.getMappingHeaderLocalIdentifier(header);
return headerLocalIdentifier && headerLocalIdentifier === localIdentifier;
};
}
exports.localIdentifierMatch = localIdentifierMatch;
function composedFromUri(uri) {
return composedFromQualifier(uriMatch(uri));
}
exports.composedFromUri = composedFromUri;
function composedFromIdentifier(identifier) {
return composedFromQualifier(identifierMatch(identifier));
}
exports.composedFromIdentifier = composedFromIdentifier;
//# sourceMappingURL=HeaderPredicateFactory.js.map