UNPKG

@gooddata/react-components

Version:

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

80 lines 3.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _a; // (C) 2007-2019 GoodData Corporation var set = require("lodash/set"); var get = require("lodash/get"); var cloneDeep = require("lodash/cloneDeep"); var bucketNames_1 = require("../../../../constants/bucketNames"); var visualizationTypes_1 = require("../../../../constants/visualizationTypes"); var common_1 = require("../../utils/common"); var getOptionalStackingConfiguration_1 = require("../highcharts/getOptionalStackingConfiguration"); exports.CHART_ORDER = (_a = {}, _a[visualizationTypes_1.VisualizationTypes.AREA] = 1, _a[visualizationTypes_1.VisualizationTypes.COLUMN] = 2, _a[visualizationTypes_1.VisualizationTypes.LINE] = 3, _a); exports.COMBO_SUPPORTED_CHARTS = [ visualizationTypes_1.VisualizationTypes.COLUMN, visualizationTypes_1.VisualizationTypes.LINE, visualizationTypes_1.VisualizationTypes.AREA, ]; var DEFAULT_COMBO_CHART_TYPES = [visualizationTypes_1.VisualizationTypes.COLUMN, visualizationTypes_1.VisualizationTypes.LINE]; function getMeasureIndices(bucketItems, measureGroupIdentifiers) { return bucketItems.reduce(function (result, item) { var localIdentifier = get(item, ["measure", "localIdentifier"], ""); if (localIdentifier) { var metricIndex = measureGroupIdentifiers.indexOf(localIdentifier); result.push(metricIndex); } return result; }, []); } function getComboChartSeries(config, measureGroup, series) { var updatedSeries = cloneDeep(series); var measureBuckets = {}; var types = [config.primaryChartType, config.secondaryChartType]; var buckets = get(config, ["mdObject", "buckets"], []); var measureGroupIdentifiers = measureGroup.items.map(function (item) { return get(item, ["measureHeaderItem", "localIdentifier"], ""); }); buckets.forEach(function (bucket) { var bucketItems = bucket.items || []; measureBuckets[bucket.localIdentifier] = getMeasureIndices(bucketItems, measureGroupIdentifiers); }); [bucketNames_1.MEASURES, bucketNames_1.SECONDARY_MEASURES].forEach(function (name, index) { (measureBuckets[name] || []).forEach(function (measureIndex) { var chartType = exports.CHART_ORDER[types[index]] ? types[index] : DEFAULT_COMBO_CHART_TYPES[index]; set(updatedSeries, [measureIndex, "type"], chartType); set(updatedSeries, [measureIndex, "zIndex"], exports.CHART_ORDER[chartType]); }); }); return updatedSeries; } exports.getComboChartSeries = getComboChartSeries; function isAllSeriesOnLeftAxis(series) { if (series === void 0) { series = []; } return series.every(function (item) { return item.yAxis === 0; }); } function isSomeSeriesWithLineChart(series) { if (series === void 0) { series = []; } return series.some(function (item) { return common_1.isLineChart(item.type); }); } function canComboChartBeStackedInPercent(series) { var isAllSeriesOnLeft = isAllSeriesOnLeftAxis(series); var hasLineChartType = isSomeSeriesWithLineChart(series); return !(isAllSeriesOnLeft && hasLineChartType); } exports.canComboChartBeStackedInPercent = canComboChartBeStackedInPercent; function getComboChartStackingConfig(config, series, defaultStacking) { var stackMeasures = config.stackMeasures; var canStackInPercent = canComboChartBeStackedInPercent(series); if (canStackInPercent) { return defaultStacking; } return stackMeasures ? getOptionalStackingConfiguration_1.NORMAL_STACK : null; } exports.getComboChartStackingConfig = getComboChartStackingConfig; //# sourceMappingURL=comboChartOptions.js.map