cluedin-widget
Version:
This is the project for creating and managing widgets in CluedIn.
70 lines (52 loc) • 2.95 kB
JavaScript
import { extractImportant, extractSocial, extract, getPropertyToKeep } from './property';
import { addTokenToImage } from '../image';
import moment from 'moment';
var toVM = function( item, small, token, fetchAllProperties ) {
var mainItem;
mainItem = small ? item.entity : ( item.Entity ? item.Entity.entity : item.entity.entity);
mainItem.data = mainItem.processedData;
mainItem.name = mainItem.data.displayName || mainItem.data.name;
mainItem.id = mainItem[ 'attribute-id' ];
delete mainItem[ 'attribute-id' ];
delete mainItem[ 'attribute-organization' ];
delete mainItem[ 'attribute-culture' ];
delete mainItem.processedData;
var hasDescription = ( mainItem.data.description ) ? true : false;
var differentNameAndDescription = !(mainItem.data.description === mainItem.name);
mainItem.showDescription = (differentNameAndDescription && hasDescription);
mainItem.providers = mainItem.data[ 'provider-origins' ];
if ( mainItem.showDescription && mainItem.data.description.length > 200 ) {
mainItem.descriptionFormatted = ( mainItem.data.description.substring( 0, 200 ) + '...');
}
if ( mainItem.data.previewImage ) {
mainItem.hasLogo = true;
mainItem.logoUrl = addTokenToImage( mainItem.data.previewImage[ 'attribute-uri' ], token );
}
if ( mainItem.data.previewImage ) {
if ( parseInt( mainItem.data.previewImage[ 'attribute-height' ], 10 ) >= 300 || parseInt( mainItem.data.previewImage[ 'attribute-width' ], 10 ) >= 300 ) {
mainItem.previewUrl = addTokenToImage( mainItem.data.previewImage[ 'attribute-uri' ], token );
mainItem.hasPreview = true;
}
if ( !mainItem.data.previewImage[ 'attribute-height' ] && !mainItem.data.previewImage[ 'attribute-width' ] ) {
//we take our chance
mainItem.previewUrl = addTokenToImage( mainItem.data.previewImage[ 'attribute-uri' ], token );
mainItem.hasPreview = true;
}
}
if ( mainItem.name && mainItem.name.length > 100 ) {
mainItem.name = ( mainItem.name.substring( 0, 100 ) + '...' );
}
mainItem.FollowersCount = mainItem.NumberOfFollowers = mainItem.NumberOfFollowers || 0;
mainItem.path = void 0;
mainItem.SuggestedSearches = item.SuggestedSearches;
mainItem.social = extractSocial( mainItem.data.properties );
mainItem.properties = fetchAllProperties ? extract( mainItem ) : extractImportant( mainItem );
mainItem.notManagerProperties = fetchAllProperties ? getPropertyToKeep( mainItem ) : [];
mainItem.data.createdDateFormatted = moment( mainItem.data.createdDate ).fromNow();
mainItem.data.modifiedDateFormatted = moment( mainItem.data.modifiedDate ).fromNow();
delete mainItem.data.properties;
return mainItem;
};
module.exports = {
toVM: toVM
};