Passed
Push — master ( 69cfd7...96431f )
by Bruno
10:28 queued 13s
created

Renderable_relationshipAutocomplete::editable()   A

Complexity

Conditions 5
Paths 12

Size

Total Lines 30
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 30
ccs 0
cts 21
cp 0
rs 9.2888
c 0
b 0
f 0
cc 5
nc 12
nop 3
crap 30
1
<?php declare(strict_types=1);
2
3
namespace Modelarium\Frontend\HTML\Renderable;
4
5
use Formularium\Datatype;
6
use Formularium\Field;
7
use Formularium\Frontend\HTML\Framework;
8
use Formularium\HTMLNode;
9
10
class Renderable_relationshipAutocomplete extends Renderable_relationship
11
{
12
    public function viewable($value, Field $field, HTMLNode $previous): HTMLNode
13
    {
14
        return $previous;
15
    }
16
17
    public function editable($value, Field $field, HTMLNode $previous): HTMLNode
18
    {
19
        $input = new HTMLNode('input');
20
    
21
        $renderable = $field->getRenderables();
22
        $validators = $field->getValidators();
23
        $input->setAttributes([
24
                'id' => $field->getName() . Framework::counter(),
25
                'name' => $field->getName(),
26
                'class' => '',
27
                'data-attribute' => $field->getName(),
28
                'data-datatype' => $field->getDatatype()->getName(),
29
                'data-basetype' => $field->getDatatype()->getBasetype(),
30
                'title' => $field->getRenderable(static::LABEL, ''),
31
                'autocomplete' => 'off'
32
            ]);
33
    
34
        if (isset($renderable[static::PLACEHOLDER])) {
35
            $input->setAttribute('placeholder', $renderable[static::PLACEHOLDER]);
36
        }
37
        if ($validators[Datatype::REQUIRED] ?? false) {
38
            $input->setAttribute('required', 'required');
39
        }
40
        foreach ([static::DISABLED, static::READONLY] as $v) {
41
            if ($field->getRenderable($v, false)) {
42
                $input->setAttribute($v, $v);
43
            }
44
        }
45
    
46
        return $this->container($input, $field);
47
    }
48
}
49