IPv6DataTable   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 66
ccs 5
cts 5
cp 1
rs 10
c 1
b 0
f 0
wmc 5
lcom 1
cbo 3

4 Methods

Rating   Name   Duplication   Size   Complexity  
A ajax() 0 12 2
A query() 0 6 1
A getColumns() 0 17 1
A filename() 0 4 1
1
<?php
2
/**
3
 * app/DataTables/General/IPv6DataTable.php
4
 *
5
 * Datatable for ipv6 search
6
 *
7
 * This program is free software: you can redistribute it and/or modify
8
 * it under the terms of the GNU General Public License as published by
9
 * the Free Software Foundation, either version 3 of the License, or
10
 * (at your option) any later version.
11
 *
12
 * This program is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
15
 * GNU General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU General Public License
18
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
 *
20
 * @package    LibreNMS
21
 * @link       http://librenms.org
22
 * @copyright  2016 Neil Lathwood
23
 * @author     Neil Lathwood <[email protected]>
24
 */
25
26
namespace App\DataTables\General;
27
28
use App\DataTables\BaseDataTable;
29
use App\Models\General\IPv6;
30
31
class IPv6DataTable extends BaseDataTable
32
{
33
34
    /**
35
     * Display ajax response.
36
     *
37
     * @return \Illuminate\Http\JsonResponse
38
     */
39
    public function ajax()
40
    {
41
        return $this->datatables
42
            ->eloquent($this->query())
43
            ->editColumn('hostname', 'datatables.generic.hostname')
44
            ->editColumn('ifName', function ($data) {
45
                $ifName = is_null($data->ifName) ? trans('devices.text.deleted') : $data->ifName;
46
                return '<a href="'.url("devices/".$data->device_id."/ports/".$data->port_id).'">'.$ifName.'</a>';
47
            })
48
            ->rawColumns(['hostname', 'ifName'])
49
            ->make(true);
50
    }
51
52
    /**
53
     * Get the query object to be processed by datatables.
54
     *
55
     * @return \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder
56
     */
57
    public function query()
58
    {
59
        $data = IPv6::join('ports', 'ports.port_id', '=', 'ipv6_addresses.port_id')->join('devices', 'devices.device_id', '=', 'ports.device_id')->select('ipv6_addresses.*', 'ports.*', 'devices.*');
60
        //FIXME We should use this once laravel-datatables supports it upstream $data = IPv6::with('port.device')->select('ipv6_addresses.*');
61
        return $this->applyScopes($data);
62
    }
63
64
    /**
65
     * Get columns.
66
     *
67
     * @return array
68
     */
69 1
    public function getColumns()
70
    {
71
        return [
72
            'hostname'  => [
73 1
                'title' => trans('devices.label.hostname'),
74
            ],
75
            'ifName'    => [
76 1
                'title' => trans('general.text.interface'),
77
            ],
78
            'ipv6_address' => [
79 1
                'title'    => trans('general.text.address'),
80
            ],
81
            'ifDescr'   => [
82 1
                'title' => trans('general.text.port_descr'),
83
            ],
84
        ];
85
    }
86
87
    /**
88
     * Get filename for export.
89
     *
90
     * @return string
91
     */
92
    protected function filename()
93
    {
94
        return 'ipv6';
95
    }
96
}
97