post 1.3 fixes (#1106)

This commit is contained in:
Kevin Papst
2019-09-17 22:20:36 +02:00
committed by GitHub
parent 13f5e76015
commit 24cbe3d281
12 changed files with 200 additions and 61 deletions

View File

@@ -225,7 +225,10 @@ export default class KimaiToolbar extends KimaiPlugin {
}
hide() {
jQuery(this.getSelector() + ' .dropdown-toggle').dropdown('toggle');
const toggle = jQuery(this.getSelector() + ' #searchTerm.dropdown-toggle');
if (toggle.parent().hasClass('open')) {
toggle.dropdown('toggle');
}
}
/**

104
composer.lock generated
View File

@@ -3697,35 +3697,33 @@
},
{
"name": "phpdocumentor/reflection-common",
"version": "1.0.1",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
"reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
"shasum": ""
},
"require": {
"php": ">=5.5"
"php": ">=7.1"
},
"require-dev": {
"phpunit/phpunit": "^4.6"
"phpunit/phpunit": "~6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
"dev-master": "2.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": [
"src"
]
"phpDocumentor\\Reflection\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -3747,30 +3745,30 @@
"reflection",
"static analysis"
],
"time": "2017-09-11T18:02:19+00:00"
"time": "2018-08-07T13:53:10+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "4.3.1",
"version": "4.3.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c"
"reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
"reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
"reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
"shasum": ""
},
"require": {
"php": "^7.0",
"phpdocumentor/reflection-common": "^1.0.0",
"phpdocumentor/type-resolver": "^0.4.0",
"phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
"phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
"webmozart/assert": "^1.0"
},
"require-dev": {
"doctrine/instantiator": "~1.0.5",
"doctrine/instantiator": "^1.0.5",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^6.4"
},
@@ -3798,41 +3796,40 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"time": "2019-04-30T17:48:53+00:00"
"time": "2019-09-12T14:27:41+00:00"
},
{
"name": "phpdocumentor/type-resolver",
"version": "0.4.0",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
"reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
"shasum": ""
},
"require": {
"php": "^5.5 || ^7.0",
"phpdocumentor/reflection-common": "^1.0"
"php": "^7.1",
"phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
"mockery/mockery": "^0.9.4",
"phpunit/phpunit": "^5.2||^4.8.24"
"ext-tokenizer": "^7.1",
"mockery/mockery": "~1",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"phpDocumentor\\Reflection\\": [
"src/"
]
"phpDocumentor\\Reflection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -3845,7 +3842,8 @@
"email": "me@mikevanriel.com"
}
],
"time": "2017-07-14T14:27:02+00:00"
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"time": "2019-08-22T18:11:29+00:00"
},
{
"name": "phpoffice/common",
@@ -9391,16 +9389,16 @@
},
{
"name": "nette/finder",
"version": "v2.5.0",
"version": "v2.5.1",
"source": {
"type": "git",
"url": "https://github.com/nette/finder.git",
"reference": "6be1b83ea68ac558aff189d640abe242e0306fe2"
"reference": "14164e1ddd69e9c5f627ff82a10874b3f5bba5fe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/finder/zipball/6be1b83ea68ac558aff189d640abe242e0306fe2",
"reference": "6be1b83ea68ac558aff189d640abe242e0306fe2",
"url": "https://api.github.com/repos/nette/finder/zipball/14164e1ddd69e9c5f627ff82a10874b3f5bba5fe",
"reference": "14164e1ddd69e9c5f627ff82a10874b3f5bba5fe",
"shasum": ""
},
"require": {
@@ -9441,7 +9439,7 @@
"homepage": "https://nette.org/contributors"
}
],
"description": "? Nette Finder: find files and directories with an intuitive API.",
"description": "🔍 Nette Finder: find files and directories with an intuitive API.",
"homepage": "https://nette.org",
"keywords": [
"filesystem",
@@ -9449,7 +9447,7 @@
"iterator",
"nette"
],
"time": "2019-02-28T18:13:25+00:00"
"time": "2019-07-11T18:02:17+00:00"
},
{
"name": "nette/neon",
@@ -10157,16 +10155,16 @@
},
{
"name": "phpstan/phpstan-doctrine",
"version": "0.11.5",
"version": "0.11.6",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-doctrine.git",
"reference": "3c68697365f0b71e357d773d91a6c77f3f9e143a"
"reference": "77592865e167b32c7dcb4f39a35210e909a8854c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/3c68697365f0b71e357d773d91a6c77f3f9e143a",
"reference": "3c68697365f0b71e357d773d91a6c77f3f9e143a",
"url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/77592865e167b32c7dcb4f39a35210e909a8854c",
"reference": "77592865e167b32c7dcb4f39a35210e909a8854c",
"shasum": ""
},
"require": {
@@ -10217,7 +10215,7 @@
"MIT"
],
"description": "Doctrine extensions for PHPStan",
"time": "2019-05-29T06:01:20+00:00"
"time": "2019-09-13T08:40:06+00:00"
},
{
"name": "phpstan/phpstan-phpunit",
@@ -10599,16 +10597,16 @@
},
{
"name": "phpunit/phpunit",
"version": "7.5.15",
"version": "7.5.16",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "d79c053d972856b8b941bb233e39dc521a5093f0"
"reference": "316afa6888d2562e04aeb67ea7f2017a0eb41661"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d79c053d972856b8b941bb233e39dc521a5093f0",
"reference": "d79c053d972856b8b941bb233e39dc521a5093f0",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/316afa6888d2562e04aeb67ea7f2017a0eb41661",
"reference": "316afa6888d2562e04aeb67ea7f2017a0eb41661",
"shasum": ""
},
"require": {
@@ -10679,7 +10677,7 @@
"testing",
"xunit"
],
"time": "2019-08-21T07:05:16+00:00"
"time": "2019-09-14T09:08:39+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
@@ -10901,16 +10899,16 @@
},
{
"name": "sebastian/exporter",
"version": "3.1.1",
"version": "3.1.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "06a9a5947f47b3029d76118eb5c22802e5869687"
"reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/06a9a5947f47b3029d76118eb5c22802e5869687",
"reference": "06a9a5947f47b3029d76118eb5c22802e5869687",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
"reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
"shasum": ""
},
"require": {
@@ -10964,7 +10962,7 @@
"export",
"exporter"
],
"time": "2019-08-11T12:43:14+00:00"
"time": "2019-09-14T09:02:43+00:00"
},
{
"name": "sebastian/global-state",

File diff suppressed because one or more lines are too long

View File

@@ -5,7 +5,7 @@
"build/runtime.f02eb7c9.js",
"build/0.2372f97a.js",
"build/1.eec3372c.js",
"build/app.c72744db.js"
"build/app.3295d6f6.js"
],
"css": [
"build/app.af6cd671.css"
@@ -35,7 +35,7 @@
"build/runtime.f02eb7c9.js": "sha384-xNNrNinl64G3nCUrIskgSjU0mUXXCB9lj6XCSInBTwxSKXk8uTMafnLHtdWdIGtd",
"build/0.2372f97a.js": "sha384-+My37x5S4cen1I4LYgCVg4Qaa+y8vmPzhpDNLPEoEuH5uBtdwYx6ACOxm23nW0UP",
"build/1.eec3372c.js": "sha384-7UVWcP6Hefp2k/CrtGSITKXx4dSZqtvpAiU8WX7dClETkzMewrUjoCRtVXQ5j3KI",
"build/app.c72744db.js": "sha384-IYUt4/r279Tb4fika7HGA+YOmV/ZQ6uhBuR7PA7RCRDKai1pH2vvHmO4kWVX1WUe",
"build/app.3295d6f6.js": "sha384-hwTdghEQ1R6XmRqdhx3b1TlOjCZ693mjt6aSL9sHJM6AtQr6hAaoOKlChDHlw9Mc",
"build/app.af6cd671.css": "sha384-N8TrohuaS6twRAMAhyy+5o3qV69cT6KGgsvKiLmHMCmRIV3zssFoM14+pO92w+JL",
"build/2.ad3e2792.js": "sha384-1aYWOOt09EZyaAlTHQzsuBKU1b+iDuMEen4m8lrRIm7awHvYkP82CWAowcKZ+XuW",
"build/chart.a0ca6955.js": "sha384-I57c9DtU3AOG2kzKqIZkIu0hi1aGYHRZ5QG4LKC9+9slzJnAMttPGXoL2cQG3m6y",

View File

@@ -3,7 +3,7 @@
"build/1.eec3372c.js": "build/1.eec3372c.js",
"build/2.ad3e2792.js": "build/2.ad3e2792.js",
"build/app.css": "build/app.af6cd671.css",
"build/app.js": "build/app.c72744db.js",
"build/app.js": "build/app.3295d6f6.js",
"build/calendar.css": "build/calendar.8bb56227.css",
"build/calendar.js": "build/calendar.8464f183.js",
"build/chart.js": "build/chart.a0ca6955.js",

View File

@@ -73,11 +73,13 @@ class TimesheetFixtures extends Fixture implements DependentFixtureInterface
// by using array_pop we make sure that at least one activity has NO entry!
array_pop($activities);
$all = 0;
foreach ($allUser as $user) {
// random amount of timesheet entries for every user
$timesheetForUser = rand(self::MIN_TIMESHEETS_PER_USER, self::MAX_TIMESHEETS_PER_USER);
for ($i = 1; $i <= $timesheetForUser; $i++) {
if ($i > self::MAX_TIMESHEETS_TOTAL) {
if ($all > self::MAX_TIMESHEETS_TOTAL) {
break;
}
@@ -96,6 +98,8 @@ class TimesheetFixtures extends Fixture implements DependentFixtureInterface
true
);
$all++;
$manager->persist($entry);
if ($i % self::BATCH_SIZE == 0) {

View File

@@ -133,4 +133,19 @@ interface MetaTableTypeInterface
* @return MetaTableTypeInterface
*/
public function setConstraints(array $constraints): MetaTableTypeInterface;
/**
* Returns the label shown to the end-user.
*
* @return string
*/
public function getLabel(): ?string;
/**
* Sets the label shown to the end-user.
*
* @param string $label
* @return MetaTableTypeInterface
*/
public function setLabel(string $label): MetaTableTypeInterface;
}

View File

@@ -9,6 +9,7 @@
namespace App\Entity;
use App\Form\Type\YesNoType;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
@@ -49,6 +50,11 @@ trait MetaTableTypeTrait
*/
private $visible = false;
/**
* @var string
*/
private $label;
/**
* @var string
*/
@@ -66,7 +72,11 @@ trait MetaTableTypeTrait
public function getName(): ?string
{
return $this->name;
if (null === $this->name) {
return null;
}
return strtolower($this->name);
}
public function setName(string $name): MetaTableTypeInterface
@@ -82,6 +92,7 @@ trait MetaTableTypeTrait
public function getValue()
{
switch ($this->type) {
case YesNoType::class:
case CheckboxType::class:
return (bool) $this->value;
case IntegerType::class:
@@ -176,4 +187,20 @@ trait MetaTableTypeTrait
return $this;
}
public function getLabel(): ?string
{
if (null === $this->label) {
return $this->name;
}
return $this->label;
}
public function setLabel(string $label): MetaTableTypeInterface
{
$this->label = $label;
return $this;
}
}

View File

@@ -43,7 +43,7 @@ class EntityMetaDefinitionType extends AbstractType
}
$event->getForm()->add('value', $definition->getType(), [
'label' => $definition->getName(),
'label' => $definition->getLabel(),
'constraints' => $definition->getConstraints(),
'required' => $definition->isRequired(),
]);

View File

@@ -0,0 +1,24 @@
<?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\Repository\Loader;
final class DefaultLoader implements LoaderInterface
{
/**
* @param array $results
*/
public function loadResults(array $results): void
{
// nothing to do here, the results are already fully populated
// if your entities have lazy collections or other data that needs population,
// consider to create a custom loader!
}
}

View File

@@ -0,0 +1,62 @@
<?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\Repository\Paginator;
use Doctrine\ORM\Query;
use Doctrine\ORM\QueryBuilder;
final class QueryBuilderPaginator implements PaginatorInterface
{
/**
* @var QueryBuilder
*/
private $query;
/**
* @var int
*/
private $results = 0;
public function __construct(QueryBuilder $query, int $results)
{
$this->query = $query;
$this->results = $results;
}
/**
* {@inheritdoc}
*/
public function getNbResults()
{
return $this->results;
}
/**
* {@inheritdoc}
*/
public function getSlice($offset, $length)
{
$query = $this->query
->getQuery()
->setFirstResult($offset)
->setMaxResults($length);
return $this->getResults($query);
}
private function getResults(Query $query)
{
return $query->execute();
}
public function getAll(): iterable
{
return $this->getResults($this->query->getQuery());
}
}

View File

@@ -26,6 +26,7 @@ abstract class AbstractMetaEntityTest extends TestCase
public function testDefaultValues()
{
$sut = $this->getMetaEntity();
self::assertNull($sut->getLabel());
self::assertNull($sut->getName());
self::assertNull($sut->getType());
self::assertNull($sut->getValue());
@@ -42,6 +43,11 @@ abstract class AbstractMetaEntityTest extends TestCase
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->setName('foo-bar'));
self::assertEquals('foo-bar', $sut->getName());
self::assertEquals('foo-bar', $sut->getLabel());
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->setLabel('Wohoooo !!!!!'));
self::assertEquals('Wohoooo !!!!!', $sut->getLabel());
self::assertEquals('foo-bar', $sut->getName());
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->setisVisible(true));
self::assertTrue($sut->isVisible());