cluedin-widget
Version:
This project contains all the pages needed for browsing entities and searching them. The aim is to replace the CluedIn.Webapp project with this one when all the pages ( including the Admin page ) will be ported to REACT.
150 lines (141 loc) • 7.36 kB
JavaScript
var stringHelper = require('../../string');
var validationHelper = require('../../validation');
var collectionHelper = require('../../collection');
var createPropertiesFromPromoted = function createPropertiesFromPromotedFn(properties, promotedProperties, tag) {
var result = [];
promotedProperties.forEach(function (promotedProperty) {
if (typeof promotedProperty === 'string') {
var value = properties[promotedProperty];
if (value) {
var name = stringHelper.createPropertyDisplayName(promotedProperty);
if (validationHelper.isUrl(value) || validationHelper.isEmail(value) || (value && promotedProperty.toLowerCase() === 'mobilenumber')) {
result.push({
name: promotedProperty,
isUrl: true,
value: value,
original: value,
key: stringHelper.formatDisplayName(name).toLowerCase(),
displayName: stringHelper.formatDisplayName(name),
tag: (promotedProperty.important) ? 'important' : tag
});
} else {
result.push({
isHtml: false,
name: promotedProperty,
value: value,
original: value,
key: stringHelper.formatDisplayName(name).toLowerCase(),
displayName: stringHelper.formatDisplayName(name),
tag: (promotedProperty.important) ? 'important' : tag
});
}
}
} else {
if (promotedProperty.main) {
var valueFromMain = properties[promotedProperty.main];
if (valueFromMain) {
var nameMain = stringHelper.createPropertyDisplayName(promotedProperty.main);
if (validationHelper.isUrl(valueFromMain) || validationHelper.isEmail(valueFromMain) || (valueFromMain && promotedProperty.main.toLowerCase() === 'mobilenumber')) {
result.push({
name: promotedProperty.main,
value: valueFromMain,
isUrl: true,
original: valueFromMain,
displayName: stringHelper.formatDisplayName(nameMain),
category: promotedProperty.category,
key: promotedProperty.key,
tag: (promotedProperty.important) ? 'important' : tag
});
} else {
result.push({
isHtml: false,
name: promotedProperty.main,
value: valueFromMain,
displayName: stringHelper.formatDisplayName(nameMain),
original: valueFromMain,
category: promotedProperty.category,
key: promotedProperty.key,
tag: (promotedProperty.important) ? 'important' : tag
});
}
} else {
var valuesFromParentProperties = createPropertiesFromPromotedFn(properties, promotedProperty.parentProperties);
if (valuesFromParentProperties && valuesFromParentProperties.length > 0) {
result = result.concat(valuesFromParentProperties);
} else {
if (promotedProperty.either) {
var valueFromEither = createPropertiesFromPromotedFn(properties, promotedProperty.either);
if (valueFromEither && valueFromEither.length > 0) {
result.push(valueFromEither[0]);
}
}
}
}
} else if (promotedProperty.isColor) {
var colorValue = properties[promotedProperty.value];
result.push({
name: promotedProperty.display,
value: colorValue,
displayName: promotedProperty.display,
original: colorValue,
isColor: true,
category: promotedProperty.category,
key: promotedProperty.key,
tag: (promotedProperty.important) ? 'important' : tag
});
} else if (promotedProperty.contentType) {
var contentTypeValue = properties[promotedProperty.value];
result.push({
isContentType: true,
name: promotedProperty.display,
value: contentTypeValue,
displayName: promotedProperty.display,
original: contentTypeValue,
category: promotedProperty.category,
key: promotedProperty.key,
tag: (promotedProperty.important) ? 'important' : tag
});
} else if (promotedProperty.display) {
var valueFromDisplay = properties[promotedProperty.value];
if (promotedProperty.format) {
valueFromDisplay = promotedProperty.format(valueFromDisplay);
}
if (validationHelper.isUrl(valueFromDisplay) || validationHelper.isEmail(valueFromDisplay) || (valueFromDisplay && promotedProperty.display.toLowerCase() === 'mobilenumber')) {
result.push({
name: promotedProperty.display,
value: valueFromDisplay,
isUrl: true,
displayName: promotedProperty.display,
original: properties[promotedProperty.value],
category: promotedProperty.category,
key: promotedProperty.key,
tag: (promotedProperty.important) ? 'important' : tag
});
} else {
result.push({
isHtml: false,
name: promotedProperty.display,
value: valueFromDisplay,
displayName: promotedProperty.display,
original: properties[promotedProperty.value],
category: promotedProperty.category,
key: promotedProperty.key,
tag: (promotedProperty.important) ? 'important' : tag
});
}
}
else if (promotedProperty.either) {
var valueFromEitherDirect = createPropertiesFromPromotedFn(properties, promotedProperty.either, tag);
if (valueFromEitherDirect && valueFromEitherDirect.length > 0) {
result.push(collectionHelper.find(valueFromEitherDirect, function (prop) {
return prop.value;
}));
}
}
}
});
return result;
};
module.exports = {
createPropertiesFromPromoted
};