@extends('layouts.app') @section('title', 'Mapa de Red Visual') @push('styles') @endpush @section('content')
Mapa de Red FTTH
Vista interactiva — haz clic en un puerto para ver detalles
Libre Ocupado {{ $totalConexiones }} conexiones
{{-- TABS --}} {{-- OLT --}}
@forelse($oltSlots as $slot => $puertos) @php $libres=$puertos->where('estado','libre')->count(); $ocupados=$puertos->where('estado','ocupado')->count(); $total=$puertos->count(); $pct=$total>0?round(($ocupados/$total)*100):0; @endphp
OLT1 — SLOT {{ sprintf('%02d',$slot) }} {{ $total }}p
{{ $libres }} libres | {{ $ocupados }} ocupados | {{ $pct }}%
PON @foreach($puertos as $p) @endforeach
@empty
Sin puertos OLT.
@endforelse
{{-- EDFA --}}
@forelse($edfaGrupos as $num => $puertos) @php $libres=$puertos->where('estado','libre')->count(); $ocupados=$puertos->where('estado','ocupado')->count(); $total=$puertos->count(); $pct=$total>0?round(($ocupados/$total)*100):0; @endphp
EDFA{{ $num }} {{ $total }}p
{{ $libres }} libres | {{ $ocupados }} ocupados | {{ $pct }}%
@foreach($puertos->chunk(16) as $fila)
{{ sprintf('%02d',$fila->first()->puerto) }}-{{ sprintf('%02d',$fila->last()->puerto) }} @foreach($fila as $p) @endforeach
@endforeach
@empty
Sin equipos EDFA.
@endforelse
{{-- ODF --}}
@forelse($odfGrupos as $num => $puertos) @php $libres=$puertos->where('estado','libre')->count(); $ocupados=$puertos->where('estado','ocupado')->count(); $total=$puertos->count(); $pct=$total>0?round(($ocupados/$total)*100):0; $tieneSlots=$puertos->first()->slot!==null; @endphp
ODF{{ $num }} @if($tieneSlots)Slots@endif {{ $total }}p
{{ $libres }} libres | {{ $ocupados }} ocupados | {{ $pct }}%
@if($tieneSlots) @foreach($puertos->groupBy('slot') as $sl => $sp)
S{{ sprintf('%02d',$sl) }} @foreach($sp as $p) @endforeach
@endforeach @else @foreach($puertos->chunk(16) as $fila)
{{ sprintf('%02d',$fila->first()->puerto) }}-{{ sprintf('%02d',$fila->last()->puerto) }} @foreach($fila as $p) @endforeach
@endforeach @endif
@empty
Sin equipos ODF.
@endforelse
{{-- VISTA COMPLETA (3 columnas) --}}
OLT
@foreach($oltSlots as $slot => $puertos)
S{{ sprintf('%02d',$slot) }}
{{ $puertos->where('estado','libre')->count() }}L / {{ $puertos->where('estado','ocupado')->count() }}O
@foreach($puertos as $p) @endforeach
@endforeach
EDFA
@foreach($edfaGrupos as $num => $puertos)
EDFA{{ $num }}
{{ $puertos->where('estado','libre')->count() }}L / {{ $puertos->where('estado','ocupado')->count() }}O
@foreach($puertos as $p) @endforeach
@endforeach
ODF
@foreach($odfGrupos as $num => $puertos) @php $ts = $puertos->first()->slot !== null; @endphp
ODF{{ $num }}
{{ $puertos->where('estado','libre')->count() }}L / {{ $puertos->where('estado','ocupado')->count() }}O
@if($ts) @foreach($puertos->groupBy('slot') as $sl => $sp)
S{{ sprintf('%02d',$sl) }}
@foreach($sp as $p) @endforeach
@endforeach @else
@foreach($puertos as $p) @endforeach
@endif
@endforeach
{{-- TOOLTIP FLOTANTE --}}
Puerto disponible
Etiqueta
Cliente
Zona
Fecha
Ver conexión completa
ESC o clic fuera para cerrar
@endsection @push('scripts') @endpush