Ghost/ghost/admin/app/controllers/dashboard.js

70 lines
1.5 KiB
JavaScript
Raw Normal View History

import Controller from '@ember/controller';
2021-02-25 12:57:46 +03:00
import {action} from '@ember/object';
import {inject as service} from '@ember/service';
import {task} from 'ember-concurrency';
// Options 30 and 90 need an extra day to be able to distribute ticks/gridlines evenly
const DAYS_OPTIONS = [{
name: '7 Days',
value: 7
}, {
name: '30 Days',
value: 30 + 1
}, {
name: '90 Days',
value: 90 + 1
}];
export default class DashboardController extends Controller {
@service dashboardStats;
daysOptions = DAYS_OPTIONS;
2021-02-24 18:59:01 +03:00
@task
*loadSiteStatusTask() {
yield this.dashboardStats.loadSiteStatus();
return {};
}
@action
onDaysChange(selected) {
this.days = selected.value;
}
get days() {
return this.dashboardStats.chartDays;
}
set days(days) {
this.dashboardStats.chartDays = days;
}
get selectedDaysOption() {
return this.daysOptions.find(d => d.value === this.days);
}
get isLoading() {
return this.dashboardStats.siteStatus === null;
2021-02-24 18:59:01 +03:00
}
2021-02-25 12:57:46 +03:00
get totalMembers() {
return this.dashboardStats.memberCounts?.total ?? 0;
2021-02-25 12:57:46 +03:00
}
get isTotalMembersZero() {
return this.dashboardStats.memberCounts && this.totalMembers === 0;
}
get hasPaidTiers() {
return this.dashboardStats.siteStatus?.hasPaidTiers;
}
get areNewslettersEnabled() {
return this.dashboardStats.siteStatus?.newslettersEnabled;
}
get areMembersEnabled() {
return this.dashboardStats.siteStatus?.membersEnabled;
}
}