import React from 'react'; import { Link } from 'react-router-dom' import FlipMove from 'react-flip-move'; import FadeIn from '../fade-in' import Bar from './bar' import MoreLink from './more-link' import numberFormatter from '../number-formatter' import { eventName } from '../query' import * as api from '../api' export default class Pages extends React.Component { constructor(props) { super(props) this.state = {loading: true} } componentDidMount() { this.fetchPages() if (this.props.timer) this.props.timer.onTick(this.fetchPages.bind(this)) } componentDidUpdate(prevProps) { if (this.props.query !== prevProps.query) { this.setState({loading: true, pages: null}) this.fetchPages() } } fetchPages() { const {filters} = this.props.query if (filters.source || filters.referrer) { api.get(`/api/stats/${encodeURIComponent(this.props.site.domain)}/entry-pages`, this.props.query) .then((res) => this.setState({loading: false, pages: res})) } else { api.get(`/api/stats/${encodeURIComponent(this.props.site.domain)}/pages`, this.props.query) .then((res) => this.setState({loading: false, pages: res})) } } renderPage(page) { const query = new URLSearchParams(window.location.search) query.set('page', page.name) return (
) } label() { const filters = this.props.query.filters if (this.props.query.period === 'realtime') { return 'Current visitors' } else if (filters['source'] || filters['referrer']) { return 'Entrances' } else { return 'Visitors' } } renderList() { if (this.state.pages.length > 0) { return (