mirror of
https://github.com/flarum/core.git
synced 2025-07-30 21:20:24 +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!];
|
||||
const periodLength = period.end - period.start;
|
||||
const labels = [];
|
||||
const labels: string[] = [];
|
||||
const thisPeriod = [];
|
||||
const lastPeriod = [];
|
||||
|
||||
@@ -373,7 +373,7 @@ export default class StatisticsWidget extends DashboardWidget {
|
||||
labels.push(label);
|
||||
|
||||
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) {
|
||||
|
@@ -126,8 +126,15 @@ class ShowStatisticsData implements RequestHandlerInterface
|
||||
|
||||
private function getTimedCounts(Builder $query, string $column, ?DateTime $startDate = null, ?DateTime $endDate = null)
|
||||
{
|
||||
$diff = $startDate && $endDate ? $startDate->diff($endDate) : null;
|
||||
|
||||
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)) {
|
||||
|
@@ -73,12 +73,15 @@ class CanRequestCustomTimedStatisticsTest extends TestCase
|
||||
'users' => [
|
||||
$timeStart->copy()->getTimestamp() => 1,
|
||||
$timeStart->copy()->subDays(1)->getTimestamp() => 1,
|
||||
$timeStart->copy()->subDays(2)->getTimestamp() => 1,
|
||||
], 'discussions' => [
|
||||
$timeStart->copy()->getTimestamp() => 1,
|
||||
$timeStart->copy()->subDays(1)->getTimestamp() => 2,
|
||||
$timeStart->copy()->subDays(2)->getTimestamp() => 1,
|
||||
], 'posts' => [
|
||||
$timeStart->copy()->getTimestamp() => 2,
|
||||
$timeStart->copy()->subDays(1)->getTimestamp() => 2,
|
||||
$timeStart->copy()->subDays(2)->getTimestamp() => 1,
|
||||
]
|
||||
];
|
||||
|
||||
|
Reference in New Issue
Block a user