@extends('layouts.app') @section('title', 'Fibre plant') @section('content')

Fibre plant

{{ $pons->total() }} PON port(s) matching your filters.

All ONTs + Add PON port
@php $utilisation = $totals['ports'] > 0 ? round($totals['used'] / $totals['ports'] * 100, 1) : 0; @endphp
@include('components.kpi', ['label' => 'Splitter ports', 'value' => number_format($totals['ports']), 'variant' => 'info']) @include('components.kpi', ['label' => 'Ports in use', 'value' => number_format($totals['used']).' ('.$utilisation.'%)']) @include('components.kpi', ['label' => 'ONTs on plant', 'value' => number_format($totals['onus'])]) @include('components.kpi', ['label' => 'Ports ≥90% full', 'value' => (string) $totals['saturated'], 'variant' => $totals['saturated'] ? 'bad' : 'good'])
@if ($pons->isEmpty()) @include('components.empty-state', [ 'icon' => '🔌', 'title' => 'No PON ports recorded', 'message' => 'Register the splitter ports on your OLTs to track utilisation and the ONTs hanging off them.', ]) @else @foreach ($pons as $pon) @php $pct = $pon->ports_total > 0 ? round($pon->ports_used / $pon->ports_total * 100, 1) : 0; $bar = $pct >= 100 ? 'bad' : ($pct >= 90 ? 'warn' : 'good'); @endphp @endforeach
OLTPON portSplitterCabinet SplitUtilisation ONTsDistanceStatus
{{ $pon->olt?->name ?: '—' }} {{ $pon->pon_port }} {{ $pon->splitter ?: '—' }} {{ $pon->cabinet ?: '—' }} 1:{{ $pon->split_ratio }}
{{ $pon->ports_used }} / {{ $pon->ports_total }} ({{ $pct }}%)
{{ $pon->onus->count() }} {{ $pon->distance_km ? $pon->distance_km.' km' : '—' }} {{ title_case_words($pon->status) }} Open Edit
@endif
@if ($pons->hasPages())
{{ $pons->links('partials.pagination') }}
@endif
@endsection