Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
import React from 'react';
|
|
|
|
|
2021-12-03 14:59:32 +03:00
|
|
|
import * as storage from '../../util/storage'
|
|
|
|
import * as url from '../../util/url'
|
|
|
|
import * as api from '../../api'
|
|
|
|
import ListReport from './../reports/list'
|
|
|
|
|
|
|
|
function EntryPages({query, site}) {
|
|
|
|
function fetchData() {
|
|
|
|
return api.get(url.apiPath(site, '/entry-pages'), query, {limit: 9})
|
|
|
|
}
|
|
|
|
|
|
|
|
function externalLinkDest(page) {
|
|
|
|
return url.externalLinkForPage(site.domain, page.name)
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<ListReport
|
|
|
|
fetchData={fetchData}
|
2021-12-07 12:17:15 +03:00
|
|
|
filter={{entry_page: 'name'}}
|
2021-12-03 14:59:32 +03:00
|
|
|
keyLabel="Entry page"
|
|
|
|
valueLabel="Unique Entrances"
|
|
|
|
valueKey="unique_entrances"
|
|
|
|
detailsLink={url.sitePath(site, '/entry-pages')}
|
|
|
|
query={query}
|
|
|
|
externalLinkDest={externalLinkDest}
|
|
|
|
color="bg-orange-50"
|
|
|
|
/>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
function ExitPages({query, site}) {
|
|
|
|
function fetchData() {
|
|
|
|
return api.get(url.apiPath(site, '/exit-pages'), query, {limit: 9})
|
|
|
|
}
|
|
|
|
|
|
|
|
function externalLinkDest(page) {
|
|
|
|
return url.externalLinkForPage(site.domain, page.name)
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<ListReport
|
|
|
|
fetchData={fetchData}
|
2021-12-07 12:17:15 +03:00
|
|
|
filter={{exit_page: 'name'}}
|
2021-12-03 14:59:32 +03:00
|
|
|
keyLabel="Exit page"
|
|
|
|
valueLabel="Unique Exits"
|
|
|
|
valueKey="unique_exits"
|
|
|
|
detailsLink={url.sitePath(site, '/exit-pages')}
|
|
|
|
query={query}
|
|
|
|
externalLinkDest={externalLinkDest}
|
|
|
|
color="bg-orange-50"
|
|
|
|
/>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
function TopPages({query, site}) {
|
|
|
|
function fetchData() {
|
|
|
|
return api.get(url.apiPath(site, '/pages'), query, {limit: 9})
|
|
|
|
}
|
|
|
|
|
|
|
|
function externalLinkDest(page) {
|
|
|
|
return url.externalLinkForPage(site.domain, page.name)
|
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<ListReport
|
|
|
|
fetchData={fetchData}
|
2021-12-07 12:17:15 +03:00
|
|
|
filter={{page: 'name'}}
|
2021-12-03 14:59:32 +03:00
|
|
|
keyLabel="Page"
|
|
|
|
detailsLink={url.sitePath(site, '/pages')}
|
|
|
|
query={query}
|
|
|
|
externalLinkDest={externalLinkDest}
|
|
|
|
color="bg-orange-50"
|
|
|
|
/>
|
|
|
|
)
|
|
|
|
}
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
|
|
|
|
const labelFor = {
|
|
|
|
'pages': 'Top Pages',
|
|
|
|
'entry-pages': 'Entry Pages',
|
|
|
|
'exit-pages': 'Exit Pages',
|
|
|
|
}
|
|
|
|
|
|
|
|
export default class Pages extends React.Component {
|
|
|
|
constructor(props) {
|
|
|
|
super(props)
|
2021-06-15 10:34:43 +03:00
|
|
|
this.tabKey = `pageTab__${ props.site.domain}`
|
2021-04-28 11:31:10 +03:00
|
|
|
const storedTab = storage.getItem(this.tabKey)
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
this.state = {
|
|
|
|
mode: storedTab || 'pages'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
setMode(mode) {
|
|
|
|
return () => {
|
2021-04-28 11:31:10 +03:00
|
|
|
storage.setItem(this.tabKey, mode)
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
this.setState({mode})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-15 10:34:43 +03:00
|
|
|
renderContent() {
|
|
|
|
switch(this.state.mode) {
|
|
|
|
case "entry-pages":
|
|
|
|
return <EntryPages site={this.props.site} query={this.props.query} timer={this.props.timer} />
|
|
|
|
case "exit-pages":
|
|
|
|
return <ExitPages site={this.props.site} query={this.props.query} timer={this.props.timer} />
|
|
|
|
case "pages":
|
|
|
|
default:
|
2021-12-03 14:59:32 +03:00
|
|
|
return <TopPages site={this.props.site} query={this.props.query} timer={this.props.timer} />
|
2021-06-15 10:34:43 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
renderPill(name, mode) {
|
|
|
|
const isActive = this.state.mode === mode
|
|
|
|
|
|
|
|
if (isActive) {
|
2021-06-15 10:34:43 +03:00
|
|
|
return (
|
|
|
|
<li
|
2021-11-29 17:21:09 +03:00
|
|
|
className="inline-block h-5 text-indigo-700 dark:text-indigo-500 font-bold active-prop-heading"
|
2021-06-15 10:34:43 +03:00
|
|
|
>
|
|
|
|
{name}
|
|
|
|
</li>
|
|
|
|
)
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
}
|
2021-06-15 10:34:43 +03:00
|
|
|
|
|
|
|
return (
|
|
|
|
<li
|
|
|
|
className="hover:text-indigo-600 cursor-pointer"
|
|
|
|
onClick={this.setMode(mode)}
|
|
|
|
>
|
|
|
|
{name}
|
|
|
|
</li>
|
|
|
|
)
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
return (
|
2021-06-15 10:34:43 +03:00
|
|
|
<div
|
|
|
|
className="stats-item flex flex-col w-full mt-6 stats-item--has-header"
|
|
|
|
>
|
|
|
|
<div
|
2021-12-02 12:53:29 +03:00
|
|
|
className="stats-item-header flex flex-col flex-grow bg-white dark:bg-gray-825 shadow-xl rounded p-4 relative"
|
2021-06-15 10:34:43 +03:00
|
|
|
>
|
|
|
|
{/* Header Container */}
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
<div className="w-full flex justify-between">
|
2021-06-15 10:34:43 +03:00
|
|
|
<h3 className="font-bold dark:text-gray-100">
|
|
|
|
{labelFor[this.state.mode] || 'Page Visits'}
|
|
|
|
</h3>
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
<ul className="flex font-medium text-xs text-gray-500 dark:text-gray-400 space-x-2">
|
|
|
|
{ this.renderPill('Top Pages', 'pages') }
|
|
|
|
{ this.renderPill('Entry Pages', 'entry-pages') }
|
|
|
|
{ this.renderPill('Exit Pages', 'exit-pages') }
|
|
|
|
</ul>
|
|
|
|
</div>
|
2021-06-15 10:34:43 +03:00
|
|
|
{/* Main Contents */}
|
Adds entry and exit pages to Top Pages module (#712)
* Initial Pass
* Adds support for page visits counting by referrer
* Includes goal selection in entry and exit computation
* Adds goal-based entry and exit page stats, formatting, code cleanup
* Changelog
* Format
* Exit rate, visit duration, updated tests
* I keep forgetting to format :/
* Tests, last time
* Fixes double counting, exit rate >100%, relevant tests
* Fixes exit pages on filter and goal states
* Adds entry and exit filters, fixes various bugs
* Fixes discussed issues
* Format
* Fixes impossible case in tests
Originally, there were only 2 pageviews for `test-site.com`,`/` on `2019-01-01`, but that doesn't make sense when there were 3 sessions that exited on the same site/date.
* Format
* Removes boolean function parameter in favor of separate function
* Adds support for queries that use `page` filter as `entry-page`
* Format
* Makes loader/title interaction in sources report consistent
2021-02-26 12:02:37 +03:00
|
|
|
{ this.renderContent() }
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|