added project detail report (#2651)

- avatars via css only
- random colors for entities
- improves print view
- added colors for teams
- added color to tag
This commit is contained in:
Kevin Papst
2021-07-06 22:01:20 +02:00
committed by GitHub
parent cc6031bfde
commit 9ddb87a6fd
122 changed files with 2736 additions and 1549 deletions

View File

@@ -11,20 +11,12 @@ namespace App\Model\Statistic;
use DateTime;
class Day
class Day extends Timesheet
{
/**
* @var int
*/
protected $totalDuration = 0;
/**
* @var int|null
*/
private $totalDurationBillable = 0;
/**
* @var float
*/
protected $totalRate = 0.00;
/**
* @var DateTime
*/
@@ -37,8 +29,8 @@ class Day
public function __construct(DateTime $day, int $duration, float $rate)
{
$this->day = $day;
$this->totalDuration = $duration;
$this->totalRate = $rate;
$this->setTotalDuration($duration);
$this->setTotalRate($rate);
}
public function getDay(): DateTime
@@ -46,18 +38,6 @@ class Day
return $this->day;
}
public function getTotalDuration(): int
{
return $this->totalDuration;
}
public function setTotalDuration(int $seconds): Day
{
$this->totalDuration = $seconds;
return $this;
}
public function getTotalDurationBillable(): int
{
return $this->totalDurationBillable;
@@ -68,18 +48,6 @@ class Day
$this->totalDurationBillable = $seconds;
}
public function getTotalRate(): float
{
return $this->totalRate;
}
public function setTotalRate(float $totalRate): Day
{
$this->totalRate = $totalRate;
return $this;
}
public function setDetails(array $details): Day
{
$this->details = $details;

View File

@@ -11,11 +11,9 @@ namespace App\Model\Statistic;
use InvalidArgumentException;
final class Month
final class Month extends Timesheet
{
private $month;
private $totalDuration = 0;
private $totalRate = 0.00;
private $billableDuration = 0;
private $billableRate = 0.00;
@@ -40,30 +38,6 @@ final class Month
return (int) $this->month;
}
public function getTotalDuration(): int
{
return $this->totalDuration;
}
public function setTotalDuration(int $seconds): Month
{
$this->totalDuration = $seconds;
return $this;
}
public function getTotalRate(): float
{
return $this->totalRate;
}
public function setTotalRate(float $totalRate): Month
{
$this->totalRate = $totalRate;
return $this;
}
public function getBillableDuration(): int
{
return $this->billableDuration;

View File

@@ -0,0 +1,87 @@
<?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\Statistic;
class Timesheet
{
private $totalDuration = 0;
private $totalRate = 0.00;
private $totalInternalRate = 0.00;
/**
* For unified access, used in frontend.
*
* @return int
*/
public function getValue(): int
{
return $this->totalDuration;
}
/**
* For unified access, used in frontend.
*
* @return int
*/
public function getDuration(): int
{
return $this->totalDuration;
}
public function getTotalDuration(): int
{
return $this->totalDuration;
}
public function setTotalDuration(int $totalDuration): void
{
$this->totalDuration = $totalDuration;
}
/**
* For unified access, used in frontend.
*
* @return float
*/
public function getRate(): float
{
return $this->totalRate;
}
public function getTotalRate(): float
{
return $this->totalRate;
}
public function setTotalRate(float $totalRate): void
{
$this->totalRate = $totalRate;
}
/**
* For unified access, used in frontend.
*
* @return float
*/
public function getInternalRate(): float
{
return $this->totalInternalRate;
}
public function getTotalInternalRate(): float
{
return $this->totalInternalRate;
}
public function setTotalInternalRate(float $totalInternalRate): void
{
$this->totalInternalRate = $totalInternalRate;
}
}

View File

@@ -0,0 +1,60 @@
<?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\Statistic;
use App\Entity\User;
final class UserYear
{
/**
* @var Year
*/
private $year;
/**
* @var User
*/
private $user;
public function __construct(User $user, Year $year)
{
$this->user = $user;
$this->year = $year;
}
public function getYear(): Year
{
return $this->year;
}
public function getUser(): User
{
return $this->user;
}
public function getDuration(): int
{
$duration = 0;
foreach ($this->year->getMonths() as $month) {
$duration += $month->getDuration();
}
return $duration;
}
public function getRate(): float
{
$rate = 0;
foreach ($this->year->getMonths() as $month) {
$rate += $month->getRate();
}
return $rate;
}
}

View File

@@ -9,19 +9,13 @@
namespace App\Model\Statistic;
/**
* Yearly statistics
*/
class Year
final class Year extends Timesheet
{
/**
* @var string
*/
protected $year;
private $year;
/**
* @var Month[]
*/
protected $months = [];
private $months = [];
public function __construct(string $year)
{