@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
132 lines • 5.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// (C) 2019-2020 GoodData Corporation
var get = require("lodash/get");
var BucketNames = require("../../constants/bucketNames");
var common_1 = require("../../components/visualizations/utils/common");
var mdObjBucketHelper_1 = require("../../helpers/mdObjBucketHelper");
var MdObjectHelper_1 = require("../../helpers/MdObjectHelper");
function isAttribute(item) {
var attribute = item;
return attribute.visualizationAttribute !== undefined;
}
function findBucketByLocalIdentifier(buckets, bucketName) {
return (buckets || []).find(function (bucket) { return get(bucket, "localIdentifier") === bucketName; });
}
function hasAttribute(mdObject) {
return mdObject.buckets.some(function (bucket) {
return bucket.items.some(isAttribute);
});
}
exports.hasAttribute = hasAttribute;
function haveManyViewItems(mdObject) {
var viewBucket = mdObject && findBucketByLocalIdentifier(mdObject.buckets, BucketNames.VIEW);
return viewBucket && get(viewBucket, "items").length > 1;
}
exports.haveManyViewItems = haveManyViewItems;
function hasOneViewItem(mdObject) {
var viewBucket = mdObject && findBucketByLocalIdentifier(mdObject.buckets, BucketNames.VIEW);
return viewBucket && get(viewBucket, "items").length === 1;
}
exports.hasOneViewItem = hasOneViewItem;
function hasTertiaryMeasures(mdObject) {
return mdObject.buckets
.filter(function (bucket) { return [BucketNames.TERTIARY_MEASURES].indexOf(get(bucket, "localIdentifier")) >= 0; })
.some(function (bucket) { return get(bucket, "items").length > 0; });
}
exports.hasTertiaryMeasures = hasTertiaryMeasures;
function isStacked(mdObject) {
return (mdObject &&
mdObject.buckets
.filter(function (bucket) {
return [BucketNames.STACK, BucketNames.SEGMENT].indexOf(get(bucket, "localIdentifier")) >= 0;
})
.some(function (bucket) { return get(bucket, "items").length > 0; }));
}
exports.isStacked = isStacked;
function hasMeasures(mdObject) {
return mdObject && MdObjectHelper_1.getMeasuresFromMdObject(mdObject).length > 0;
}
exports.hasMeasures = hasMeasures;
function hasColorMeasure(mdObject) {
var colorBucket = mdObject && findBucketByLocalIdentifier(mdObject.buckets, BucketNames.COLOR);
return colorBucket && get(colorBucket, "items").length > 0;
}
exports.hasColorMeasure = hasColorMeasure;
function hasSizeMeasure(mdObject) {
var sizeBucket = mdObject && findBucketByLocalIdentifier(mdObject.buckets, BucketNames.SIZE);
return sizeBucket && get(sizeBucket, "items").length > 0;
}
exports.hasSizeMeasure = hasSizeMeasure;
function hasLocationAttribute(mdObject) {
if (!mdObject) {
return false;
}
return mdObjBucketHelper_1.getBucketItems(mdObject.buckets, BucketNames.LOCATION).length > 0;
}
exports.hasLocationAttribute = hasLocationAttribute;
function hasSegmentAttribute(mdObject) {
if (!mdObject) {
return false;
}
return mdObjBucketHelper_1.getBucketItems(mdObject.buckets, BucketNames.SEGMENT).length > 0;
}
exports.hasSegmentAttribute = hasSegmentAttribute;
// don't support sort by total value for dual axis
function canSortStackTotalValue(mdObject, supportedControls, enableSortingByTotalGroup) {
if (enableSortingByTotalGroup === void 0) { enableSortingByTotalGroup = false; }
var isSingleAxisAndStacked = get(supportedControls, "stackMeasures", false) &&
MdObjectHelper_1.areAllMeasuresOnSingleAxis(mdObject, get(supportedControls, "secondary_yaxis", false));
if (enableSortingByTotalGroup) {
return isSingleAxisAndStacked;
}
return isSingleAxisAndStacked && hasOneViewItem(mdObject);
}
exports.canSortStackTotalValue = canSortStackTotalValue;
function countItemsInMdObject(mdObject) {
if (!mdObject) {
return {};
}
var buckets = mdObject.buckets;
var viewByItemCount = mdObjBucketHelper_1.getBucketItems(buckets, BucketNames.VIEW).length;
var measureItemCount = mdObjBucketHelper_1.getBucketItems(buckets, BucketNames.MEASURES).length;
var secondaryMeasureItemCount = mdObjBucketHelper_1.getBucketItems(buckets, BucketNames.SECONDARY_MEASURES).length;
return {
viewByItemCount: viewByItemCount,
measureItemCount: measureItemCount,
secondaryMeasureItemCount: secondaryMeasureItemCount,
};
}
exports.countItemsInMdObject = countItemsInMdObject;
function countItemsOnAxes(type, controls, mdObject) {
var isBarFamilyChartType = common_1.isBarChart(type) || common_1.isBulletChart(type);
var _a = countItemsInMdObject(mdObject), viewByItemCount = _a.viewByItemCount, measureItemCount = _a.measureItemCount, secondaryMeasureItemCount = _a.secondaryMeasureItemCount;
var totalMeasureItemCount = measureItemCount + secondaryMeasureItemCount;
var secondaryMeasureCountInConfig = (isBarFamilyChartType
? get(controls, "secondary_xaxis.measures", [])
: get(controls, "secondary_yaxis.measures", [])).length;
if (isBarFamilyChartType) {
return {
yaxis: viewByItemCount,
xaxis: totalMeasureItemCount - secondaryMeasureCountInConfig,
secondary_xaxis: secondaryMeasureCountInConfig,
};
}
if (common_1.isScatterPlot(type) || common_1.isBubbleChart(type)) {
return {
xaxis: measureItemCount,
yaxis: secondaryMeasureItemCount,
};
}
return {
xaxis: viewByItemCount,
yaxis: totalMeasureItemCount - secondaryMeasureCountInConfig,
secondary_yaxis: secondaryMeasureCountInConfig,
};
}
exports.countItemsOnAxes = countItemsOnAxes;
function isDisplayFormUri(displayForm) {
return displayForm.hasOwnProperty("uri");
}
exports.isDisplayFormUri = isDisplayFormUri;
//# sourceMappingURL=mdObjectHelper.js.map