@push('styles') @endpush
@include('partials.camera-filters', ['action' => route('cameras.map')])

Status legend

Site online Site degraded Site offline Camera online Camera offline Camera unknown
@php $mapSites = $cameras ->filter(fn ($camera) => $camera->site !== null) ->groupBy('site_id') ->map(function ($siteCameras) { $site = $siteCameras->first()->site; if (! filled($site?->latitude) || ! filled($site?->longitude)) { return null; } return [ 'id' => $site->id, 'name' => $site->name, 'organisation_name' => $site->organisation?->name, 'latitude' => $site->latitude, 'longitude' => $site->longitude, 'status' => \App\Models\Site::statusForCameras($siteCameras), 'what3words' => $site->what3words, 'camera_count' => $siteCameras->count(), ]; }) ->filter() ->values(); $mapCameras = $cameras ->filter(fn ($camera) => filled($camera->latitude) && filled($camera->longitude)) ->map(function ($camera) { return [ 'id' => $camera->id, 'name' => $camera->name, 'site_id' => $camera->site_id, 'site_name' => $camera->site?->name ?: $camera->site_name, 'organisation_name' => $camera->site?->organisation?->name, 'location_name' => $camera->location_name, 'latitude' => $camera->latitude, 'longitude' => $camera->longitude, 'status' => $camera->status ?: ($camera->is_online ? 'online' : 'unknown'), 'show_url' => route('cameras.show', $camera), 'web_ui_url' => $camera->web_ui_url, 'last_seen_at' => $camera->last_seen_at?->toIso8601String(), 'ownership_type' => $camera->ownership_type, ]; }) ->values(); @endphp @push('scripts') @endpush