@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
90 lines • 4.27 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
// (C) 2007-2019 GoodData Corporation
var React = require("react");
var omit = require("lodash/omit");
var set = require("lodash/set");
var get = require("lodash/get");
var cloneDeep = require("lodash/cloneDeep");
var isArray = require("lodash/isArray");
var ComboChart_1 = require("./afm/ComboChart");
var conversion_1 = require("../helpers/conversion");
var resultSpec_1 = require("../helpers/resultSpec");
var bucketNames_1 = require("../constants/bucketNames");
var common_1 = require("../helpers/optionalStacking/common");
/**
* [ComboChart](https://sdk.gooddata.com/gooddata-ui/docs/combo_chart_component.html)
* is a component with bucket props primaryMeasures, secondaryMeasures, viewBy, filters
*/
function ComboChart(props) {
var comboProps = sanitizeComboProps(props);
var buckets = getBuckets(comboProps);
var config = getConfiguration(buckets, comboProps);
var newProps = omit(comboProps, [
"primaryMeasures",
"secondaryMeasures",
"columnMeasures",
"lineMeasures",
"viewBy",
"filters",
"sortBy",
]);
return (React.createElement(ComboChart_1.ComboChart, __assign({}, newProps, { config: config, projectId: comboProps.projectId, afm: conversion_1.convertBucketsToAFM(buckets, comboProps.filters), resultSpec: resultSpec_1.getResultSpec(buckets, comboProps.sortBy) })));
}
exports.ComboChart = ComboChart;
function deprecateOldProps(props) {
var clonedProps = cloneDeep(props);
var columnMeasures = clonedProps.columnMeasures, lineMeasures = clonedProps.lineMeasures;
var isOldConfig = Boolean(columnMeasures || lineMeasures);
if (isOldConfig) {
set(clonedProps, "primaryMeasures", columnMeasures);
set(clonedProps, "secondaryMeasures", lineMeasures);
set(clonedProps, "config.dualAxis", false);
// tslint:disable-next-line:no-console
console.warn("Props columnMeasures and lineMeasures are deprecated. Please migrate to props primaryMeasures and secondaryMeasures.");
}
return clonedProps;
}
function sanitizeComboProps(props) {
var newProps = deprecateOldProps(props);
var _a = newProps.primaryMeasures, primaryMeasures = _a === void 0 ? [] : _a, _b = newProps.secondaryMeasures, secondaryMeasures = _b === void 0 ? [] : _b;
var isDualAxis = get(props, "config.dualAxis", true);
var disableComputeRatio = !isDualAxis && primaryMeasures.length + secondaryMeasures.length > 1;
return __assign({}, newProps, { primaryMeasures: common_1.sanitizeComputeRatioOnMeasures(primaryMeasures, disableComputeRatio), secondaryMeasures: common_1.sanitizeComputeRatioOnMeasures(secondaryMeasures, disableComputeRatio) });
}
function getBuckets(props) {
var primaryMeasures = props.primaryMeasures, secondaryMeasures = props.secondaryMeasures, viewBy = props.viewBy;
var categories = isArray(viewBy) ? [viewBy[0]] : [viewBy];
return [
{
localIdentifier: bucketNames_1.MEASURES,
items: primaryMeasures,
},
{
localIdentifier: bucketNames_1.SECONDARY_MEASURES,
items: secondaryMeasures,
},
{
localIdentifier: bucketNames_1.VIEW,
items: categories,
},
];
}
function getConfiguration(buckets, props) {
var primaryMeasures = props.primaryMeasures, secondaryMeasures = props.secondaryMeasures, filters = props.filters, config = props.config;
var isDualAxis = get(props, "config.dualAxis", true);
var measuresOnPrimaryAxis = isDualAxis ? primaryMeasures : primaryMeasures.concat(secondaryMeasures);
return common_1.sanitizeConfig(measuresOnPrimaryAxis, __assign({}, config, { mdObject: conversion_1.convertBucketsToMdObject(buckets, filters, "local:combo") }));
}
//# sourceMappingURL=ComboChart.js.map