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.
168 lines (149 loc) • 6.93 kB
JSX
import React, { Component } from "react";
import Widget from "../../../core/components/generics/widget.jsx";
import Overlay from "../../../core/components/generics/overlay.jsx";
import { register } from "../../../core/registry";
import { connect } from "react-redux";
import iso from "../../../iso";
import NoEntities from "../../../core/components/entityRelated/NoEntities.jsx";
import { findFromKey } from "../../../core/helpers/properties.jsx";
import FakeSocialMenu from "./fakeSocial.jsx";
import RemovableComponent from "../../../core/components/base/RemovableComponent.jsx";
const collectionHelper = iso.collection;
class EntitySocialOverview extends RemovableComponent {
getMenu() {
return this.getRemovableActions();
}
render() {
let minHeight = 'auto';
let hasTwitterInfo = true;
let hasFacebookInfo = false;
let hasLinkedInfo = false;
let fakeHtml;
let content;
const { isFetchingEntity, entity, isAdmin } = this.props;
if( !isFetchingEntity ) {
var twitterFriendsCount = findFromKey( entity.properties, 'twitter-friendscount' );
var twitterFollowerCount = findFromKey( entity.properties, 'twitter-followerscount' );
var twitterNbTweetCount = findFromKey( entity.properties, 'twitter-statusescount' );
var twitterNbFavoritesCount = findFromKey( entity.properties, 'twitter-favoritescount' );
var twitterIsVerifed = findFromKey( entity.properties, 'twitter-userverified' );
if( (!twitterFriendsCount || !twitterFriendsCount.value)
&& ( !twitterFollowerCount || !twitterFollowerCount.value)
&& ( !twitterNbTweetCount || !twitterNbTweetCount.value)
&& ( !twitterNbFavoritesCount || !twitterNbFavoritesCount.value)
&& ( !twitterIsVerifed || !twitterIsVerifed.value) ) {
hasTwitterInfo = false;
content = (<FakeSocialMenu></FakeSocialMenu>);
} else {
let twitterFollwersHtml;
let twitterFollowingHtml;
let twitterNbTweetHtml;
let twitterNbFavoriteHtml;
let twitterIsVerifiedHtml;
if( twitterFollowerCount && twitterFollowerCount.value ) {
/*
<span className="cluedIn_social_overview_number_prev">
<span className="cluedIn_social_overview_number_prev_number">387</span>
<span className="cluedIn_social_overview_number_prev_period">PREV. WEEK</span>
</span>
<span className="cluedIn_social_overview_number_indicator">
<i className="fa fa-arrow-circle-up"></i>
</span>
*/
twitterFollwersHtml = (
<li className="cluedIn_social_overview_twitter_followers">
<span className="cluedIn_social_overview_title">Followers</span>
<span className="cluedIn_social_overview_number">
{twitterFollowerCount.value}
</span>
</li>)
}
if( twitterFriendsCount && twitterFollowerCount.value ) {
twitterFollowingHtml = (
<li className="cluedIn_social_overview_twitter_following">
<span className="cluedIn_social_overview_title">Followings</span>
<span className="cluedIn_social_overview_number">
{twitterFriendsCount.value}
</span>
</li>);
}
if( twitterNbTweetCount && twitterNbTweetCount.value ) {
twitterNbTweetHtml = (
<li className="cluedIn_social_overview_twitter_tweets">
<span className="cluedIn_social_overview_title">Tweets</span>
<span className="cluedIn_social_overview_number">
{twitterNbTweetCount.value}
</span>
</li>
);
}
if( twitterNbFavoritesCount && twitterNbFavoritesCount.value ) {
twitterNbFavoriteHtml = (
<li className="cluedIn_social_overview_twitter_tweets">
<span className="cluedIn_social_overview_title">Favorites</span>
<span className="cluedIn_social_overview_number">
{twitterNbFavoritesCount.value}
</span>
</li>
);
}
if( twitterIsVerifed && twitterIsVerifed.value ) {
twitterIsVerifiedHtml = (
<li className="cluedIn_social_overview_twitter_tweets">
<span className="cluedIn_social_overview_title">Is Verified account?</span>
<span className="cluedIn_social_overview_number">
{twitterIsVerifed.value}
</span>
</li>
);
}
content = (<ul>
<li className="cluedIn_social_overview_header twitter">
<i className="fa fa-twitter"></i>Twitter
</li>
{twitterFollwersHtml}
{twitterFollowingHtml}
{twitterNbTweetHtml}
{twitterNbFavoriteHtml}
{twitterIsVerifiedHtml}
</ul>)
}
if( !hasTwitterInfo && !hasFacebookInfo && !hasLinkedInfo ) {
fakeHtml = (<Overlay><NoEntities isAdmin={isAdmin}></NoEntities></Overlay>);
}
} else {
minHeight = '200px';
}
return (
<Widget loading={isFetchingEntity} title="Social Overview" menu={this.getMenu()} minHeight={minHeight}>
{fakeHtml}
<div className="cluedIn_entity_list">
<ul className="cluedIn_social_overview">
{content}
</ul>
</div>
</Widget>
);
}
}
function select( state ) {
return {
entity: state.entity.selectedEntity,
isFetchingEntity: state.entity.isFetchingEntity
};
}
register( 'EntitySocialOverview', connect( select )( EntitySocialOverview ) );
/*
* , {
displayName: 'Social Overview',
description: 'All the latest tools added in CluedIn.',
relatedProviders: [
'twitter',
'linkedin',
'googleplus',
'facebook'
],
tags: [],
requireEntity: true
}
* */