UNPKG

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
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 };