gooddata
Advanced tools
Comparing version 4.5.0-pbenes-visualization-object-2018-01-31T12-42-24-580Z to 4.5.0-pbenes-visualization-object-2018-02-05T08-10-05-788Z
@@ -97,4 +97,3 @@ 'use strict'; | ||
var mdObj = (0, _lodash.get)((0, _lodash.cloneDeep)(options), 'bucketItems'); | ||
var attributesMap = options.attributesMap; | ||
var attributesMap = (0, _lodash.get)(options, 'attributesMap'); | ||
var hasBuckets = (0, _lodash.get)(mdObj, 'buckets') !== undefined; | ||
@@ -101,0 +100,0 @@ if (hasBuckets) { |
@@ -9,2 +9,4 @@ 'use strict'; | ||
var _attributesMapLoader = require('./utils/attributesMapLoader'); | ||
var _executeAfm = require('./execution/execute-afm'); | ||
@@ -23,7 +25,6 @@ | ||
*/ | ||
// Copyright (C) 2007-2017, GoodData(R) Corporation. All rights reserved. | ||
exports.default = { | ||
getData: _experimentalExecutions.getData, | ||
loadAttributesMap: _experimentalExecutions.loadAttributesMap, | ||
loadAttributesMap: _attributesMapLoader.loadAttributesMap, | ||
executeAfm: _executeAfm2.default | ||
}; | ||
}; // Copyright (C) 2007-2017, GoodData(R) Corporation. All rights reserved. |
@@ -13,3 +13,2 @@ 'use strict'; | ||
exports.getData = getData; | ||
exports.loadAttributesMap = loadAttributesMap; | ||
@@ -28,4 +27,2 @@ var _md = require('md5'); | ||
var _metadata = require('../metadata'); | ||
var _rules = require('../utils/rules'); | ||
@@ -37,2 +34,4 @@ | ||
var _attributesMapLoader = require('../utils/attributesMapLoader'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -47,7 +46,7 @@ | ||
var findHeaderForMappingFn = function findHeaderForMappingFn(mapping, header) { | ||
function findHeaderForMappingFn(mapping, header) { | ||
return (mapping.element === header.id || mapping.element === header.uri) && header.measureIndex === undefined; | ||
}; | ||
} | ||
var wrapMeasureIndexesFromMappings = function wrapMeasureIndexesFromMappings(metricMappings, headers) { | ||
function wrapMeasureIndexesFromMappings(metricMappings, headers) { | ||
if (metricMappings) { | ||
@@ -63,3 +62,3 @@ metricMappings.forEach(function (mapping) { | ||
return headers; | ||
}; | ||
} | ||
@@ -163,3 +162,3 @@ var emptyResult = { | ||
})).then(_xhr.parseJSON).then(function (result) { | ||
executedReport.headers = wrapMeasureIndexesFromMappings((0, _lodash.get)(executionConfiguration, 'metricMappings'), result.executionResult.headers); | ||
executedReport.headers = wrapMeasureIndexesFromMappings((0, _lodash.get)(executionConfiguration, 'metricMappings'), (0, _lodash.get)(result, ['executionResult', 'headers'], [])); | ||
@@ -184,3 +183,3 @@ // Start polling on url returned in the executionResult for tabularData | ||
var getMetricTitle = function getMetricTitle(suffix, title) { | ||
function getMetricTitle(suffix, title) { | ||
var maxLength = MAX_TITLE_LENGTH - suffix.length; | ||
@@ -194,3 +193,3 @@ if (title && title.length > maxLength) { | ||
return '' + title + suffix; | ||
}; | ||
} | ||
@@ -230,15 +229,15 @@ var getBaseMetricTitle = (0, _lodash.partial)(getMetricTitle, ''); | ||
var allFiltersEmpty = function allFiltersEmpty(item) { | ||
function allFiltersEmpty(item) { | ||
return (0, _lodash.every)((0, _lodash.map)(getMeasureFilters(item), function (f) { | ||
return isEmptyFilter(f); | ||
})); | ||
}; | ||
} | ||
var isDerived = function isDerived(measure) { | ||
function isDerived(measure) { | ||
var aggregation = getAggregation(measure); | ||
return aggregation !== '' || !allFiltersEmpty(measure); | ||
}; | ||
} | ||
function isAttrMeasureFilter(measureFilter) { | ||
return (0, _lodash.get)(measureFilter, 'positiveAttributeFilter') || (0, _lodash.get)(measureFilter, 'negativeAttributeFilter'); | ||
return ((0, _lodash.get)(measureFilter, 'positiveAttributeFilter') || (0, _lodash.get)(measureFilter, 'negativeAttributeFilter')) !== undefined; | ||
} | ||
@@ -309,3 +308,3 @@ | ||
var getFilterExpression = function getFilterExpression(attributesMap, measureFilter) { | ||
function getFilterExpression(attributesMap, measureFilter) { | ||
if (isAttrMeasureFilter(measureFilter)) { | ||
@@ -315,5 +314,5 @@ return getAttrFilterExpression(measureFilter, attributesMap); | ||
return getDateFilterExpression(measureFilter); | ||
}; | ||
} | ||
var getGeneratedMetricExpression = function getGeneratedMetricExpression(item, attributesMap) { | ||
function getGeneratedMetricExpression(item, attributesMap) { | ||
var aggregation = getAggregation(item).toUpperCase(); | ||
@@ -326,5 +325,5 @@ var objectUri = (0, _lodash.get)(getDefinition(item), 'item.uri'); | ||
return 'SELECT ' + (aggregation ? aggregation + '([' + objectUri + '])' : '[' + objectUri + ']') + (notEmpty(where) ? ' WHERE ' + where.join(' AND ') : ''); | ||
}; | ||
} | ||
var getPercentMetricExpression = function getPercentMetricExpression(category, attributesMap, measure) { | ||
function getPercentMetricExpression(category, attributesMap, measure) { | ||
var metricExpressionWithoutFilters = 'SELECT [' + (0, _lodash.get)(getDefinition(measure), 'item.uri') + ']'; | ||
@@ -343,11 +342,11 @@ | ||
return 'SELECT (' + metricExpressionWithoutFilters + whereExpression + ') / (' + metricExpressionWithoutFilters + ' BY ALL [' + attributeUri + ']' + whereExpression + ')'; | ||
}; | ||
} | ||
var getPoPExpression = function getPoPExpression(attributeUri, metricExpression) { | ||
function getPoPExpression(attributeUri, metricExpression) { | ||
return 'SELECT ' + metricExpression + ' FOR PREVIOUS ([' + attributeUri + '])'; | ||
}; | ||
} | ||
var getGeneratedMetricHash = function getGeneratedMetricHash(title, format, expression) { | ||
function getGeneratedMetricHash(title, format, expression) { | ||
return (0, _md2.default)(expression + '#' + title + '#' + format); | ||
}; | ||
} | ||
@@ -364,3 +363,3 @@ function getMeasureType(measure) { | ||
var getGeneratedMetricIdentifier = function getGeneratedMetricIdentifier(item, aggregation, expressionCreator, hasher, attributesMap) { | ||
function getGeneratedMetricIdentifier(item, aggregation, expressionCreator, hasher, attributesMap) { | ||
var _get$split = (0, _lodash.get)(getDefinition(item), 'item.uri', '').split('/'), | ||
@@ -379,3 +378,3 @@ _get$split2 = _slicedToArray(_get$split, 6), | ||
return type + '_' + identifier + '.generated.' + hash + prefix + '_' + aggregation; | ||
}; | ||
} | ||
@@ -436,3 +435,3 @@ function isMeasure(bucketItem) { | ||
function getMeasureSorting(measure, mdObj) { | ||
var sorting = (0, _lodash.get)(mdObj, ['properties', 'sorts'], []); | ||
var sorting = (0, _lodash.get)(mdObj, ['properties', 'sortItems'], []); | ||
var matchedSorting = sorting.find(function (sortItem) { | ||
@@ -453,3 +452,3 @@ var measureSortItem = (0, _lodash.get)(sortItem, ['measureSortItem']); | ||
function getCategorySorting(category, mdObj) { | ||
var sorting = (0, _lodash.get)(mdObj, ['properties', 'sorts'], []); | ||
var sorting = (0, _lodash.get)(mdObj, ['properties', 'sortItems'], []); | ||
var matchedSorting = sorting.find(function (sortItem) { | ||
@@ -477,3 +476,3 @@ var attributeSortItem = (0, _lodash.get)(sortItem, ['attributeSortItem']); | ||
var createDerivedMetric = function createDerivedMetric(measure, mdObj, measureIndex, attributesMap) { | ||
function createDerivedMetric(measure, mdObj, measureIndex, attributesMap) { | ||
var format = measure.format; | ||
@@ -504,5 +503,5 @@ | ||
}; | ||
}; | ||
} | ||
var createContributionMetric = function createContributionMetric(measure, mdObj, measureIndex, attributesMap) { | ||
function createContributionMetric(measure, mdObj, measureIndex, attributesMap) { | ||
var category = (0, _lodash.first)(getCategories(getBuckets(mdObj))); | ||
@@ -528,3 +527,3 @@ var getMetricExpression = (0, _lodash.partial)(getPercentMetricExpression, category, attributesMap); | ||
}; | ||
}; | ||
} | ||
@@ -537,3 +536,3 @@ function getOriginalMeasureForPoP(popMeasure, mdObj) { | ||
var createPoPMetric = function createPoPMetric(popMeasure, mdObj, measureIndex, attributesMap) { | ||
function createPoPMetric(popMeasure, mdObj, measureIndex, attributesMap) { | ||
var title = getBaseMetricTitle((0, _lodash.get)(popMeasure, 'title')); | ||
@@ -546,7 +545,9 @@ var format = (0, _lodash.get)(popMeasure, 'format'); | ||
var getMetricExpression = (0, _lodash.partial)(getPoPExpression, attributeUri, '[' + (0, _lodash.get)(getDefinition(originalMeasure), ['item', 'uri']) + ']'); | ||
var originalMeasureExpression = '[' + (0, _lodash.get)(getDefinition(originalMeasure), ['item', 'uri']) + ']'; | ||
var getMetricExpression = (0, _lodash.partial)(getPoPExpression, attributeUri, originalMeasureExpression); | ||
if (isDerived(originalMeasure)) { | ||
var generated = createDerivedMetric(originalMeasure, mdObj, measureIndex, attributesMap); | ||
getMetricExpression = (0, _lodash.partial)(getPoPExpression, attributeUri, '(' + (0, _lodash.get)(generated, ['definition', 'metricDefinition', 'expression']) + ')'); | ||
var generatedMeasureExpression = '(' + (0, _lodash.get)(generated, ['definition', 'metricDefinition', 'expression']) + ')'; | ||
getMetricExpression = (0, _lodash.partial)(getPoPExpression, attributeUri, generatedMeasureExpression); | ||
} | ||
@@ -572,5 +573,5 @@ | ||
}; | ||
}; | ||
} | ||
var createContributionPoPMetric = function createContributionPoPMetric(popMeasure, mdObj, measureIndex, attributesMap) { | ||
function createContributionPoPMetric(popMeasure, mdObj, measureIndex, attributesMap) { | ||
var attributeUri = (0, _lodash.get)(popMeasure, ['definition', 'popMeasureDefinition', 'popAttribute', 'uri']); | ||
@@ -586,3 +587,4 @@ | ||
var getMetricExpression = (0, _lodash.partial)(getPoPExpression, attributeUri, '(' + (0, _lodash.get)(generated, 'definition.metricDefinition.expression') + ')'); | ||
var generatedMeasureExpression = '(' + (0, _lodash.get)(generated, ['definition', 'metricDefinition', 'expression']) + ')'; | ||
var getMetricExpression = (0, _lodash.partial)(getPoPExpression, attributeUri, generatedMeasureExpression); | ||
@@ -607,5 +609,5 @@ var identifier = getGeneratedMetricIdentifier(originalMeasure, 'pop', getMetricExpression, hasher, attributesMap); | ||
}; | ||
}; | ||
} | ||
var categoryToElement = function categoryToElement(attributesMap, mdObj, context, category) { | ||
function categoryToElement(attributesMap, mdObj, context, category) { | ||
// for catalogue columns contain attribute uri, but for execution display form uri | ||
@@ -617,5 +619,5 @@ var element = context === 'catalogue' ? getAttrUriFromMap((0, _lodash.get)(category, ['displayForm', 'uri']), attributesMap) : (0, _lodash.get)(category, ['displayForm', 'uri']); | ||
}; | ||
}; | ||
} | ||
var attributeFilterToWhere = function attributeFilterToWhere(f) { | ||
function attributeFilterToWhere(f) { | ||
var elements = getAttrFilterElements(f); | ||
@@ -630,9 +632,9 @@ var elementsForQuery = (0, _lodash.map)(elements, function (e) { | ||
return negative ? _defineProperty({}, dfUri, { $not: { $in: elementsForQuery } }) : _defineProperty({}, dfUri, { $in: elementsForQuery }); | ||
}; | ||
} | ||
var toInteger = function toInteger(value) { | ||
function toInteger(value) { | ||
return parseInt(value, 10); | ||
}; | ||
} | ||
var dateFilterToWhere = function dateFilterToWhere(f) { | ||
function dateFilterToWhere(f) { | ||
var dateUri = getDataSetFromDateFilter(f); | ||
@@ -651,13 +653,15 @@ | ||
return _defineProperty({}, dateUri, { $between: between, $granularity: granularity }); | ||
}; | ||
} | ||
var isPoP = function isPoP(_ref6) { | ||
function isPoP(_ref6) { | ||
var definition = _ref6.definition; | ||
return (0, _lodash.get)(definition, 'popMeasureDefinition') !== undefined; | ||
}; | ||
var isContribution = function isContribution(_ref7) { | ||
} | ||
function isContribution(_ref7) { | ||
var definition = _ref7.definition; | ||
return (0, _lodash.get)(definition, ['measureDefinition', 'computeRatio']); | ||
}; | ||
var isPoPContribution = function isPoPContribution(popMeasure, mdObj) { | ||
} | ||
function isPoPContribution(popMeasure, mdObj) { | ||
if (isPoP(popMeasure)) { | ||
@@ -668,7 +672,8 @@ var originalMeasure = getOriginalMeasureForPoP(popMeasure, mdObj); | ||
return false; | ||
}; | ||
var isCalculatedMeasure = function isCalculatedMeasure(_ref8) { | ||
} | ||
function isCalculatedMeasure(_ref8) { | ||
var definition = _ref8.definition; | ||
return (0, _lodash.get)(definition, ['measureDefinition', 'aggregation']) === undefined; | ||
}; | ||
} | ||
@@ -712,5 +717,3 @@ var rules = new _rules2.default(); | ||
var attributeFilters = (0, _lodash.map)(executableFilters, attributeFilterToWhere); | ||
var dateFilters = (0, _lodash.map)((0, _lodash.filter)(filters, function (dateFilter) { | ||
return isDateFilterExecutable(dateFilter); | ||
}), dateFilterToWhere); | ||
var dateFilters = (0, _lodash.map)((0, _lodash.filter)(filters, isDateFilterExecutable), dateFilterToWhere); | ||
@@ -725,29 +728,13 @@ var resultDate = [].concat(_toConsumableArray(dateFilters)).reduce(_lodash.assign, {}); | ||
var sortToOrderBy = function sortToOrderBy(item) { | ||
return { column: (0, _lodash.get)(item, 'element'), direction: (0, _lodash.get)(item, 'sort') }; | ||
}; | ||
function sortToOrderBy(item) { | ||
return { | ||
column: (0, _lodash.get)(item, 'element'), | ||
direction: (0, _lodash.get)(item, 'sort') | ||
}; | ||
} | ||
var getOrderBy = function getOrderBy(metrics, categories) { | ||
function getOrderBy(metrics, categories) { | ||
return (0, _lodash.map)((0, _lodash.filter)([].concat(_toConsumableArray(categories), _toConsumableArray(metrics)), function (item) { | ||
return item.sort; | ||
}), sortToOrderBy); | ||
}; | ||
function loadAttributesMap(projectId, categoryDisplayForms) { | ||
if (categoryDisplayForms.length === 0) { | ||
return Promise.resolve({}); | ||
} | ||
return (0, _metadata.getObjects)(projectId, categoryDisplayForms).then(function (displayForms) { | ||
var attributeUris = displayForms.map(function (displayForm) { | ||
return (0, _lodash.get)(displayForm, ['attributeDisplayForm', 'content', 'formOf']); | ||
}); | ||
return (0, _metadata.getObjects)(projectId, attributeUris).then(function (attributes) { | ||
return displayForms.reduce(function (attributesMap, displayForm) { | ||
return (0, _lodash.set)(attributesMap, [(0, _lodash.get)(displayForm, ['attributeDisplayForm', 'meta', 'uri'])], attributes.find(function (attribute) { | ||
return (0, _lodash.get)(attribute, ['attribute', 'meta', 'uri']) === (0, _lodash.get)(displayForm, ['attributeDisplayForm', 'content', 'formOf']); | ||
})); | ||
}, {}); | ||
}); | ||
}); | ||
} | ||
@@ -773,3 +760,3 @@ | ||
} else { | ||
attributesMapPromise = loadAttributesMap(projectId, [].concat(_toConsumableArray(categoryDfs), _toConsumableArray(attrMeasureFiltersDfs))); | ||
attributesMapPromise = (0, _attributesMapLoader.loadAttributesMap)(projectId, [].concat(_toConsumableArray(categoryDfs), _toConsumableArray(attrMeasureFiltersDfs))); | ||
} | ||
@@ -776,0 +763,0 @@ return attributesMapPromise.then(function (attributesMap) { |
{ | ||
"name": "gooddata", | ||
"version": "4.5.0-pbenes-visualization-object-2018-01-31T12-42-24-580Z", | ||
"version": "4.5.0-pbenes-visualization-object-2018-02-05T08-10-05-788Z", | ||
"author": "GoodData", | ||
@@ -64,3 +64,3 @@ "description": "GoodData JavaScript SDK", | ||
"dependencies": { | ||
"@gooddata/typings": "0.0.5-pbenes-visualization-object-2018-01-31T12-40-47-335Z", | ||
"@gooddata/typings": "0.0.5-pbenes-visualization-object-2018-02-05T08-08-31-565Z", | ||
"es6-promise": "3.0.2", | ||
@@ -67,0 +67,0 @@ "fetch-cookie": "0.4.0", |
@@ -87,3 +87,3 @@ import { get, find, omit, cloneDeep } from 'lodash'; | ||
const mdObj = get(cloneDeep(options), 'bucketItems'); | ||
const { attributesMap } = options; | ||
const attributesMap = get(options, 'attributesMap'); | ||
const hasBuckets = get(mdObj, 'buckets') !== undefined; | ||
@@ -90,0 +90,0 @@ if (hasBuckets) { |
// Copyright (C) 2007-2017, GoodData(R) Corporation. All rights reserved. | ||
import { getData, loadAttributesMap } from './execution/experimental-executions'; | ||
import { getData } from './execution/experimental-executions'; | ||
import { loadAttributesMap } from './utils/attributesMapLoader'; | ||
import executeAfm from './execution/execute-afm'; | ||
@@ -4,0 +5,0 @@ |
@@ -29,17 +29,14 @@ // Copyright (C) 2007-2014, GoodData(R) Corporation. All rights reserved. | ||
import { | ||
getObjects | ||
} from '../metadata'; | ||
import Rules from '../utils/rules'; | ||
import { sortDefinitions } from '../utils/definitions'; | ||
import { loadAttributesMap } from '../utils/attributesMapLoader'; | ||
const notEmpty = negate(isEmpty); | ||
const findHeaderForMappingFn = (mapping, header) => | ||
((mapping.element === header.id || mapping.element === header.uri) && | ||
function findHeaderForMappingFn(mapping, header) { | ||
return ((mapping.element === header.id || mapping.element === header.uri) && | ||
header.measureIndex === undefined); | ||
} | ||
const wrapMeasureIndexesFromMappings = (metricMappings, headers) => { | ||
function wrapMeasureIndexesFromMappings(metricMappings, headers) { | ||
if (metricMappings) { | ||
@@ -55,3 +52,3 @@ metricMappings.forEach((mapping) => { | ||
return headers; | ||
}; | ||
} | ||
@@ -159,3 +156,3 @@ const emptyResult = { | ||
executedReport.headers = wrapMeasureIndexesFromMappings( | ||
get(executionConfiguration, 'metricMappings'), result.executionResult.headers); | ||
get(executionConfiguration, 'metricMappings'), get(result, ['executionResult', 'headers'], [])); | ||
@@ -179,3 +176,3 @@ // Start polling on url returned in the executionResult for tabularData | ||
const getMetricTitle = (suffix, title) => { | ||
function getMetricTitle(suffix, title) { | ||
const maxLength = MAX_TITLE_LENGTH - suffix.length; | ||
@@ -189,3 +186,3 @@ if (title && title.length > maxLength) { | ||
return `${title}${suffix}`; | ||
}; | ||
} | ||
@@ -212,3 +209,2 @@ const getBaseMetricTitle = partial(getMetricTitle, ''); | ||
function isEmptyFilter(metricFilter) { | ||
@@ -227,14 +223,15 @@ if (get(metricFilter, 'positiveAttributeFilter')) { | ||
const allFiltersEmpty = item => every(map( | ||
getMeasureFilters(item), | ||
f => isEmptyFilter(f) | ||
)); | ||
function allFiltersEmpty(item) { | ||
return every( | ||
map(getMeasureFilters(item), f => isEmptyFilter(f)) | ||
); | ||
} | ||
const isDerived = (measure) => { | ||
function isDerived(measure) { | ||
const aggregation = getAggregation(measure); | ||
return (aggregation !== '' || !allFiltersEmpty(measure)); | ||
}; | ||
} | ||
function isAttrMeasureFilter(measureFilter) { | ||
return get(measureFilter, 'positiveAttributeFilter') || get(measureFilter, 'negativeAttributeFilter'); | ||
return (get(measureFilter, 'positiveAttributeFilter') || get(measureFilter, 'negativeAttributeFilter')) !== undefined; | ||
} | ||
@@ -304,3 +301,3 @@ | ||
const getFilterExpression = (attributesMap, measureFilter) => { | ||
function getFilterExpression(attributesMap, measureFilter) { | ||
if (isAttrMeasureFilter(measureFilter)) { | ||
@@ -310,5 +307,5 @@ return getAttrFilterExpression(measureFilter, attributesMap); | ||
return getDateFilterExpression(measureFilter); | ||
}; | ||
} | ||
const getGeneratedMetricExpression = (item, attributesMap) => { | ||
function getGeneratedMetricExpression(item, attributesMap) { | ||
const aggregation = getAggregation(item).toUpperCase(); | ||
@@ -320,5 +317,5 @@ const objectUri = get(getDefinition(item), 'item.uri'); | ||
}${notEmpty(where) ? ` WHERE ${where.join(' AND ')}` : ''}`; | ||
}; | ||
} | ||
const getPercentMetricExpression = (category, attributesMap, measure) => { | ||
function getPercentMetricExpression(category, attributesMap, measure) { | ||
let metricExpressionWithoutFilters = `SELECT [${get(getDefinition(measure), 'item.uri')}]`; | ||
@@ -335,11 +332,11 @@ | ||
return `SELECT (${metricExpressionWithoutFilters}${whereExpression}) / (${metricExpressionWithoutFilters} BY ALL [${attributeUri}]${whereExpression})`; | ||
}; | ||
} | ||
const getPoPExpression = (attributeUri, metricExpression) => { | ||
function getPoPExpression(attributeUri, metricExpression) { | ||
return `SELECT ${metricExpression} FOR PREVIOUS ([${attributeUri}])`; | ||
}; | ||
} | ||
const getGeneratedMetricHash = (title, format, expression) => { | ||
function getGeneratedMetricHash(title, format, expression) { | ||
return md5(`${expression}#${title}#${format}`); | ||
}; | ||
} | ||
@@ -356,3 +353,3 @@ function getMeasureType(measure) { | ||
const getGeneratedMetricIdentifier = (item, aggregation, expressionCreator, hasher, attributesMap) => { | ||
function getGeneratedMetricIdentifier(item, aggregation, expressionCreator, hasher, attributesMap) { | ||
const [, , , prjId, , id] = get(getDefinition(item), 'item.uri', '').split('/'); | ||
@@ -367,3 +364,3 @@ const identifier = `${prjId}_${id}`; | ||
return `${type}_${identifier}.generated.${hash}${prefix}_${aggregation}`; | ||
}; | ||
} | ||
@@ -417,3 +414,3 @@ function isMeasure(bucketItem) { | ||
function getMeasureSorting(measure, mdObj) { | ||
const sorting = get(mdObj, ['properties', 'sorts'], []); | ||
const sorting = get(mdObj, ['properties', 'sortItems'], []); | ||
const matchedSorting = sorting.find((sortItem) => { | ||
@@ -434,3 +431,3 @@ const measureSortItem = get(sortItem, ['measureSortItem']); | ||
function getCategorySorting(category, mdObj) { | ||
const sorting = get(mdObj, ['properties', 'sorts'], []); | ||
const sorting = get(mdObj, ['properties', 'sortItems'], []); | ||
const matchedSorting = sorting.find((sortItem) => { | ||
@@ -457,3 +454,3 @@ const attributeSortItem = get(sortItem, ['attributeSortItem']); | ||
const createDerivedMetric = (measure, mdObj, measureIndex, attributesMap) => { | ||
function createDerivedMetric(measure, mdObj, measureIndex, attributesMap) { | ||
const { format } = measure; | ||
@@ -488,5 +485,5 @@ const sort = getMeasureSorting(measure, mdObj); | ||
}; | ||
}; | ||
} | ||
const createContributionMetric = (measure, mdObj, measureIndex, attributesMap) => { | ||
function createContributionMetric(measure, mdObj, measureIndex, attributesMap) { | ||
const category = first(getCategories(getBuckets(mdObj))); | ||
@@ -512,3 +509,3 @@ const getMetricExpression = partial(getPercentMetricExpression, category, attributesMap); | ||
}; | ||
}; | ||
} | ||
@@ -521,3 +518,3 @@ function getOriginalMeasureForPoP(popMeasure, mdObj) { | ||
const createPoPMetric = (popMeasure, mdObj, measureIndex, attributesMap) => { | ||
function createPoPMetric(popMeasure, mdObj, measureIndex, attributesMap) { | ||
const title = getBaseMetricTitle(get(popMeasure, 'title')); | ||
@@ -530,7 +527,9 @@ const format = get(popMeasure, 'format'); | ||
let getMetricExpression = partial(getPoPExpression, attributeUri, `[${get(getDefinition(originalMeasure), ['item', 'uri'])}]`); | ||
const originalMeasureExpression = `[${get(getDefinition(originalMeasure), ['item', 'uri'])}]`; | ||
let getMetricExpression = partial(getPoPExpression, attributeUri, originalMeasureExpression); | ||
if (isDerived(originalMeasure)) { | ||
const generated = createDerivedMetric(originalMeasure, mdObj, measureIndex, attributesMap); | ||
getMetricExpression = partial(getPoPExpression, attributeUri, `(${get(generated, ['definition', 'metricDefinition', 'expression'])})`); | ||
const generatedMeasureExpression = `(${get(generated, ['definition', 'metricDefinition', 'expression'])})`; | ||
getMetricExpression = partial(getPoPExpression, attributeUri, generatedMeasureExpression); | ||
} | ||
@@ -556,5 +555,5 @@ | ||
}; | ||
}; | ||
} | ||
const createContributionPoPMetric = (popMeasure, mdObj, measureIndex, attributesMap) => { | ||
function createContributionPoPMetric(popMeasure, mdObj, measureIndex, attributesMap) { | ||
const attributeUri = get(popMeasure, ['definition', 'popMeasureDefinition', 'popAttribute', 'uri']); | ||
@@ -570,3 +569,4 @@ | ||
const getMetricExpression = partial(getPoPExpression, attributeUri, `(${get(generated, 'definition.metricDefinition.expression')})`); | ||
const generatedMeasureExpression = `(${get(generated, ['definition', 'metricDefinition', 'expression'])})`; | ||
const getMetricExpression = partial(getPoPExpression, attributeUri, generatedMeasureExpression); | ||
@@ -591,5 +591,5 @@ const identifier = getGeneratedMetricIdentifier(originalMeasure, 'pop', getMetricExpression, hasher, attributesMap); | ||
}; | ||
}; | ||
} | ||
const categoryToElement = (attributesMap, mdObj, context, category) => { | ||
function categoryToElement(attributesMap, mdObj, context, category) { | ||
// for catalogue columns contain attribute uri, but for execution display form uri | ||
@@ -601,5 +601,5 @@ const element = context === 'catalogue' ? getAttrUriFromMap(get(category, ['displayForm', 'uri']), attributesMap) : get(category, ['displayForm', 'uri']); | ||
}; | ||
}; | ||
} | ||
const attributeFilterToWhere = (f) => { | ||
function attributeFilterToWhere(f) { | ||
const elements = getAttrFilterElements(f); | ||
@@ -614,7 +614,9 @@ const elementsForQuery = map(elements, e => ({ id: last(e.split('=')) })); | ||
{ [dfUri]: { $in: elementsForQuery } }; | ||
}; | ||
} | ||
const toInteger = value => parseInt(value, 10); | ||
function toInteger(value) { | ||
return parseInt(value, 10); | ||
} | ||
const dateFilterToWhere = (f) => { | ||
function dateFilterToWhere(f) { | ||
const dateUri = getDataSetFromDateFilter(f); | ||
@@ -630,7 +632,11 @@ | ||
return { [dateUri]: { $between: between, $granularity: granularity } }; | ||
}; | ||
} | ||
const isPoP = ({ definition }) => get(definition, 'popMeasureDefinition') !== undefined; | ||
const isContribution = ({ definition }) => get(definition, ['measureDefinition', 'computeRatio']); | ||
const isPoPContribution = (popMeasure, mdObj) => { | ||
function isPoP({ definition }) { | ||
return get(definition, 'popMeasureDefinition') !== undefined; | ||
} | ||
function isContribution({ definition }) { | ||
return get(definition, ['measureDefinition', 'computeRatio']); | ||
} | ||
function isPoPContribution(popMeasure, mdObj) { | ||
if (isPoP(popMeasure)) { | ||
@@ -641,4 +647,6 @@ const originalMeasure = getOriginalMeasureForPoP(popMeasure, mdObj); | ||
return false; | ||
}; | ||
const isCalculatedMeasure = ({ definition }) => get(definition, ['measureDefinition', 'aggregation']) === undefined; | ||
} | ||
function isCalculatedMeasure({ definition }) { | ||
return get(definition, ['measureDefinition', 'aggregation']) === undefined; | ||
} | ||
@@ -694,3 +702,3 @@ const rules = new Rules(); | ||
const attributeFilters = map(executableFilters, attributeFilterToWhere); | ||
const dateFilters = map(filter(filters, dateFilter => isDateFilterExecutable(dateFilter)), dateFilterToWhere); | ||
const dateFilters = map(filter(filters, isDateFilterExecutable), dateFilterToWhere); | ||
@@ -708,25 +716,11 @@ const resultDate = [...dateFilters].reduce(assign, {}); | ||
const sortToOrderBy = item => ({ column: get(item, 'element'), direction: get(item, 'sort') }); | ||
function sortToOrderBy(item) { | ||
return { | ||
column: get(item, 'element'), | ||
direction: get(item, 'sort') | ||
}; | ||
} | ||
const getOrderBy = (metrics, categories) => { | ||
function getOrderBy(metrics, categories) { | ||
return map(filter([...categories, ...metrics], item => item.sort), sortToOrderBy); | ||
}; | ||
export function loadAttributesMap(projectId, categoryDisplayForms) { | ||
if (categoryDisplayForms.length === 0) { | ||
return Promise.resolve({}); | ||
} | ||
return getObjects(projectId, categoryDisplayForms).then((displayForms) => { | ||
const attributeUris = displayForms.map(displayForm => get(displayForm, ['attributeDisplayForm', 'content', 'formOf'])); | ||
return getObjects(projectId, attributeUris).then((attributes) => { | ||
return displayForms.reduce( | ||
(attributesMap, displayForm) => | ||
set(attributesMap, | ||
[get(displayForm, ['attributeDisplayForm', 'meta', 'uri'])], | ||
attributes.find(attribute => get(attribute, ['attribute', 'meta', 'uri']) === get(displayForm, ['attributeDisplayForm', 'content', 'formOf']))), | ||
{} | ||
); | ||
}); | ||
}); | ||
} | ||
@@ -733,0 +727,0 @@ |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
1153897
64
27081