Completed
Pull Request — master (#163)
by
unknown
08:39
created

DateRange::prepare()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 1
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Encore\Admin\Form\Field;
4
5
use Encore\Admin\Form\Field;
6
7
class DateRange extends Field
8
{
9
    protected static $css = [
10
        '/packages/admin/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
11
    ];
12
13
    protected static $js = [
14
        '/packages/admin/moment/min/moment-with-locales.min.js',
15
        '/packages/admin/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
16
    ];
17
18
    protected $format = 'YYYY-MM-DD';
19
20
    public function __construct($column, $arguments)
21
    {
22
        $this->column['start'] = $column;
23
        $this->column['end'] = $arguments[0];
24
25
        array_shift($arguments);
26
        $this->label = $this->formatLabel($arguments);
27
        $this->id = $this->formatId($this->column);
28
29
        $this->options(['format' => $this->format]);
30
    }
31
32
    public function prepare($value)
33
    {
34
        if ($value === '') {
35
            $value = null;
36
        }
37
38
        return $value;
39
    }
40
41
    public function render()
42
    {
43
        $this->options['locale'] = config('app.locale');
44
45
        $startOptions = json_encode($this->options);
46
        $endOptions = json_encode($this->options + ['useCurrent' => false]);
47
48
        $this->script = <<<EOT
49
            $('#{$this->id['start']}').datetimepicker($startOptions);
50
            $('#{$this->id['end']}').datetimepicker($endOptions);
51
            $("#{$this->id['start']}").on("dp.change", function (e) {
52
                $('#{$this->id['end']}').data("DateTimePicker").minDate(e.date);
53
            });
54
            $("#{$this->id['end']}").on("dp.change", function (e) {
55
                $('#{$this->id['start']}').data("DateTimePicker").maxDate(e.date);
56
            });
57
EOT;
58
59
        return parent::render();
60
    }
61
}
62