new user-year reporting and data-type chooser (#3155)

This commit is contained in:
Kevin Papst
2022-02-16 12:18:04 +01:00
committed by GitHub
parent 1852d71974
commit 85a63c4b78
58 changed files with 1862 additions and 683 deletions

View File

@@ -14,7 +14,7 @@ use App\Model\Statistic\StatisticDate;
use DateTime;
use DateTimeInterface;
final class DailyStatistic
final class DailyStatistic implements DateStatisticInterface
{
/**
* @var array<string, StatisticDate>
@@ -61,11 +61,26 @@ final class DailyStatistic
return array_values($this->days);
}
/**
* For unified frontend access
*
* @return StatisticDate[]
*/
public function getData(): array
{
return $this->getDays();
}
public function getDayByDateTime(\DateTimeInterface $date): ?StatisticDate
{
return $this->getDay($date->format('Y'), $date->format('m'), $date->format('d'));
}
public function getByDateTime(\DateTimeInterface $date): ?StatisticDate
{
return $this->getDayByDateTime($date);
}
public function getDayByReportDate(string $date): ?StatisticDate
{
$this->setupDays();

View File

@@ -0,0 +1,30 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Model;
use App\Model\Statistic\StatisticDate;
use DateTimeInterface;
interface DateStatisticInterface
{
/**
* For unified frontend access
*
* @return StatisticDate[]
*/
public function getData(): array;
public function getByDateTime(DateTimeInterface $date): ?StatisticDate;
/**
* @return DateTimeInterface[]
*/
public function getDateTimes(): array;
}

View File

@@ -14,7 +14,7 @@ use App\Model\Statistic\StatisticDate;
use DateTime;
use DateTimeInterface;
final class MonthlyStatistic
final class MonthlyStatistic implements DateStatisticInterface
{
/**
* @var array<string, array<int, StatisticDate>>
@@ -107,6 +107,26 @@ final class MonthlyStatistic
return $all;
}
/**
* For unified frontend access
*
* @return StatisticDate[]
*/
public function getData(): array
{
return $this->getMonths();
}
public function getMonthByDateTime(DateTimeInterface $date): ?StatisticDate
{
return $this->getMonth($date->format('Y'), $date->format('m'));
}
public function getByDateTime(DateTimeInterface $date): ?StatisticDate
{
return $this->getMonthByDateTime($date);
}
public function getMonth(string $year, string $month): ?StatisticDate
{
$this->setupYears();