@foreach ($widgets as $widget)
@php
$colSpan = match($widget->size) {
'full' => 'sm:col-span-2 lg:col-span-3',
'half' => 'sm:col-span-1 lg:col-span-2' ,
default => '',
};
$data = $widgetData[$widget->id] ?? null;
@endphp
{{ $widget->title }}
@if ($widget->widget_type === 'metric')
@php $metricLabel = \App\Models\DashboardWidget::$metrics[$widget->config['metric'] ?? 'page_views'] ?? 'Metric'; @endphp
@if (($widget->config['metric'] ?? '') === 'bounce_rate')
{{ $data }}%
@elseif (($widget->config['metric'] ?? '') === 'avg_duration')
{{ gmdate('i:s', (int) $data) }}
@else
{{ number_format($data) }}
@endif
{{ $metricLabel }}
@elseif ($widget->widget_type === 'chart')
@elseif (in_array($widget->widget_type, ['top_pages', 'top_sources', 'browsers', 'countries', 'events']))
@if ($data && $data->isNotEmpty())
@foreach ($data->take(5) as $row)
{{ $row->path ?? $row->source ?? $row->browser ?? $row->country ?? $row->name ?? '—' }}
{{ number_format($row->views ?? $row->sessions ?? $row->visitors ?? $row->total ?? 0) }}
@endforeach
@else
No data for this period.
@endif
@elseif ($widget->widget_type === 'new_vs_returning')
{{ $data['new_pct'] ?? 0 }}%
New
{{ $data['returning_pct'] ?? 0 }}%
Returning
@elseif ($widget->widget_type === 'conversions')
@if ($data && $data->isNotEmpty())
@foreach ($data->take(5) as $goal)
{{ $goal->name }}
{{ number_format($goal->conversions) }}
@endforeach
@else
No conversions for this period.
@endif
@endif