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 feature;
|
||||||
@service session;
|
@service session;
|
||||||
@service membersStats;
|
@service membersStats;
|
||||||
|
@service store;
|
||||||
|
|
||||||
@tracked
|
@tracked
|
||||||
events = {
|
events = {
|
||||||
|
@ -27,9 +28,21 @@ export default class DashboardController extends Controller {
|
||||||
loading: false
|
loading: false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@tracked
|
||||||
|
topMembers = {
|
||||||
|
data: null,
|
||||||
|
error: null,
|
||||||
|
loading: false
|
||||||
|
};
|
||||||
|
|
||||||
|
get showTopMembers() {
|
||||||
|
return this.feature.get('emailAnalytics') && this.settings.get('emailTrackOpens');
|
||||||
|
}
|
||||||
|
|
||||||
constructor(...args) {
|
constructor(...args) {
|
||||||
super(...args);
|
super(...args);
|
||||||
this.loadEvents();
|
this.loadEvents();
|
||||||
|
this.loadTopMembers();
|
||||||
this.loadCharts();
|
this.loadCharts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,4 +133,20 @@ export default class DashboardController extends Controller {
|
||||||
this.events.loading = false;
|
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>
|
||||||
|
|
||||||
<section class="gh-dashboard-area members-activity">
|
<section class="gh-dashboard-area members-activity">
|
||||||
|
{{#if this.showTopMembers}}
|
||||||
<div class="gh-dashboard-box grey activity-feed">
|
<div class="gh-dashboard-box grey activity-feed">
|
||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<h4 class="gh-dashboard-header">Top members</h4>
|
<h4 class="gh-dashboard-header">Top members</h4>
|
||||||
<h4 class="gh-dashboard-header secondary">Open rate</h4>
|
<h4 class="gh-dashboard-header secondary">Open rate</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="gh-dashboard-list nodata">
|
<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">
|
<ul class="gh-dashboard-top-members">
|
||||||
|
{{#each this.topMembers.data as |member|}}
|
||||||
<li class="gh-dashboard-top-member">
|
<li class="gh-dashboard-top-member">
|
||||||
<div class="member-details">
|
<div class="member-details">
|
||||||
<div class="avatar">KL</div>
|
<GhMemberAvatar @member={{member}} @containerClass="w9 h9 mr3 flex-shrink-0" />
|
||||||
<span class="name">Kadin Levin</span>
|
<span class="name">{{member.name}}</span>
|
||||||
</div>
|
</div>
|
||||||
<span class="open-rate">97%</span>
|
<span class="open-rate">{{member.emailOpenRate}}%</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>
|
|
||||||
</li>
|
</li>
|
||||||
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
<div class="gh-dashboard-top-members-footer">
|
<div class="gh-dashboard-top-members-footer">
|
||||||
<LinkTo @route="members">See all members {{svg-jar "arrow-right"}}</LinkTo>
|
<LinkTo @route="members">See all members {{svg-jar "arrow-right"}}</LinkTo>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
<div class="gh-dashboard-box grey activity-feed">
|
<div class="gh-dashboard-box grey activity-feed">
|
||||||
<h4 class="gh-dashboard-header">Activity feed</h4>
|
<h4 class="gh-dashboard-header">Activity feed</h4>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|
Loading…
Add table
Reference in a new issue