save default search options (#2445)

* set default times for daterange objects
* allow to show order and order by fields
* move search to modal
* more options for page size
* save export visibility in cookie
This commit is contained in:
Kevin Papst
2021-03-20 01:10:45 +01:00
committed by GitHub
parent 954ba7c937
commit 87d07ffaaf
83 changed files with 903 additions and 410 deletions

120
src/Entity/Bookmark.php Normal file
View File

@@ -0,0 +1,120 @@
<?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\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Table(name="kimai2_bookmarks",
* uniqueConstraints={
* @ORM\UniqueConstraint(columns={"user_id", "name"})
* }
* )
* @UniqueEntity(fields={"user", "name"})
* @ORM\Entity(repositoryClass="App\Repository\BookmarkRepository")
*/
class Bookmark
{
public const SEARCH_DEFAULT = 'search-default';
public const COLUMN_VISIBILITY = 'column-visibility';
public const TIMESHEET = 'timesheet';
/**
* @var int|null
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var User
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @ORM\JoinColumn(onDelete="CASCADE", nullable=false)
* @Assert\NotNull()
*/
private $user;
/**
* @var string
* @ORM\Column(name="type", type="string", length=20, nullable=false)
* @Assert\NotBlank()
* @Assert\Length(min=2, max=20, allowEmptyString=false)
*/
private $type;
/**
* @var string
* @ORM\Column(name="name", type="string", length=50, nullable=false)
* @Assert\NotBlank()
* @Assert\Length(min=2, max=50, allowEmptyString=false)
*/
private $name;
/**
* @var string
* @ORM\Column(name="content", type="text", nullable=false)
*/
private $content;
public function getId(): ?int
{
return $this->id;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(User $user): void
{
$this->user = $user;
}
public function setName(string $name): void
{
$this->name = $name;
}
public function getName(): ?string
{
return $this->name;
}
public function setType(string $type): void
{
$this->type = $type;
}
public function getType(): ?string
{
return $this->type;
}
public function setContent(array $content): void
{
$this->content = json_encode($content);
}
public function getContent(): array
{
if ($this->content === null) {
return [];
}
return json_decode($this->content, true);
}
public function __clone()
{
if ($this->id) {
$this->id = null;
}
}
}