Added basic date-handling to stats page
ref https://linear.app/tryghost/issue/ANAL-21/filtering-the-dashboard - Added the very basic date filter back from the dashboard - Without this, it's very hard to see that the basic concept is working - This method can be reused for creating any filter
This commit is contained in:
parent
03c388db91
commit
adbcf703f8
@ -1 +1 @@
|
|||||||
<div {{react-render this.ReactComponent}}></div>
|
<div {{react-render this.ReactComponent props=(hash chartDays=@chartDays)}}></div>
|
||||||
|
@ -4,7 +4,7 @@ import moment from 'moment-timezone';
|
|||||||
import {BarList, useQuery} from '@tinybirdco/charts';
|
import {BarList, useQuery} from '@tinybirdco/charts';
|
||||||
import {inject} from 'ghost-admin/decorators/inject';
|
import {inject} from 'ghost-admin/decorators/inject';
|
||||||
|
|
||||||
export default class TopPages extends Component {
|
export default class TopLocations extends Component {
|
||||||
@inject config;
|
@inject config;
|
||||||
|
|
||||||
ReactComponent = (props) => {
|
ReactComponent = (props) => {
|
||||||
|
@ -1,4 +1,34 @@
|
|||||||
import Controller from '@ember/controller';
|
import Controller from '@ember/controller';
|
||||||
|
import {action} from '@ember/object';
|
||||||
|
import {tracked} from '@glimmer/tracking';
|
||||||
|
|
||||||
|
// 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 StatsController extends Controller {
|
export default class StatsController extends Controller {
|
||||||
|
daysOptions = DAYS_OPTIONS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {number|'all'}
|
||||||
|
* Amount of days to load for member count and MRR related charts
|
||||||
|
*/
|
||||||
|
@tracked chartDays = 30 + 1;
|
||||||
|
|
||||||
|
@action
|
||||||
|
onDaysChange(selected) {
|
||||||
|
this.chartDays = selected.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
get selectedDaysOption() {
|
||||||
|
return this.daysOptions.find(d => d.value === this.chartDays);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,24 @@
|
|||||||
<section class="gh-canvas gh-canvas-sticky">
|
<section class="gh-canvas gh-canvas-sticky">
|
||||||
<GhCanvasHeader class="gh-canvas-header sticky break tablet post-header">
|
<GhCanvasHeader class="gh-canvas-header sticky break tablet post-header">
|
||||||
<GhCustomViewTitle @title="Stats" />
|
<GhCustomViewTitle @title="Stats" />
|
||||||
|
<div class="gh-dashboard-select">
|
||||||
|
<PowerSelect
|
||||||
|
@selected={{this.selectedDaysOption}}
|
||||||
|
@options={{this.daysOptions}}
|
||||||
|
@searchEnabled={{false}}
|
||||||
|
@onChange={{this.onDaysChange}}
|
||||||
|
@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>
|
||||||
</GhCanvasHeader>
|
</GhCanvasHeader>
|
||||||
|
|
||||||
<Stats::Charts::TopLocations />
|
<Stats::Charts::TopLocations @chartDays={{this.chartDays}} />
|
||||||
|
|
||||||
</section>
|
</section>
|
Loading…
Reference in New Issue
Block a user