import { connect } from 'react-redux'; import { Loader, NoContent, Message, Icon, Button, LoadMoreButton } from 'UI'; import { applyFilter, addAttribute, addEvent } from 'Duck/filters'; import SessionItem from 'Shared/SessionItem'; import SessionListHeader from './SessionListHeader'; import { KEYS } from 'Types/filter/customFilter'; const ALL = 'all'; const PER_PAGE = 10; const AUTOREFRESH_INTERVAL = 3 * 60 * 1000; var timeoutId; @connect(state => ({ shouldAutorefresh: state.getIn([ 'filters', 'appliedFilter', 'events' ]).size === 0, savedFilters: state.getIn([ 'filters', 'list' ]), loading: state.getIn([ 'sessions', 'loading' ]), activeTab: state.getIn([ 'sessions', 'activeTab' ]), allList: state.getIn([ 'sessions', 'list' ]), total: state.getIn([ 'sessions', 'total' ]), filters: state.getIn([ 'filters', 'appliedFilter', 'filters' ]), }), { applyFilter, addAttribute, addEvent }) export default class SessionList extends React.PureComponent { state = { showPages: 1, } constructor(props) { super(props); this.timeout(); } componentDidUpdate(prevProps) { if (prevProps.loading && !this.props.loading) { this.setState({ showPages: 1 }); } } addPage = () => this.setState({ showPages: this.state.showPages + 1 }) onUserClick = (userId, userAnonymousId) => { if (userId) { this.props.addAttribute({ label: 'User Id', key: KEYS.USERID, type: KEYS.USERID, operator: 'is', value: userId }) } else { this.props.addAttribute({ label: 'Anonymous ID', key: 'USERANONYMOUSID', type: "USERANONYMOUSID", operator: 'is', value: userAnonymousId }) } this.props.applyFilter() } timeout = () => { timeoutId = setTimeout(function () { if (this.props.shouldAutorefresh) { this.props.applyFilter(); } this.timeout(); }.bind(this), AUTOREFRESH_INTERVAL); } getNoContentMessage = activeTab => { let str = "No recordings found"; if (activeTab.type !== 'all') { str += ' with ' + activeTab.name; return str; } return str + '!'; } componentWillUnmount() { clearTimeout(timeoutId) } renderActiveTabContent(list) { const { loading, filters, onMenuItemClick, allList, activeTab } = this.props; const hasUserFilter = filters.map(i => i.key).includes(KEYS.USERID); const { showPages } = this.state; const displayedCount = Math.min(showPages * PER_PAGE, list.size); return (
Please try changing your search parameters.
{allList.size > 0 && (
However, we found other sessions based on your search parameters.
)} } > { list.take(displayedCount).map(session => ( ))} Haven't found the session in the above list?
Try being a bit more specific by setting a specific time frame or simply use different filters } />
); } render() { const { activeTab, allList, total } = this.props; var filteredList; if (activeTab.type !== ALL && activeTab.type !== 'bookmark' && activeTab.type !== 'live') { // Watchdog sessions filteredList = allList.filter(session => activeTab.fits(session)) } else { filteredList = allList } if (activeTab.type === 'bookmark') { filteredList = filteredList.filter(item => item.favorite) } const _total = activeTab.type === 'all' ? total : filteredList.size return (
{ this.renderActiveTabContent(filteredList) }
); } }