UNPKG

@gooddata/react-components

Version:

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

192 lines 8.54 kB
"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