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

Builder   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 1
cbo 2
dl 0
loc 70
ccs 0
cts 31
cp 0
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A stripedTable() 0 4 1
A hoveredTable() 0 4 1
A setTableId() 0 4 1
A addTableClass() 0 10 2
A removeTableClass() 0 13 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