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.

59 lines (49 loc) 1.95 kB
import React, { Component } from "react"; import { register } from "../../../core/registry"; import { shouldFetchSuggestedSearch } from "../../../core/action/entity"; import { connect } from "react-redux"; import DefaultEntity from "../../../core/components/defaultEntity.jsx"; import Widget from "../../../core/components/generics/widget.jsx"; class EntitySuggestedSearch extends Component { constructor( props ) { super( props ); this.state = { timestamp: Date.now() }; } componentWillMount() { const { search } = this.props; this.props.dispatch( shouldFetchSuggestedSearch( search, this.state.timestamp ) ); //generate index } render() { const { suggestedSearches, search } = this.props; let contentHtml; var entities = suggestedSearches[ this.state.timestamp ]; let isLoading = false; let minHeight = 'auto'; if( entities && entities.length > 0 ) { contentHtml = <div className="cluedIn_entity_list cluedIn_is_widget"> {entities.map( ( entity, i )=> { return <DefaultEntity entity={entity} key={i}></DefaultEntity> } )} </div> } else if( entities && entities.length === 0 ) { contentHtml = (<div className="cluedIn_entity_list cluedIn_is_widget"> Currently No Result. </div>) } else { isLoading = true; minHeight = '200px'; } let noScroll = (!entities || entities.length === 0); return (<Widget loading={isLoading} noScroll={noScroll} minHeight={minHeight} title={search.DisplayName}> {contentHtml} </Widget>); } } function select( state ) { return { suggestedSearches: state.entity.currentSuggestedSearches }; } register( 'EntitySuggestedSearch', connect( select )( EntitySuggestedSearch ) );