Completed
Push — master ( b5b209...54a858 )
by Elf
01:47
created

Builder::getTableClasses()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 4
cp 0
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 2
1
<?php
2
3
namespace ElfSundae\Laravel\DataTables\Html;
4
5
use Illuminate\Support\Arr;
6
use Yajra\DataTables\Html\Builder as BaseBuilder;
7
8
class Builder extends BaseBuilder
9
{
10
    /**
11
     * Sets HTML table "id" attribute.
12
     *
13
     * @param string $id
14
     * @return $this
15
     */
16
    public function setTableId($id)
17
    {
18
        return $this->setTableAttribute('id', $id);
19
    }
20
21
    /**
22
     * Add class names to the "class" attribute of HTML table.
23
     *
24
     * @param string|array $class
25
     * @return $this
26
     */
27
    public function addTableClass($class)
28
    {
29
        $class = is_array($class) ? implode(' ', $class) : $class;
30
        $currentClass = Arr::get(array_change_key_case($this->tableAttributes), 'class');
31
32
        $classes = preg_split('#\s+#', $currentClass.' '.$class, null, PREG_SPLIT_NO_EMPTY);
33
        $class = implode(' ', array_unique($classes));
34
35
        return $this->setTableAttribute('class', $class);
36
    }
37
38
    /**
39
     * Remove class names from the "class" attribute of HTML table.
40
     *
41
     * @param string|array $class
42
     * @return $this
43
     */
44
    public function removeTableClass($class)
45
    {
46
        $class = is_array($class) ? implode(' ', $class) : $class;
47
        $currentClass = Arr::get(array_change_key_case($this->tableAttributes), 'class');
48
49
        $classes = array_diff(
50
            preg_split('#\s+#', $currentClass, null, PREG_SPLIT_NO_EMPTY),
51
            preg_split('#\s+#', $class, null, PREG_SPLIT_NO_EMPTY)
52
        );
53
        $class = implode(' ', array_unique($classes));
54
55
        return $this->setTableAttribute('class', $class);
56
    }
57
58
    /**
59
     * Change table style to striped.
60
     *
61
     * @return $this
62
     */
63
    public function stripedTable()
64
    {
65
        return $this->removeTableClass('table-hover')->addTableClass('table-striped');
66
    }
67
68
    /**
69
     * Change table style to hovered.
70
     *
71
     * @return $this
72
     */
73
    public function hoveredTable()
74
    {
75
        return $this->removeTableClass('table-striped')->addTableClass('table-hover');
76
    }
77
}
78