@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
119 lines • 5.12 kB
JavaScript
;
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