Completed
Push — master ( 777a36...4cd4e4 )
by Song
02:30
created

Layout::removeDefaultIDFilter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Encore\Admin\Grid\Filter\Layout;
4
5
use Encore\Admin\Grid\Filter;
6
use Illuminate\Support\Collection;
7
8
class Layout
9
{
10
    /**
11
     * @var Collection
12
     */
13
    protected $columns;
14
15
    /**
16
     * @var Column
17
     */
18
    protected $current;
19
20
    /**
21
     * @var Filter
22
     */
23
    protected $parent;
24
25
    /**
26
     * Layout constructor.
27
     *
28
     * @param Filter $filter
29
     */
30
    public function __construct(Filter $filter)
31
    {
32
        $this->parent = $filter;
33
34
        $this->current = new Column();
35
36
        $this->columns = new Collection();
37
    }
38
39
    /**
40
     * Add a filter to layout column.
41
     *
42
     * @param Filter\AbstractFilter $filter
43
     */
44
    public function addFilter(Filter\AbstractFilter $filter)
45
    {
46
        $this->current->addFilter($filter);
47
    }
48
49
    /**
50
     * Add a new column in layout.
51
     *
52
     * @param int      $width
53
     * @param \Closure $closure
54
     */
55
    public function column($width, \Closure $closure)
56
    {
57
        if ($this->columns->isEmpty()) {
58
            $column = $this->current;
59
60
            $column->setWidth($width);
61
        } else {
62
            $column = new Column($width);
63
64
            $this->current = $column;
65
        }
66
67
        $this->columns->push($column);
68
69
        $closure($this->parent);
70
    }
71
72
    /**
73
     * Get all columns in filter layout.
74
     *
75
     * @return Collection
76
     */
77
    public function columns()
78
    {
79
        if ($this->columns->isEmpty()) {
80
            $this->columns->push($this->current);
81
        }
82
83
        return $this->columns;
84
    }
85
86
    /**
87
     * Remove the default ID filter of the default(first) column.
88
     */
89
    public function removeDefaultIDFilter()
90
    {
91
        $this->columns()
92
            ->first()
93
            ->filters()
94
            ->shift()
95
        ;
96
    }
97
}
98