mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-19 00:11:49 +03:00
211 lines
9.9 KiB
Handlebars
211 lines
9.9 KiB
Handlebars
<section class="gh-canvas" {{did-insert this.loadData}}>
|
|
|
|
<GhCanvasHeader class="gh-canvas-header stacked gh-post-analytics-header">
|
|
<div class="gh-canvas-breadcrumb">
|
|
<LinkTo @route="posts">
|
|
Posts
|
|
</LinkTo>
|
|
{{svg-jar "arrow-right-small"}}Analytics
|
|
</div>
|
|
<h2 class="gh-canvas-title gh-post-title">
|
|
{{this.post.title}}
|
|
</h2>
|
|
<div class="gh-post-analytics-meta">
|
|
<div class="gh-post-analytics-meta-text">
|
|
{{#if
|
|
(or this.post.isSent
|
|
(and this.post.isPublished this.post.email)
|
|
this.post.willEmail
|
|
)
|
|
}}
|
|
{{#if this.post.emailOnly}}
|
|
Sent
|
|
{{else}}
|
|
Published and sent
|
|
{{/if}}
|
|
{{else}}
|
|
Published on your site
|
|
{{/if}}
|
|
|
|
{{#let (moment-site-tz this.post.publishedAtUTC) as |publishedAt|}}
|
|
on
|
|
{{moment-format publishedAt "D MMM YYYY"}}
|
|
at
|
|
{{moment-format publishedAt "HH:mm"}}
|
|
{{/let}}
|
|
</div>
|
|
<LinkTo @route="editor.edit" @models={{array this.post.displayName this.post.id}} class="gh-post-list-cta edit" title="">
|
|
{{svg-jar "pen" title=""}}<span>Edit post</span>
|
|
</LinkTo>
|
|
</div>
|
|
</GhCanvasHeader>
|
|
|
|
<h4 class="gh-main-section-header small bn">
|
|
Engagement
|
|
</h4>
|
|
<div class="gh-post-analytics-box">
|
|
{{#if (or this.post.isSent (and this.post.isPublished this.post.email))}}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "emails.post_id:[" this.post.id "]") }}>
|
|
<h3>{{format-number this.post.email.emailCount}}</h3>
|
|
<p>Sent</p>
|
|
</LinkTo>
|
|
</div>
|
|
|
|
{{#if (and this.post.email.trackOpens this.settings.emailTrackOpens) }}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "opened_emails.post_id:[" this.post.id "]") }}>
|
|
<h3>{{this.post.email.openRate}}<sup>%</sup></h3>
|
|
<p><strong>{{format-number this.post.email.openedCount}}</strong> opened</p>
|
|
</LinkTo>
|
|
</div>
|
|
{{/if}}
|
|
|
|
{{#if this.settings.emailTrackClicks}}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "clicked_links.post_id:[" this.post.id "]") }}>
|
|
<h3>{{this.post.clickRate}}<sup>%</sup></h3>
|
|
<p><strong>{{format-number this.post.count.clicks}}</strong> clicked</p>
|
|
</LinkTo>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if (and (feature 'memberAttribution') (not this.post.emailOnly)) }}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "signup:[" this.post.id "]") }}>
|
|
<h3>{{format-number this.post.count.signups}}</h3>
|
|
<p>{{gh-pluralize this.post.count.signups "signup" without-count=true}}</p>
|
|
</LinkTo>
|
|
</div>
|
|
|
|
{{#if this.membersUtils.paidMembersEnabled}}
|
|
<div class="gh-post-analytics-item">
|
|
<LinkTo @route="members" @query={{hash filterParam=(concat "conversion:[" this.post.id "]") }}>
|
|
<h3>{{format-number this.post.count.paid_conversions}}</h3>
|
|
<p><span class="hide-when-small">Paid </span>{{gh-pluralize this.post.count.paid_conversions "conversion" without-count=true}}</p>
|
|
</LinkTo>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
</div>
|
|
|
|
{{#if this.isLoaded }}
|
|
{{#if this.showLinks }}
|
|
{{#if (is-empty this.links) }}
|
|
{{!-- Empty state --}}
|
|
{{else}}
|
|
<h4 class="gh-main-section-header small bn">
|
|
Newsletter clicks
|
|
</h4>
|
|
<div class="gh-post-analytics-box column">
|
|
<div class="gh-links-list">
|
|
{{#each this.links as |link|}}
|
|
<div class="gh-links-list-item">
|
|
<a href="{{link.link.to}}" target="_blank" rel="noopener noreferrer">{{link.link.title}}</a>
|
|
<p class="gh-links-list-clicks">{{link.count.clicks}}</p>
|
|
</div>
|
|
{{/each}}
|
|
{{!-- TODO: Wire this pagination up
|
|
<div class="gh-links-pagination">
|
|
<div class="gh-links-pagination-progress">
|
|
Showing 10-20 of 24
|
|
</div>
|
|
<div class="gh-links-pagination-actions">
|
|
<button type="button" class="gh-links-pagination-action gh-links-pagination-prev">
|
|
{{svg-jar "arrow-left-pagination"}}
|
|
Previous
|
|
</button>
|
|
<button type="button" class="gh-links-pagination-action gh-links-pagination-next">
|
|
Next
|
|
{{svg-jar "arrow-right-pagination"}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
--}}
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{#if this.showSources }}
|
|
{{#if (is-empty this.sources) }}
|
|
{{!-- Empty state --}}
|
|
{{else}}
|
|
<h4 class="gh-main-section-header small bn">
|
|
Source attribution
|
|
</h4>
|
|
<div class="gh-post-analytics-box column">
|
|
<div class="gh-attribution-box">
|
|
<div class="gh-dashboard-select" style="top:40px;right:24px">
|
|
<PowerSelect
|
|
@selected={{this.selectedDisplayOption}}
|
|
@options={{this.displayOptions}}
|
|
@searchEnabled={{false}}
|
|
@onChange={{this.onDisplayChange}}
|
|
@triggerComponent={{component "gh-power-select/trigger"}}
|
|
@triggerClass="gh-contentfilter-menu-trigger"
|
|
@dropdownClass="gh-contentfilter-menu-dropdown is-narrow"
|
|
@matchTriggerWidth={{false}}
|
|
@horizontalPosition="right"
|
|
|
|
as |option|
|
|
>
|
|
{{#if option.name}}{{option.name}}{{else}}<span class="red">Unknown option</span>{{/if}}
|
|
</PowerSelect>
|
|
</div>
|
|
<div class="gh-attribution-table-column">
|
|
<MemberAttribution::SourceAttributionTable
|
|
@sources={{this.sources}}
|
|
@sortColumn={{this.sortColumn}}
|
|
@setSortColumn={{this.setSortColumn}}
|
|
/>
|
|
</div>
|
|
<div class="gh-attribution-chart-column">
|
|
<div class="gh-attribution-chart-column-inner">
|
|
<MemberAttribution::SourceAttributionChart
|
|
@sources={{this.sources}}
|
|
@sortColumn={{this.sortColumn}}
|
|
@setSortColumn={{this.setSortColumn}}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
<h4 class="gh-main-section-header small bn">
|
|
Get started with analytics
|
|
</h4>
|
|
<div class="gh-post-analytics-box resources">
|
|
<a href="https://ghost.org/help/" target="_blank" class="gh-post-analytics-resource" rel="noopener noreferrer">
|
|
<div class="thumbnail" style="background-image: url(assets/img/marketing/analytics-1.jpg);"></div>
|
|
<div class="flex flex-column justify-between">
|
|
<div>
|
|
<h3>Understand analytics in Ghost</h3>
|
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
|
|
</div>
|
|
<div class="gh-btn gh-btn-link">Become an expert →</div>
|
|
</div>
|
|
</a>
|
|
<a href="https://ghost.org/resources" target="_blank" class="gh-post-analytics-resource" rel="noopener noreferrer">
|
|
<div class="thumbnail" style="background-image: url(assets/img/marketing/analytics-2.jpg);"></div>
|
|
<div class="flex flex-column justify-between">
|
|
<div>
|
|
<h3>How to best share your shiz</h3>
|
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
|
|
</div>
|
|
<div class="gh-btn gh-btn-link">Sharing is caring →</div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
{{else}}
|
|
<div class="gh-post-analytics-loading">
|
|
<div class="gh-loading-spinner-outer">
|
|
<div class="gh-loading-spinner"></div>
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
</section>
|