UNPKG

@gooddata/react-components

Version:

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

119 lines 5.12 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); // (C) 2019-2021 GoodData Corporation var get = require("lodash/get"); var isEqual = require("lodash/isEqual"); var uniqBy = require("lodash/uniqBy"); var isEmpty = require("lodash/isEmpty"); var compact = require("lodash/compact"); var gooddata_js_1 = require("@gooddata/gooddata-js"); var MappingHeader = require("../../interfaces/MappingHeader"); var color_1 = require("../../components/visualizations/utils/color"); function getItemName(item) { var name = ""; if (MappingHeader.isMappingHeaderMeasureItem(item.mappingHeader)) { name = item.mappingHeader.measureHeaderItem.name; } else if (MappingHeader.isMappingHeaderAttributeItem(item.mappingHeader)) { name = item.mappingHeader.attributeHeaderItem.name; } return name || ""; } function getSearchedItems(inputItems, searchString) { if (isEmpty(searchString)) { return inputItems; } return inputItems.filter(function (item) { var name = getItemName(item); return name.toLowerCase().includes(searchString.toLowerCase()); }); } exports.getSearchedItems = getSearchedItems; function getColoredInputItems(colors) { var inputItems = []; if (colors && colors.colorAssignments) { inputItems = colors.colorAssignments.map(function (assignmentItem, index) { if (gooddata_js_1.TypeGuards.isGuidColorItem(assignmentItem.color)) { return { colorItem: assignmentItem.color, mappingHeader: assignmentItem.headerItem, color: color_1.default.getColorByGuid(colors.colorPalette, assignmentItem.color.value, index), }; } else if (gooddata_js_1.TypeGuards.isRgbColorItem(assignmentItem.color)) { return { colorItem: assignmentItem.color, mappingHeader: assignmentItem.headerItem, color: assignmentItem.color.value, }; } }); } return inputItems; } exports.getColoredInputItems = getColoredInputItems; function getMeasureMappingIdentifier(item) { return item.measureHeaderItem.localIdentifier; } function mergeColorMappingToProperties(properties, id, color) { var colorMapping = [ { id: id, color: color, }, ]; var previousColorMapping = get(properties, "controls.colorMapping", []); var mergedMapping = compact(uniqBy(colorMapping.concat(previousColorMapping), "id")); return __assign({}, properties, { controls: __assign({}, ((properties && properties.controls) || {}), { colorMapping: mergedMapping }) }); } function getProperties(properties, item, color) { if (MappingHeader.isMappingHeaderMeasureItem(item)) { var id = getMeasureMappingIdentifier(item); var newProperties = mergeColorMappingToProperties(properties, id, color); return newProperties; } else if (MappingHeader.isMappingHeaderAttributeItem(item)) { return mergeColorMappingToProperties(properties, item.attributeHeaderItem.uri, color); } else if (MappingHeader.isMappingHeaderAttribute(item)) { return mergeColorMappingToProperties(properties, item.attributeHeader.uri, color); } return {}; } exports.getProperties = getProperties; function getValidProperties(properties, colorAssignments) { if (!properties || !properties.controls || !properties.controls.colorMapping) { return properties; } var reducedColorMapping = properties.controls.colorMapping.filter(function (mappingItem) { var id = mappingItem.id; var colorValue = mappingItem.color.value; return !!colorAssignments.find(function (colorAssignment) { if (MappingHeader.isMappingHeaderMeasureItem(colorAssignment.headerItem)) { return (colorAssignment.headerItem.measureHeaderItem.localIdentifier === id && isEqual(colorAssignment.color.value, colorValue)); } if (MappingHeader.isMappingHeaderAttributeItem(colorAssignment.headerItem)) { return colorAssignment.headerItem.attributeHeaderItem.uri === id; } if (MappingHeader.isMappingHeaderAttribute(colorAssignment.headerItem)) { return colorAssignment.headerItem.attributeHeader.uri === id; } return false; }); }); return __assign({}, properties, { controls: __assign({}, properties.controls, { colorMapping: reducedColorMapping.length ? reducedColorMapping : null }) }); } exports.getValidProperties = getValidProperties; //# sourceMappingURL=colors.js.map