@php $distributions = [ ['Sumber Trafik', $report->traffic, 'source_name', 'visitor_count'], ['Pelayar Web', $report->browsers, 'browser_name', 'visit_count'], ['Jenis Peranti', $report->devices, 'device_type', 'visit_count'], ['Geografi', $report->geography, 'country', 'visitor_count'], ]; $totalEmissions = $report->carbon->sum('calculated_emissions_gco2e'); @endphp @if ($report->visitors)
@endif @if ($report->visitors?->monthly_breakdown) @php // Ordered by the calendar, not by however the JSON keys happen to // be stored — an imported report can hold them alphabetically. $stored = $report->visitors->monthly_breakdown; $breakdown = collect(\App\Services\VisitorTrendBuilder::MONTH_KEYS) ->mapWithKeys(fn ($month) => [$month => (int) ($stored[$month] ?? 0)]); $peak = max(1, $breakdown->max()); @endphp
@foreach ($breakdown as $month => $value)
@endforeach
@foreach ($breakdown as $month => $value) {{ ucfirst($month) }} @endforeach
@endif
@foreach ($distributions as [$title, $rows, $labelKey, $countKey]) @if ($rows->isNotEmpty())
@php $max = max(1, $rows->max($countKey)); @endphp @foreach ($rows->sortByDesc($countKey) as $row)
{{ $row->{$labelKey} }}
{{ number_format($row->{$countKey}) }} ({{ $row->percentage }}%)
@endforeach
@endif @endforeach
@if ($report->topPages->isNotEmpty() || $report->searchQueries->isNotEmpty())
@if ($report->topPages->isNotEmpty()) @foreach ($report->topPages->sortByDesc('visit_count') as $page)

{{ $page->page_title ?: $page->page_url }}

{{ $page->page_url }}

{{ number_format($page->visit_count) }} @endforeach
@endif @if ($report->searchQueries->isNotEmpty()) @foreach ($report->searchQueries->sortByDesc('search_count') as $query) {{ $query->query_text }} {{ number_format($query->search_count) }} @endforeach @endif
@endif @if ($report->incidents->isNotEmpty())
@foreach ($report->incidents as $incident)
{{ $incident->day_number }}
@endforeach
@php $active = $report->incidents->where('has_incident', true); @endphp @if ($active->isNotEmpty())
@foreach ($active as $incident)
Hari {{ $incident->day_number }}

{{ $incident->title }}

@if ($incident->description)

{{ $incident->description }}

@endif
@endforeach
@endif
@endif @if ($report->security->isNotEmpty()) @foreach ($report->security as $row) {{ $row->website->displayName() }} {{ $row->ssl_status ?? '—' }} {{ $row->ssl_expiry?->format('d M Y') ?? '—' }} {{ $row->cms_name ?? '—' }} {{ $row->cms_version ?? '—' }} @if ($row->isOutdated()) Perlu kemas kini @endif {{ $row->cms_latest_version ?? '—' }} @endforeach @endif @if ($report->carbon->isNotEmpty()) @foreach ($report->carbon as $row) {{ $row->website->displayName() }} {{ number_format($row->page_weight_kb, 1) }} KB {{ number_format($row->monthly_pageviews) }} {{ number_format($row->data_transfer_gb, 2) }} GB {{ number_format($row->emissionsKg(), 2) }} kg {{ $row->gramsPerVisit() }} g {{ $row->treesPerYear() }} @endforeach @endif @php $sections = $report->sectionContent(); @endphp @if (collect($sections)->filter()->isNotEmpty())
@foreach (\App\Models\MonthlyReport::SECTIONS as $key => $label) @if (! empty($sections[$key])) @endif @endforeach
@endif