added support for ordering meta fields (#1940)

This commit is contained in:
Kevin Papst
2020-08-30 11:24:12 +02:00
committed by GitHub
parent e7da2b408a
commit 8e801c6829
9 changed files with 51 additions and 7 deletions

View File

@@ -163,4 +163,19 @@ interface MetaTableTypeInterface
* @return array
*/
public function getOptions(): array;
/**
* Sets the weight order.
*
* @param int $order
* @return MetaTableTypeInterface
*/
public function setOrder(int $order): MetaTableTypeInterface;
/**
* Returns the weight order.
*
* @return int
*/
public function getOrder(): int;
}

View File

@@ -89,6 +89,10 @@ trait MetaTableTypeTrait
* @var array
*/
private $options = [];
/**
* @var int
*/
private $order = 0;
public function getName(): ?string
{
@@ -216,6 +220,7 @@ trait MetaTableTypeTrait
->setIsVisible($meta->isVisible())
->setLabel($meta->getLabel())
->setOptions($meta->getOptions())
->setOrder($meta->getOrder())
;
return $this;
@@ -249,6 +254,18 @@ trait MetaTableTypeTrait
return $this->options;
}
public function getOrder(): int
{
return $this->order;
}
public function setOrder(int $order): MetaTableTypeInterface
{
$this->order = $order;
return $this;
}
public function __clone()
{
if ($this->id) {

View File

@@ -67,7 +67,7 @@
</td>
</tr>
{% endif %}
{% for metaField in activity.visibleMetaFields %}
{% for metaField in activity.visibleMetaFields|sort((a, b) => a.order <=> b.order) %}
<tr>
<th>{{ metaField.label|trans }}</th>
<td colspan="3">{{ widgets.form_type_value(metaField.type, metaField.value, activity) }}</td>

View File

@@ -36,7 +36,9 @@
{% endif %}
{{ form_row(form.visible) }}
{% if form.metaFields is defined and form.metaFields is not empty %}
{{ form_row(form.metaFields) }}
{% for meta in form.metaFields|sort((a, b) => a.vars.data.order <=> b.vars.data.order) %}
{{ form_row(meta) }}
{% endfor %}
{% endif %}
{% if form.create_more is defined and app.request.xmlHttpRequest %}
<div class="hidden">

View File

@@ -111,7 +111,7 @@
</tr>
{% endif %}
{% endif %}
{% for metaField in customer.visibleMetaFields %}
{% for metaField in customer.visibleMetaFields|sort((a, b) => a.order <=> b.order) %}
<tr>
<th>{{ metaField.label|trans }}</th>
<td>{{ widgets.form_type_value(metaField.type, metaField.value, customer) }}</td>

View File

@@ -79,7 +79,9 @@
{% endif %}
{{ form_row(form.visible) }}
{% if form.metaFields is defined and form.metaFields is not empty %}
{{ form_row(form.metaFields) }}
{% for meta in form.metaFields|sort((a, b) => a.vars.data.order <=> b.vars.data.order) %}
{{ form_row(meta) }}
{% endfor %}
{% endif %}
{{ form_widget(form) }}
{% endblock %}

View File

@@ -86,7 +86,7 @@
</td>
</tr>
{% endif %}
{% for metaField in project.visibleMetaFields %}
{% for metaField in project.visibleMetaFields|sort((a, b) => a.order <=> b.order) %}
<tr>
<th>{{ metaField.label|trans }}</th>
<td colspan="3">{{ widgets.form_type_value(metaField.type, metaField.value, project) }}</td>

View File

@@ -51,7 +51,9 @@
{% endif %}
{{ form_row(form.visible) }}
{% if form.metaFields is defined and form.metaFields is not empty %}
{{ form_row(form.metaFields) }}
{% for meta in form.metaFields|sort((a, b) => a.vars.data.order <=> b.vars.data.order) %}
{{ form_row(meta) }}
{% endfor %}
{% endif %}
{% if form.create_more is defined and app.request.xmlHttpRequest %}
<div class="hidden">

View File

@@ -37,6 +37,7 @@ abstract class AbstractMetaEntityTest extends TestCase
self::assertEmpty($sut->getOptions());
self::assertFalse($sut->isVisible());
self::assertFalse($sut->isRequired());
self::assertEquals(0, $sut->getOrder());
}
public function testSetterAndGetter()
@@ -65,6 +66,9 @@ abstract class AbstractMetaEntityTest extends TestCase
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->setType(DateTimePickerType::class));
self::assertEquals(DateTimePickerType::class, $sut->getType());
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->setOrder(7));
self::assertEquals(7, $sut->getOrder());
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->addConstraint(new Length(['max' => 10])));
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->addConstraint(new NotNull([])));
self::assertInstanceOf(MetaTableTypeInterface::class, $sut->addConstraint(new NotBlank([])));
@@ -112,7 +116,8 @@ abstract class AbstractMetaEntityTest extends TestCase
->setType('blub2')
->setEntity($entity2)
->setIsRequired(true)
->setisVisible(true)
->setIsVisible(true)
->setOrder(93)
->setConstraints([new NotBlank(), new Length(['min' => 1])])
->setOptions(['foo1' => 'bar1'])
;
@@ -123,6 +128,7 @@ abstract class AbstractMetaEntityTest extends TestCase
self::assertEquals('bar', $meta1->getValue());
self::assertEquals('blub2', $meta1->getType());
self::assertEquals('TRALALA', $meta1->getLabel());
self::assertEquals(93, $meta1->getOrder());
self::assertTrue($meta1->isRequired());
self::assertTrue($meta1->isVisible());
self::assertSame($entity1, $meta1->getEntity());