mirror of
https://github.com/flarum/core.git
synced 2025-08-03 23:17:43 +02:00
[statistics] fix: add missing last period to custom date ranges (#3661)
* fix: last node in previous data matches first node of current data * fix: add previous period support for custom periods * test: update to show previous period for custom range
This commit is contained in:
@@ -348,7 +348,7 @@ export default class StatisticsWidget extends DashboardWidget {
|
|||||||
}
|
}
|
||||||
: this.periods![this.selectedPeriod!];
|
: this.periods![this.selectedPeriod!];
|
||||||
const periodLength = period.end - period.start;
|
const periodLength = period.end - period.start;
|
||||||
const labels = [];
|
const labels: string[] = [];
|
||||||
const thisPeriod = [];
|
const thisPeriod = [];
|
||||||
const lastPeriod = [];
|
const lastPeriod = [];
|
||||||
|
|
||||||
@@ -373,7 +373,7 @@ export default class StatisticsWidget extends DashboardWidget {
|
|||||||
labels.push(label);
|
labels.push(label);
|
||||||
|
|
||||||
thisPeriod.push(this.getPeriodCount(this.selectedEntity, { start: i, end: i + period.step }));
|
thisPeriod.push(this.getPeriodCount(this.selectedEntity, { start: i, end: i + period.step }));
|
||||||
lastPeriod.push(this.getPeriodCount(this.selectedEntity, { start: i - periodLength, end: i - periodLength + period.step }));
|
lastPeriod.push(this.getPeriodCount(this.selectedEntity, { start: i - periodLength, end: i - periodLength }));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (thisPeriod.length === 0) {
|
if (thisPeriod.length === 0) {
|
||||||
|
@@ -126,8 +126,15 @@ class ShowStatisticsData implements RequestHandlerInterface
|
|||||||
|
|
||||||
private function getTimedCounts(Builder $query, string $column, ?DateTime $startDate = null, ?DateTime $endDate = null)
|
private function getTimedCounts(Builder $query, string $column, ?DateTime $startDate = null, ?DateTime $endDate = null)
|
||||||
{
|
{
|
||||||
|
$diff = $startDate && $endDate ? $startDate->diff($endDate) : null;
|
||||||
|
|
||||||
if (! isset($startDate)) {
|
if (! isset($startDate)) {
|
||||||
$startDate = new DateTime('-365 days');
|
// need -12 months and period before that
|
||||||
|
$startDate = new DateTime('-2 years');
|
||||||
|
} else {
|
||||||
|
// If the start date is custom, we need to include an equal amount beforehand
|
||||||
|
// to show the data for the previous period.
|
||||||
|
$startDate = (new Carbon($startDate))->subtract($diff)->toDateTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! isset($endDate)) {
|
if (! isset($endDate)) {
|
||||||
|
@@ -73,12 +73,15 @@ class CanRequestCustomTimedStatisticsTest extends TestCase
|
|||||||
'users' => [
|
'users' => [
|
||||||
$timeStart->copy()->getTimestamp() => 1,
|
$timeStart->copy()->getTimestamp() => 1,
|
||||||
$timeStart->copy()->subDays(1)->getTimestamp() => 1,
|
$timeStart->copy()->subDays(1)->getTimestamp() => 1,
|
||||||
|
$timeStart->copy()->subDays(2)->getTimestamp() => 1,
|
||||||
], 'discussions' => [
|
], 'discussions' => [
|
||||||
$timeStart->copy()->getTimestamp() => 1,
|
$timeStart->copy()->getTimestamp() => 1,
|
||||||
$timeStart->copy()->subDays(1)->getTimestamp() => 2,
|
$timeStart->copy()->subDays(1)->getTimestamp() => 2,
|
||||||
|
$timeStart->copy()->subDays(2)->getTimestamp() => 1,
|
||||||
], 'posts' => [
|
], 'posts' => [
|
||||||
$timeStart->copy()->getTimestamp() => 2,
|
$timeStart->copy()->getTimestamp() => 2,
|
||||||
$timeStart->copy()->subDays(1)->getTimestamp() => 2,
|
$timeStart->copy()->subDays(1)->getTimestamp() => 2,
|
||||||
|
$timeStart->copy()->subDays(2)->getTimestamp() => 1,
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user