@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
186 lines • 8.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// (C) 2019-2020 GoodData Corporation
var get = require("lodash/get");
var some = require("lodash/some");
var every = require("lodash/every");
var isEmpty = require("lodash/isEmpty");
var reduce = require("lodash/reduce");
var BucketNames = require("../../constants/bucketNames");
var bucketHelper_1 = require("./bucketHelper");
var bucket_1 = require("../constants/bucket");
function hasOneMeasure(buckets) {
return bucketHelper_1.getItemsCount(buckets, BucketNames.MEASURES) === 1;
}
exports.hasOneMeasure = hasOneMeasure;
function hasOneMasterMeasure(buckets) {
return getMasterMeasuresCount(buckets, BucketNames.MEASURES) === 1;
}
function getMasterMeasuresCount(buckets, bucketLocalIdentifier) {
var items = bucketHelper_1.getBucketItems(buckets, bucketLocalIdentifier);
return reduce(items, function (acc, item) { return (item.masterLocalIdentifier ? acc : acc + 1); }, 0);
}
exports.getMasterMeasuresCount = getMasterMeasuresCount;
function hasOneMasterMeasureInBucket(buckets, bucketLocalIdentifier) {
return getMasterMeasuresCount(buckets, bucketLocalIdentifier) === 1;
}
exports.hasOneMasterMeasureInBucket = hasOneMasterMeasureInBucket;
function hasNoMeasures(buckets) {
return bucketHelper_1.getItemsCount(buckets, BucketNames.MEASURES) === 0;
}
exports.hasNoMeasures = hasNoMeasures;
function hasNoSecondaryMeasures(buckets) {
return bucketHelper_1.getItemsCount(buckets, BucketNames.SECONDARY_MEASURES) === 0;
}
exports.hasNoSecondaryMeasures = hasNoSecondaryMeasures;
function hasNoAttribute(buckets) {
return bucketHelper_1.getItemsCount(buckets, BucketNames.ATTRIBUTE) === 0;
}
exports.hasNoAttribute = hasNoAttribute;
function hasSomeSegmentByItems(buckets) {
return bucketHelper_1.getItemsCount(buckets, BucketNames.SEGMENT) !== 0;
}
exports.hasSomeSegmentByItems = hasSomeSegmentByItems;
function hasMoreThanOneCategory(buckets) {
return bucketHelper_1.getAllAttributeItems(buckets).length > 1;
}
exports.hasMoreThanOneCategory = hasMoreThanOneCategory;
function hasMoreThanOneMasterMeasure(buckets, bucketLocalIdentifier) {
return getMasterMeasuresCount(buckets, bucketLocalIdentifier) > 1;
}
exports.hasMoreThanOneMasterMeasure = hasMoreThanOneMasterMeasure;
function hasSomeCategories(buckets) {
return bucketHelper_1.getAttributeItemsWithoutStacks(buckets).length > 0;
}
function hasNoCategories(buckets) {
return bucketHelper_1.getAttributeItemsWithoutStacks(buckets).length === 0;
}
function allRulesMet(rules, buckets, filters) {
return rules.every(function (rule) { return rule(buckets, filters); });
}
function hasDateInCategories(buckets) {
return some(bucketHelper_1.getAllAttributeItems(buckets), bucketHelper_1.isDateBucketItem);
}
function hasGlobalDateFilterIgnoreAllTime(filters) {
if (filters) {
return some(filters.items, function (item) {
var interval = get(item, [bucket_1.FILTERS, 0, "interval"], null);
return interval && get(interval, "name") !== bucket_1.ALL_TIME;
});
}
return false;
}
exports.hasGlobalDateFilterIgnoreAllTime = hasGlobalDateFilterIgnoreAllTime;
function hasGlobalDateFilter(filters) {
if (filters) {
return some(filters.items, function (item) { return get(item, [bucket_1.FILTERS, 0, "interval"], null); });
}
return false;
}
exports.hasGlobalDateFilter = hasGlobalDateFilter;
function hasUsedDateIgnoreAllTime(buckets, filters) {
return hasDateInCategories(buckets) || hasGlobalDateFilterIgnoreAllTime(filters);
}
exports.hasUsedDateIgnoreAllTime = hasUsedDateIgnoreAllTime;
function hasUsedDate(buckets, filters) {
return hasDateInCategories(buckets) || hasGlobalDateFilter(filters);
}
exports.hasUsedDate = hasUsedDate;
function hasNoWeekGranularity(buckets) {
if (hasDateInCategories(buckets)) {
return every(bucketHelper_1.getAllAttributeItems(buckets), function (item) { return get(item, "granularity") !== bucket_1.GRANULARITY.week; });
}
return every(bucketHelper_1.getBucketItems(buckets, bucket_1.FILTERS), function (item) { return get(item, "granularity") !== bucket_1.GRANULARITY.week; });
}
function hasNoMeasureDateFilter(buckets) {
return !some(bucketHelper_1.getMeasureItems(buckets), function (item) {
var filters = get(item, bucket_1.FILTERS);
return filters && some(filters, bucketHelper_1.isDateBucketItem);
});
}
function hasNoStacks(buckets) {
return bucketHelper_1.getStackItems(buckets).length === 0;
}
exports.hasNoStacks = hasNoStacks;
function hasOneCategory(buckets) {
return bucketHelper_1.getAttributeItemsWithoutStacks(buckets).length === 1;
}
exports.hasOneCategory = hasOneCategory;
function isShowPercentageUnselected(buckets) {
return !get(bucketHelper_1.getBucketItems(buckets, BucketNames.MEASURES), [0, "showInPercent"], false);
}
function noDerivedMeasurePresent(buckets) {
var measures = bucketHelper_1.getAllItemsByType(buckets, [bucket_1.METRIC]);
return !some(measures, function (measure) { return measure.masterLocalIdentifier; });
}
exports.noDerivedMeasurePresent = noDerivedMeasurePresent;
function hasFirstDate(buckets) {
var firstAttributeItem = get(bucketHelper_1.getAllAttributeItems(buckets), 0);
return firstAttributeItem && bucketHelper_1.isDateBucketItem(firstAttributeItem);
}
function hasNotFirstDate(buckets) {
return !hasFirstDate(buckets);
}
function hasNonAllTimeFilter(filters) {
var filterBucketItems = get(filters, "items", []);
var dateFilter = filterBucketItems.find(function (filter) {
return get(filter, bucket_1.ATTRIBUTE) === "attr.datedataset";
});
var filterInterval = get(dateFilter, [bucket_1.FILTERS, 0, "interval", "interval"], []);
return !isEmpty(filterInterval);
}
exports.hasNonAllTimeFilter = hasNonAllTimeFilter;
function isShowInPercentAllowed(buckets, filters, bucketLocalIdentifier) {
var rules = [hasNoStacks, hasSomeCategories];
return (allRulesMet(rules, buckets, filters) && hasOneMasterMeasureInBucket(buckets, bucketLocalIdentifier));
}
exports.isShowInPercentAllowed = isShowInPercentAllowed;
function isComparisonOverTimeAllowed(buckets, filters, weekFiltersEnabled) {
var rules = weekFiltersEnabled ? [hasNoStacks] : [hasNoStacks, hasNoWeekGranularity];
return allRulesMet(rules, buckets, filters) && hasGlobalDateFilter(filters);
}
exports.isComparisonOverTimeAllowed = isComparisonOverTimeAllowed;
function overTimeComparisonRecommendationEnabled(referencePoint, weekFiltersEnabled) {
var baseRules = [
noDerivedMeasurePresent,
hasOneMeasure,
hasFirstDate,
hasNoStacks,
hasOneCategory,
hasNoMeasureDateFilter,
];
var rules = weekFiltersEnabled ? baseRules : baseRules.concat([hasNoWeekGranularity]);
return (allRulesMet(rules, get(referencePoint, bucket_1.BUCKETS, [])) &&
hasGlobalDateFilterIgnoreAllTime(get(referencePoint, bucket_1.FILTERS)));
}
exports.overTimeComparisonRecommendationEnabled = overTimeComparisonRecommendationEnabled;
function comparisonAndTrendingRecommendationEnabled(buckets) {
var rules = [hasOneMeasure, noDerivedMeasurePresent, hasNoCategories];
return allRulesMet(rules, buckets);
}
exports.comparisonAndTrendingRecommendationEnabled = comparisonAndTrendingRecommendationEnabled;
function percentRecommendationEnabled(buckets) {
var rules = [
isShowPercentageUnselected,
hasNotFirstDate,
hasOneMasterMeasure,
hasOneCategory,
hasNoStacks,
];
return allRulesMet(rules, buckets);
}
exports.percentRecommendationEnabled = percentRecommendationEnabled;
function previousPeriodRecommendationEnabled(buckets) {
var rules = [
hasOneMeasure,
hasOneCategory,
hasNotFirstDate,
hasNoStacks,
noDerivedMeasurePresent,
isShowPercentageUnselected,
hasNoMeasureDateFilter,
];
return allRulesMet(rules, buckets);
}
exports.previousPeriodRecommendationEnabled = previousPeriodRecommendationEnabled;
//# sourceMappingURL=bucketRules.js.map