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.

225 lines (205 loc) • 9.31 kB
import React, { Component } from 'react'; import EntityDefault from './entities/DefaultEntity.jsx'; import moment from 'moment'; export default class DefaultEntity extends Component { render() { const { entity, openInNewTab, q, highlight, lastVisitedDate } = this.props; const entityType = entity.data.entityType; let content; switch (entityType) { case '/Infrastructure/User': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} properties={['property-user.jobTitle', 'property-person.jobTitle']} />); break; case '/Document/Spreadsheet': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} dataProperty="documentFileName" />); break; case '/Document/Presentation': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} dataProperty="documentFileName" />); break; case '/Presentation': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} dataProperty="documentFileName" />); break; case '/Person': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} properties={['property-user.jobTitle', 'property-person.jobTitle']} />); break; case '/Organization': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} properties={['property-organization.website','property-organization.industry']} />); break; case '/Document': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} dataProperty="documentFileName" />); break; case '/Document/Document': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} dataProperty="documentFileName" />); break; case '/Calendar/Event': let eventExtraInfo; let extraStartInfo; let extraEndInfo; if (entity.data && entity.data.properties) { const start = entity.data.properties['property-event.start']; const ends = entity.data.properties['property-event.end']; if (start) { let startDate = moment(start).fromNow(); extraStartInfo = ( <span><span style={{color:'#999'}}>Start</span> {startDate},&nbsp;</span> ); } if (ends) { if (start !== ends) { const duration = moment.duration(moment(start).diff(moment(ends))).humanize(); extraEndInfo = ( <span><span style={{color:'#999'}}>Duration</span> {duration}</span> ); } } if (start) { eventExtraInfo = (<span>{extraStartInfo}{extraEndInfo}</span>); } } content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} extraInfoContent={eventExtraInfo} lastVisitedDate={lastVisitedDate} htmlDescription={true} />); break; case '/Mail': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} htmlDescription={true} />); break; case '/Task': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} properties={['property-task.state']} />); break; case '/Issue': content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} properties={['property-zendesk.ticket.status']} />); break; case '/Discussion': let extraInfoContentForDiscussion; let extraInfoContentForDiscsussionStartTime; let extraInfoContentForDiscussionEndTime; if (entity.data && entity.data.properties) { const startTimeForDiscussion = entity.data.properties['property-slack.discussion.StartTime']; const endTimeForDiscussion = entity.data.properties['property-slack.discussion.EndTime']; if (startTimeForDiscussion) { let startTimeInDateForDiscsussion = moment(startTimeForDiscussion).fromNow(); extraInfoContentForDiscsussionStartTime = ( <span><span style={{color:'#999'}}>Start</span> {startTimeInDateForDiscsussion},&nbsp;</span> ); } if (endTimeForDiscussion) { if (startTimeForDiscussion !== endTimeForDiscussion) { const durationForDiscussion = moment.duration(moment(startTimeForDiscussion).diff(moment(endTimeForDiscussion))).humanize(); extraInfoContentForDiscussionEndTime = ( <span><span style={{color:'#999'}}>Duration</span> {durationForDiscussion}</span> ); } } if (startTimeForDiscussion) { extraInfoContentForDiscussion = ( <span>{extraInfoContentForDiscsussionStartTime}{extraInfoContentForDiscussionEndTime}</span>); } } content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} extraInfoContent={extraInfoContentForDiscussion} />); break; case '/Announcement': let extraInfoContentForAnnouncement; if (entity.data && entity.data.properties) { let channelName = entity.data.properties['property-slack.message.channelName']; if (channelName) { extraInfoContentForAnnouncement = (<span>in channel #{channelName}</span>); } let twitterLink = entity.data.properties['property-twitter.status.detail.url']; if (twitterLink) { extraInfoContentForAnnouncement = ( <a style={{opacity: '0.6'}} target="_blank" href={twitterLink}>{twitterLink}</a>); } } content = (<EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} entity={entity} lastVisitedDate={lastVisitedDate} extraInfoContent={extraInfoContentForAnnouncement} />); break; default: content = ( <EntityDefault q={q} openInNewTab={openInNewTab} highlight={highlight} lastVisitedDate={lastVisitedDate} entity={entity}/>); break; } return content; } }