. * * @link https://www.librenms.org * * @copyright 2020 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Device\Tabs; use App\Models\Device; use Carbon\Carbon; use Illuminate\Http\Request; use LibreNMS\Config; use LibreNMS\Interfaces\UI\DeviceTab; use LibreNMS\Util\Smokeping; class LatencyController implements DeviceTab { public function visible(Device $device): bool { return Config::get('smokeping.integration') || $device->getAttrib('override_icmp_disable') !== 'true'; } public function slug(): string { return 'latency'; } public function icon(): string { return 'fa-line-chart'; } public function name(): string { return __('Latency'); } public function data(Device $device, Request $request): array { $from = $request->get('dtpickerfrom', Carbon::now(session('preferences.timezone'))->subDays(2)->format(Config::get('dateformat.byminute'))); $to = $request->get('dtpickerto', Carbon::now(session('preferences.timezone'))->format(Config::get('dateformat.byminute'))); $smokeping = new Smokeping($device); $smokeping_tabs = []; if ($smokeping->hasInGraph()) { $smokeping_tabs[] = 'in'; } if ($smokeping->hasOutGraph()) { $smokeping_tabs[] = 'out'; } return [ 'from' => $from, 'to' => $to, 'smokeping' => $smokeping, 'smokeping_tabs' => $smokeping_tabs, ]; } }