import React, { Component } from 'react'
import Widget from '../../../core/components/generics/widget.jsx'
import Overlay from '../../../core/components/generics/overlay.jsx'
import registry from '../../../core/registry'
import config from '../../../core/config'
import { connect } from 'react-redux'
import { shouldFetchGenericLatest } from '../../../core/action/entity'
import iso from '../../../iso'
import ProviderIcons from '../../../core/components/entityRelated/providerIcons.jsx'
import EntityIcon from '../../../core/components/entityRelated/EntityIcon.jsx'
import EntitySubject from '../../../core/components/entityRelated/EntitySubject.jsx'
import EntityLink from '../../../core/components/entityRelated/EntityLink.jsx'
import EntityProfileImageLink from '../../../core/components/entityRelated/EntityProfileImageLink.jsx'
import SocialMenu from '../../../core/components/entityRelated/SocialMenu.jsx'
import PersonDetailed from './../../../core/components/entities/personDetailed.jsx'

const collectionHelper = iso.collection;
const currentType      = 'Person';

class EntityPersonList extends Component {

    componentWillMount() {
        const { entityId } = this.props;

        this.props.dispatch( shouldFetchGenericLatest( currentType, entityId ) );
    }

    render() {
        let minHeight = 'auto';

        const { isFetching, entities } = this.props;

        var content = 'loading...';

        if ( entities ) {
            content = (<div className="cluedIn_entity_person_list">
                { entities.map( ( person )=> {
                    return (
                        <PersonDetailed key={person.id} entity={person}></PersonDetailed>
                    );
                } ) }
            </div>);
        }

        return (
            <Widget loading={isFetching} title="Employees linked to your Team" minHeight={minHeight}>
                {content}
            </Widget>
        );

    }
}

function select( state ) {
    return {
        entities: state.entity.genericLatestEntities[ currentType ],
        isFetching: state.entity.isFetchingGenericLatest[ currentType ]
    };
}

registry.register( 'EntityPersonList', connect( select )( EntityPersonList ) );