@talend/react-faceted-search
Version:
77 lines (76 loc) • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.generateUniqueBadgeId = exports.generateBadge = exports.createFacetedBadgeDefinition = exports.addOperatorsProps = void 0;
var _utils = require("@talend/utils");
var _lodash = require("lodash");
const getAttribute = badgeDefinitionRaw => (0, _lodash.get)(badgeDefinitionRaw, 'attribute');
const createBadgeId = attribute => `${attribute}-${(0, _utils.randomUUID)()}`;
const getOperators = badgeDefinitionRaw => (0, _lodash.get)(badgeDefinitionRaw, 'operators');
const getType = badgeDefinitionRaw => (0, _lodash.get)(badgeDefinitionRaw, 'type');
const getTypeProperties = badgeDefinitionRaw => (0, _lodash.get)(badgeDefinitionRaw, 'typeProperties');
const getLabel = badgeDefinitionRaw => (0, _lodash.get)(badgeDefinitionRaw, 'label');
const facetedBadgeDefinitionStruct = {
properties: {
attribute: name,
initialOpenedOperator: false,
initialOpenedValue: false,
label: '',
operator: {},
operators: [],
type: ''
},
metadata: {
badgeId: '',
badgesPerFacet: 1,
entitiesPerBadge: 'N'
}
};
const fromRaw = badgeDefinitionRaw => {
const newStruct = Object.create(facetedBadgeDefinitionStruct);
const name = getAttribute(badgeDefinitionRaw);
const typeProperties = getTypeProperties(badgeDefinitionRaw);
newStruct.properties = {
attribute: name,
initialOperatorOpened: true,
initialValueOpened: false,
label: getLabel(badgeDefinitionRaw),
operator: {},
operators: [],
type: getType(badgeDefinitionRaw),
...typeProperties
};
newStruct.metadata = {
...badgeDefinitionRaw.metadata,
operators: getOperators(badgeDefinitionRaw)
};
return newStruct;
};
const addOperatorsProps = operators => badge => ({
...badge,
properties: {
...badge.properties,
operator: Array.isArray(operators) && operators[0],
operators: Array.isArray(operators) && operators
}
});
exports.addOperatorsProps = addOperatorsProps;
const generateUniqueBadgeId = badge => ({
...badge,
metadata: {
...badge.metadata,
badgeId: createBadgeId(badge.properties.attribute)
}
});
exports.generateUniqueBadgeId = generateUniqueBadgeId;
const createFacetedBadgeDefinition = badgeDefinitionRaw => {
if (badgeDefinitionRaw) {
return fromRaw(badgeDefinitionRaw);
}
return Object.create(facetedBadgeDefinitionStruct);
};
exports.createFacetedBadgeDefinition = createFacetedBadgeDefinition;
const generateBadge = operators => (0, _lodash.flow)([generateUniqueBadgeId, addOperatorsProps(operators)]);
exports.generateBadge = generateBadge;
//# sourceMappingURL=badgeDefinition.type.js.map