@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
80 lines • 3.73 kB
JavaScript
;
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