UNPKG

@gooddata/react-components

Version:

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

186 lines • 8.14 kB
"use strict"; 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