mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-24 23:48:13 -05:00
Added top members by email open rate to dashboard (#1844)
refs https://github.com/TryGhost/Team/issues/469
This commit is contained in:
parent
b045a28ec3
commit
68da78111c
2 changed files with 62 additions and 25 deletions
|
@ -7,6 +7,7 @@ export default class DashboardController extends Controller {
|
|||
@service feature;
|
||||
@service session;
|
||||
@service membersStats;
|
||||
@service store;
|
||||
|
||||
@tracked
|
||||
events = {
|
||||
|
@ -27,9 +28,21 @@ export default class DashboardController extends Controller {
|
|||
loading: false
|
||||
};
|
||||
|
||||
@tracked
|
||||
topMembers = {
|
||||
data: null,
|
||||
error: null,
|
||||
loading: false
|
||||
};
|
||||
|
||||
get showTopMembers() {
|
||||
return this.feature.get('emailAnalytics') && this.settings.get('emailTrackOpens');
|
||||
}
|
||||
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
this.loadEvents();
|
||||
this.loadTopMembers();
|
||||
this.loadCharts();
|
||||
}
|
||||
|
||||
|
@ -120,4 +133,20 @@ export default class DashboardController extends Controller {
|
|||
this.events.loading = false;
|
||||
});
|
||||
}
|
||||
|
||||
loadTopMembers() {
|
||||
this.topMembers.loading = true;
|
||||
let query = {
|
||||
filter: 'email_open_rate:-null',
|
||||
order: 'email_open_rate desc',
|
||||
limit: 10
|
||||
};
|
||||
this.store.query('member', query).then((result) => {
|
||||
this.topMembers.data = result;
|
||||
this.topMembers.loading = false;
|
||||
}, (error) => {
|
||||
this.topMembers.error = error;
|
||||
this.topMembers.loading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -115,33 +115,41 @@
|
|||
</section>
|
||||
|
||||
<section class="gh-dashboard-area members-activity">
|
||||
{{#if this.showTopMembers}}
|
||||
<div class="gh-dashboard-box grey activity-feed">
|
||||
<div class="flex items-center justify-between">
|
||||
<h4 class="gh-dashboard-header">Top members</h4>
|
||||
<h4 class="gh-dashboard-header secondary">Open rate</h4>
|
||||
</div>
|
||||
<div class="gh-dashboard-list nodata">
|
||||
{{#if this.events.loading}}
|
||||
Loading...
|
||||
{{else}}
|
||||
{{#if this.events.error}}
|
||||
<p class="error">
|
||||
There was an error loading events
|
||||
<code>{{this.events.error.message}}</code>
|
||||
</p>
|
||||
{{else}}
|
||||
<ul class="gh-dashboard-top-members">
|
||||
{{#each this.topMembers.data as |member|}}
|
||||
<li class="gh-dashboard-top-member">
|
||||
<div class="member-details">
|
||||
<div class="avatar">KL</div>
|
||||
<span class="name">Kadin Levin</span>
|
||||
<GhMemberAvatar @member={{member}} @containerClass="w9 h9 mr3 flex-shrink-0" />
|
||||
<span class="name">{{member.name}}</span>
|
||||
</div>
|
||||
<span class="open-rate">97%</span>
|
||||
</li>
|
||||
<li class="gh-dashboard-top-member">
|
||||
<div class="member-details">
|
||||
<div class="avatar">TS</div>
|
||||
<span class="name">Terry Stanton</span>
|
||||
</div>
|
||||
<span class="open-rate">91%</span>
|
||||
<span class="open-rate">{{member.emailOpenRate}}%</span>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<div class="gh-dashboard-top-members-footer">
|
||||
<LinkTo @route="members">See all members {{svg-jar "arrow-right"}}</LinkTo>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="gh-dashboard-box grey activity-feed">
|
||||
<h4 class="gh-dashboard-header">Activity feed</h4>
|
||||
<div class="content">
|
||||
|
|
Loading…
Add table
Reference in a new issue