UNPKG

@gooddata/react-components

Version:

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

90 lines 4.27 kB
"use strict"; 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