BootstrapRange   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 44
c 1
b 0
f 0
dl 0
loc 62
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setControlHtml() 0 47 1
A register() 0 11 3
1
<?php
2
3
namespace kalanis\kw_table\form_nette_bootstrap\Controls;
4
5
6
use kalanis\kw_table\form_nette\Controls\Range;
7
use Nette\Forms\Container;
8
use Nette\Utils\Html;
9
10
11
class BootstrapRange extends Range
12
{
13
    protected function setControlHtml(string $name)
14
    {
15
        $span = Html::el('span');
16
        $divSince = Html::el('div', ['class' => "input-group dateTimePickerRange"]);
17
        $divTo = clone $divSince;
18
19
        $start = $this->start = Html::el('input', [
20
            'type'        => 'text',
21
            'name'        => $name . '[]',
22
            'placeholder' => _('From'),
23
            'id'          => $name . 'StartId',
24
            'class'       => 'form-control cleanable',
25
            'aria-label'  => _('Time from')
26
        ]);
27
        $end = $this->end = Html::el('input', [
28
            'type'        => 'text',
29
            'name'        => $name . '[]',
30
            'placeholder' => _('To'),
31
            'id'          => $name . 'StartId',
32
            'class'       => 'form-control cleanable',
33
            'aria-label'  => _('Time to')
34
        ]);
35
36
37
        $divGroupBtnSearch = Html::el('div', ['class' => "input-group-btn"]);
38
        $divGroupBtnClear = clone $divGroupBtnSearch;
39
        $buttonSearch = Html::el('button', ['type' => "button", 'class' => "btn btn-default listingSearch", 'aria-label' => "Search"]);
40
        $buttonClear = Html::el('button', ['type' => "button", 'class' => "btn btn-default listingClear", 'aria-label' => "Clear"]);
41
        $spanSearch = Html::el('span', ['class' => "glyphicon glyphicon-search"]);
42
        $spanClear = Html::el('span', ['class' => "glyphicon glyphicon-remove"]);
43
44
        $buttonSearch->add($spanSearch);
45
        $buttonClear->add($spanClear);
46
47
        $divGroupBtnSearch->add($buttonSearch);
48
        $divGroupBtnClear->add($buttonClear);
49
50
        $divSince->add($divGroupBtnSearch);
51
        $divSince->add($start);
52
        $divSince->add($divGroupBtnClear);
53
54
        $divTo->add($divGroupBtnSearch);
55
        $divTo->add($end);
56
        $divTo->add($divGroupBtnClear);
57
        $span->add($divSince);
58
        $span->add($divTo);
59
        $this->control = $span;
0 ignored issues
show
Bug introduced by
The property control is declared read-only in Nette\Forms\Controls\BaseControl.
Loading history...
60
    }
61
62
    public static function register(?string $inputFormat = null, ?string $searchFormat = null)
63
    {
64
        Container::extensionMethod('addBootstrapRange', function ($container, $name, $label = null, $maxLength = null) use ($inputFormat, $searchFormat) {
65
            $picker = $container[$name] = new BootstrapRange($name, $label, $maxLength);
66
67
            if (null !== $inputFormat)
68
                $picker->setInputFormat($inputFormat);
69
            if (null !== $searchFormat)
70
                $picker->setSearchFormat($searchFormat);
71
72
            return $picker;
73
        });
74
    }
75
}
76