AutocompleteRenderer::render()   A
last analyzed

Complexity

Conditions 5
Paths 16

Size

Total Lines 28

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 5

Importance

Changes 0
Metric Value
dl 0
loc 28
ccs 16
cts 16
cp 1
rs 9.1608
c 0
b 0
f 0
cc 5
nc 16
nop 1
crap 5
1
<?php
2
3
/*
4
 * This file is part of the Ivory Google Map package.
5
 *
6
 * (c) Eric GELOEN <[email protected]>
7
 *
8
 * For the full copyright and license information, please read the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Ivory\GoogleMap\Helper\Renderer\Place;
13
14
use Ivory\GoogleMap\Helper\Formatter\Formatter;
15
use Ivory\GoogleMap\Helper\Renderer\AbstractJsonRenderer;
16
use Ivory\GoogleMap\Helper\Renderer\Utility\RequirementRenderer;
17
use Ivory\GoogleMap\Place\Autocomplete;
18
use Ivory\JsonBuilder\JsonBuilder;
19
20
/**
21
 * @author GeLo <[email protected]>
22
 */
23
class AutocompleteRenderer extends AbstractJsonRenderer
24
{
25
    /**
26
     * @var RequirementRenderer
27
     */
28
    private $requirementRenderer;
29
30 28
    public function __construct(
31
        Formatter $formatter,
32
        JsonBuilder $jsonBuilder,
33
        RequirementRenderer $requirementRenderer
34
    ) {
35 28
        parent::__construct($formatter, $jsonBuilder);
36
37 28
        $this->setRequirementRenderer($requirementRenderer);
38 28
    }
39
40
    /**
41
     * @return RequirementRenderer
42
     */
43 4
    public function getRequirementRenderer()
44
    {
45 4
        return $this->requirementRenderer;
46
    }
47
48 28
    public function setRequirementRenderer(RequirementRenderer $requirementRenderer)
49
    {
50 28
        $this->requirementRenderer = $requirementRenderer;
51 28
    }
52
53
    /**
54
     * @return string
55
     */
56 8
    public function render(Autocomplete $autocomplete)
57
    {
58 8
        $formatter = $this->getFormatter();
59 8
        $jsonBuilder = $this->getJsonBuilder();
60
61 8
        if ($autocomplete->hasTypes()) {
62 4
            $jsonBuilder->setValue('[types]', $autocomplete->getTypes());
63
        }
64
65 8
        if ($autocomplete->hasBound()) {
66 4
            $jsonBuilder->setValue('[bounds]', $autocomplete->getBound()->getVariable(), false);
67
        }
68
69 8
        if ($autocomplete->hasComponents()) {
70 4
            $jsonBuilder->setValue('[componentRestrictions]', $autocomplete->getComponents());
71
        }
72
73 8
        if (!$jsonBuilder->hasValues()) {
74 4
            $jsonBuilder->setJsonEncodeOptions(JSON_FORCE_OBJECT);
75
        }
76
77 8
        return $formatter->renderObjectAssignment($autocomplete, $formatter->renderObject('Autocomplete', [
78 8
            $formatter->renderCall($formatter->renderProperty('document', 'getElementById'), [
79 8
                $formatter->renderEscape($autocomplete->getHtmlId()),
80
            ]),
81 8
            $jsonBuilder->build(),
82 8
        ], $formatter->renderClass('places')));
83
    }
84
85
    /**
86
     * @return string
87
     */
88 4
    public function renderRequirement()
89
    {
90 4
        return $this->requirementRenderer->render($this->getFormatter()->renderClass('places'));
91
    }
92
}
93