import React from 'react' import PropTypes from 'prop-types' import SearchingResultsTopPanel from './SearchingResultsTopPanel' import Article from './Article' import DeleteArticlesPopup from './DeleteArticlesPopup' import EmailArticlesPopup from './EmailArticlesPopup' import CommentArticlePopup from './CommentArticlePopup' import ClipArticlesPopup from './ClipArticles/ClipArticlesPopup' import Pager from '../../../../common/Pager/Pager' import EmailConfirmPopup from './EmailConfirmPopup' import NoRecords from '../../../../common/NoRecords' import Loading from '../../../../common/Loading' import { Interpolate, translate } from 'react-i18next' export class SearchingResults extends React.Component { static propTypes = { searchState: PropTypes.object.isRequired, articlesState: PropTypes.object.isRequired, isRefinePanelVisible: PropTypes.bool.isRequired, toggleRefinePanel: PropTypes.func.isRequired, onPager: PropTypes.func.isRequired, actions: PropTypes.object.isRequired, t: PropTypes.func.isRequired }; forEachArticle = (cb) => { const { searchState, articlesState } = this.props return searchState.searchResults .filter((article) => !articlesState.excludedArticles.includes(article.id)) .map(cb) }; render () { const { searchState, articlesState, actions, t } = this.props const isSearchResultsLoaded = searchState.searchResults.length > 0 const numPages = Math.ceil( searchState.searchResultTotalCount / searchState.searchResultLimit ) const noRecords = searchState.searchResultsPending || !isSearchResultsLoaded || !searchState.isSynced if (searchState.searchResultsPending) { return (
) } if (!searchState.isSynced) { return (
) } if (searchState.isSynced && !isSearchResultsLoaded) { return (
) } return (
{isSearchResultsLoaded &&

}
{isSearchResultsLoaded && this.forEachArticle((article, i) => { return (
) })} {isSearchResultsLoaded && ( )}
{articlesState.deletePopup.visible && ( )} {articlesState.emailPopup.visible && ( {articlesState.emailConfirmPopup.visible && ( )} )} {articlesState.commentPopup.visible && ( )} {articlesState.clipPopup.visible && ( )}
) } } export default translate(['tabsContent'], { wait: true })(SearchingResults)