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.
91 lines (78 loc) • 2.86 kB
JSX
import React, { Component } from 'react'
import { register } from "../../../core/registry";
import Widget from '../../../core/components/generics/widget.jsx'
import ImagePreview from '../../../core/components/generics/ImagePreview.jsx'
import FullScreenPreviewDialog from '../../../core/components/dialogs/FullScreenPreview.jsx';
import { connect } from 'react-redux'
const frameStyle = {
width: '100%',
height: '400px',
border: 'none'
};
class EntityFramePreview extends Component {
constructor( props ) {
super( props );
this.state = {
closeDialog: false
};
}
showFullScreen() {
this.setState( {
closeDialog: true
} );
}
closeDialogHandler() {
this.setState( {
closeDialog: false
} );
}
render() {
const { isFetchingEntity, entity } = this.props;
let content;
if( !isFetchingEntity ) {
if( entity.embedUrl ) {
content = (<div>
<FullScreenPreviewDialog onClose={this.closeDialogHandler.bind(this)}
open={this.state.closeDialog}
name={entity.name}
url={entity.embedUrl}></FullScreenPreviewDialog>
<div style={{height: '400px'}}>
<iframe style={frameStyle} src={entity.embedUrl}></iframe>
</div>
</div>);
} else {
if( entity.hasPreview ) {
content = (<ImagePreview previewUrl={entity.previewUrl} alt={entity.name}></ImagePreview>);
} else if( entity.hasLogo ) {
content = (<ImagePreview previewUrl={entity.logoUrl} alt={entity.name}></ImagePreview>);
} else {
content = (
<p>No Preview currently available, you may need to sign-in in the related source to see the
preview
(ex:
Office365, Sharepoint, Dropbox....).</p>);
}
}
} else {
content = (<div></div>);
}
let menu = [ {
type: 'Action',
icon: 'fa fa-arrows-alt',
title: 'Show Full Screen',
onClick: this.showFullScreen.bind( this )
} ];
return (
<Widget menu={menu} loading={isFetchingEntity} title="Document Preview">
{content}
</Widget>
);
}
}
function select( state ) {
return {
entity: state.entity.selectedEntity,
isFetchingEntity: state.entity.isFetchingEntity
};
}
register( 'EntityFramePreview', connect( select )( EntityFramePreview ) );