> */ public array $recentClicks = []; public int $totalToday = 0; public int $workspaceId = 0; public function mount(): void { /** @var Workspace $workspace */ $workspace = app('current_workspace'); $this->workspaceId = $workspace->id; $this->totalToday = Click::where('workspace_id', $workspace->id) ->whereDate('clicked_at', today()) ->count(); } /** @param array $data */ #[On('echo:workspace.{workspaceId}.analytics,click.recorded')] public function handleNewClick(array $data): void { array_unshift($this->recentClicks, $data); $this->recentClicks = array_slice($this->recentClicks, 0, 10); $this->totalToday++; } public function render(): View { /** @var Workspace $workspace */ $workspace = app('current_workspace'); $totalClicks = Click::where('workspace_id', $workspace->id)->count(); $last30 = Click::where('workspace_id', $workspace->id) ->where('clicked_at', '>=', now()->subDays(30))->count(); $byCountry = Click::where('workspace_id', $workspace->id) ->whereNotNull('country') ->selectRaw('country, COUNT(*) as total') ->groupBy('country') ->orderByDesc('total') ->limit(5) ->get(); $byDevice = Click::where('workspace_id', $workspace->id) ->selectRaw('device, COUNT(*) as total') ->groupBy('device') ->orderByDesc('total') ->get(); return view('livewire.pages.analytics.index', compact('totalClicks', 'last30', 'byCountry', 'byDevice')) ->layout('layouts.nimuli-app', ['title' => 'Analytics']); } }