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.

124 lines (105 loc) 3.21 kB
import React, { Component } from 'react'; import { connect } from 'react-redux'; import { fetchWidgetConfigurationIfNeeded } from '../action/core'; import { shouldFetchEntityIfNeeded } from '../action/entity'; import { shouldFetchCurrentUser } from '../action/user'; import { fetchAllFollow } from '../action/follow'; import { markAsVisited } from '../action/boarding'; import CluedInLayout from './Layouts/CluedInLayout.jsx'; import EntityMainBar from './entityRelated/EntityMainBar.jsx'; import { openWMSManager } from '../action/wms'; class CluedInApp extends Component { static contextTypes = { router: React.PropTypes.object, }; componentWillMount() { const { entityId, type, } = this.props; this.dispatchAllActionRequiredByPage(entityId, type); } dispatchAllActionRequiredByPage(entityId, type) { const {org} = this.props; this.props.dispatch(fetchWidgetConfigurationIfNeeded(type, org)); this.props.dispatch(shouldFetchCurrentUser()); if (entityId) { this.props.dispatch(shouldFetchEntityIfNeeded(entityId)); this.props.dispatch(fetchAllFollow()); this.props.dispatch(markAsVisited(org)); } } componentWillUpdate(nextProps) { if ( nextProps.entityId !== this.props.entityId || nextProps.paramToListen !== this.props.paramToListen ) { this.dispatchAllActionRequiredByPage(nextProps.entityId, nextProps.type); } } goBack() { this.context.router.goBack(); } toggleLayout() { this.props.dispatch(openWMSManager()); } render() { const { widgetConfiguration, token, entityId, entity, isFetchingEntity, type, currentUser, standAlone, } = this.props; let isAdmin = false; if (currentUser && currentUser.client) { isAdmin = currentUser.client.IsAdmin; } if (!token) { return (<div className="cluedIn_container"> You are not connected to CluedIn, to see your widget, <a href="https://app." target="__blank">sign in to CluedIn</a> </div>); } if (!widgetConfiguration) { return <div></div>; } let entityMainBar; if (!standAlone) { entityMainBar = ( <EntityMainBar onBack={this.goBack.bind(this)} widgetConfiguration={widgetConfiguration} onConfigureLayoutClick={this.toggleLayout.bind(this)} entity={entity} />); } return ( <div className="cluedIn_container"> {entityMainBar} <CluedInLayout widgetConfiguration={widgetConfiguration} type={type} entityId={entityId} entity={entity} isAdmin={isAdmin} standAlone={standAlone} isFetchingEntity={isFetchingEntity} /> </div>); } } var select = (state) => { return { widgetConfiguration: state.core.widgetConfiguration, token: state.core.token, entity: state.entity.selectedEntity, isFetchingEntity: state.entity.isFetchingEntity, org: state.core.org, isFetchingCurrentUser: state.user.isFetchingCurrentUser, currentUser: state.user.currentUser, }; }; export default connect(select)(CluedInApp);