added colors to tags (#1631)

This commit is contained in:
jojoemade
2020-04-14 14:18:11 +02:00
committed by GitHub
parent 1dfceeea99
commit 0bc9e74853
9 changed files with 55 additions and 7 deletions

View File

@@ -44,6 +44,8 @@ class Tag
*/
private $name;
use ColorTrait;
/**
* @var Timesheet[]|ArrayCollection
*

View File

@@ -10,6 +10,7 @@
namespace App\Form;
use App\Entity\Tag;
use App\Form\Type\ColorPickerType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
@@ -29,7 +30,7 @@ class TagEditForm extends AbstractType
'autofocus' => 'autofocus'
],
])
;
->add('color', ColorPickerType::class);
}
/**

View File

@@ -0,0 +1,38 @@
<?php
declare(strict_types=1);
/*
* 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 DoctrineMigrations;
use App\Doctrine\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
/**
* @version 1.9
*/
final class Version20200413133226 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add color for tags';
}
public function up(Schema $schema): void
{
$tags = $schema->getTable('kimai2_tags');
$tags->addColumn('color', 'string', ['length' => 7, 'notnull' => false, 'default' => null]);
}
public function down(Schema $schema): void
{
$tags = $schema->getTable('kimai2_tags');
$tags->dropColumn('color');
}
}

View File

@@ -108,10 +108,11 @@ class TagRepository extends EntityRepository
$qb = $this->createQueryBuilder('tag');
$qb
->select('tag.id, tag.name, count(timesheets.id) as amount')
->select('tag.id, tag.name, tag.color, count(timesheets.id) as amount')
->leftJoin('tag.timesheets', 'timesheets')
->addGroupBy('tag.id')
->addGroupBy('tag.name')
->addGroupBy('tag.color')
;
$orderBy = $query->getOrderBy();

View File

@@ -159,8 +159,7 @@
{% endmacro %}
{% macro badge(title, color) %}
{# black, green, blue, yellow #}
<span class="badge bg-{{ color|default('red') }}">{{ title|trans }}</span>
<span class="badge" style="background-color:{{ color|default('#dd4b39') }}">{{ title|trans }}</span>
{% endmacro %}
{% macro alert(type, description, title, icon) %}
@@ -369,7 +368,7 @@
{% macro tag_list(taglist) %}
{% import _self as macro %}
{% for tag in taglist %}
{{ macro.badge(tag.name , 'green') }}
{{ macro.badge(tag.name, tag.color|default('#00a65a')) }}
{% endfor %}
{% endmacro %}

View File

@@ -38,7 +38,10 @@
<tr{% if manageAllowed %} class="modal-ajax-form open-edit" data-href="{{ path('tags_edit', {'id': tag.id}) }}"{% endif %}>
<td class="text-nowrap">{{ tables.datatable_multiupdate_row(tag.id) }}</td>
<td>{{ tag.name }}</td>
<td>
{{ widgets.color_dot(tag.color|default('#00a65a')) }}
{{ tag.name }}
</td>
<td>{{ widgets.label(tag.amount, type) }}</td>
<td class="actions">
{{ actions.tag(tag, 'index') }}

View File

@@ -132,7 +132,7 @@ class TagControllerTest extends APIControllerBaseTest
protected function assertStructure(array $result, $full = true)
{
$expectedKeys = [
'id', 'name', 'timesheets'
'id', 'name', 'color', 'timesheets'
];
if ($full) {

View File

@@ -23,6 +23,7 @@ class TagTest extends TestCase
$sut = new Tag();
$this->assertNull($sut->getId());
$this->assertNull($sut->getName());
$this->assertNull($sut->getColor());
}
public function testSetterAndGetter()
@@ -32,6 +33,9 @@ class TagTest extends TestCase
$this->assertInstanceOf(Tag::class, $sut->setName('foo'));
$this->assertEquals('foo', $sut->getName());
$this->assertEquals('foo', (string) $sut);
$this->assertInstanceOf(Tag::class, $sut->setColor('#fffccc'));
$this->assertEquals('#fffccc', $sut->getColor());
}
public function testWithTimesheet()

Binary file not shown.