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
JSX
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 ) );