UNPKG

@gooddata/react-components

Version:

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

87 lines (68 loc) 3.79 kB
// (C) 2019 GoodData Corporation import cloneDeep = require("lodash/cloneDeep"); import get = require("lodash/get"); import set = require("lodash/set"); import forEach = require("lodash/forEach"); import { IntlShape } from "react-intl"; import * as BucketNames from "../../../constants/bucketNames"; import { IExtendedReferencePoint, IBucket, IUiConfig, IBucketUiConfig } from "../../interfaces/Visualization"; import { UICONFIG } from "../../constants/uiConfig"; import { BUCKETS } from "../../constants/bucket"; import { hasMoreThanOneMasterMeasure, hasNoMeasures, hasOneCategory } from "../bucketRules"; import { setBucketTitles } from "../bucketHelper"; import { getTranslation } from "../translations"; import * as treemapMeasuresIcon from "../../assets/treemap/bucket-title-measures.svg"; import * as treemapViewIcon from "../../assets/treemap/bucket-title-view.svg"; import * as treemapSegmentIcon from "../../assets/treemap/bucket-title-segment.svg"; function setTreemapBucketWarningMessages(referencePoint: IExtendedReferencePoint, intl?: IntlShape) { const buckets: IBucket[] = get(referencePoint, BUCKETS); const updatedUiConfig: IUiConfig = cloneDeep(get(referencePoint, UICONFIG)); forEach(buckets, (bucket: IBucket) => { const localIdentifier: string = get(bucket, "localIdentifier", ""); const bucketUiConfig: IBucketUiConfig = get(updatedUiConfig, [BUCKETS, localIdentifier]); // skip disabled buckets if (!get(bucketUiConfig, "enabled", false)) { return; } if (!get(bucketUiConfig, "canAddItems")) { let warningMessageId; if (bucket.localIdentifier === BucketNames.MEASURES) { warningMessageId = "dashboard.bucket.metric_view_by_warning"; } if (bucket.localIdentifier === BucketNames.VIEW) { warningMessageId = "dashboard.bucket.category_category_by_warning"; } if (bucket.localIdentifier === BucketNames.SEGMENT) { warningMessageId = "dashboard.bucket.category_segment_by_warning"; } if (warningMessageId) { const warningMessage = getTranslation(warningMessageId, intl); set(updatedUiConfig, [BUCKETS, localIdentifier, "warningMessage"], warningMessage); } } }); return updatedUiConfig; } export function setTreemapUiConfig( referencePoint: IExtendedReferencePoint, intl: IntlShape, visualizationType: string, ): IExtendedReferencePoint { const referencePointConfigured = cloneDeep(referencePoint); const buckets: IBucket[] = get(referencePointConfigured, BUCKETS, []); const measuresCanAddItems = !hasOneCategory(buckets) || hasNoMeasures(buckets); const viewCanAddItems = !hasMoreThanOneMasterMeasure(buckets, BucketNames.MEASURES); set(referencePointConfigured, UICONFIG, setBucketTitles(referencePoint, visualizationType, intl)); set( referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.MEASURES, "canAddItems"], measuresCanAddItems, ); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.VIEW, "canAddItems"], viewCanAddItems); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.SEGMENT, "canAddItems"], true); set(referencePointConfigured, UICONFIG, setTreemapBucketWarningMessages(referencePointConfigured, intl)); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.MEASURES, "icon"], treemapMeasuresIcon); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.VIEW, "icon"], treemapViewIcon); set(referencePointConfigured, [UICONFIG, BUCKETS, BucketNames.SEGMENT, "icon"], treemapSegmentIcon); return referencePointConfigured; }