mountInteractsWithTable(); } protected function getHeaderWidgets(): array { return [ OperationsKpiHeader::class, ]; } /** * @return array */ protected function getHeaderActions(): array { $operateHubShell = app(OperateHubShell::class); $actions = [ Action::make('operate_hub_scope_operations') ->label($operateHubShell->scopeLabel(request())) ->color('gray') ->disabled(), ]; $activeTenant = $operateHubShell->activeEntitledTenant(request()); if ($activeTenant instanceof Tenant) { $actions[] = Action::make('operate_hub_back_to_tenant_operations') ->label('Back to '.$activeTenant->name) ->icon('heroicon-o-arrow-left') ->color('gray') ->url(\App\Filament\Pages\TenantDashboard::getUrl(panel: 'tenant', tenant: $activeTenant)); $actions[] = Action::make('operate_hub_show_all_tenants') ->label('Show all tenants') ->color('gray') ->action(function (): void { Filament::setTenant(null, true); app(WorkspaceContext::class)->clearLastTenantId(request()); $this->removeTableFilter('tenant_id'); $this->redirect('/admin/operations'); }); } return $actions; } public function updatedActiveTab(): void { $this->resetPage(); } public function table(Table $table): Table { return OperationRunResource::table($table) ->query(function (): Builder { $workspaceId = app(WorkspaceContext::class)->currentWorkspaceId(request()); $activeTenant = app(OperateHubShell::class)->activeEntitledTenant(request()); $query = OperationRun::query() ->with('user') ->latest('id') ->when( $workspaceId, fn (Builder $query): Builder => $query->where('workspace_id', (int) $workspaceId), ) ->when( ! $workspaceId, fn (Builder $query): Builder => $query->whereRaw('1 = 0'), ) ->when( $activeTenant instanceof Tenant, fn (Builder $query): Builder => $query->where('tenant_id', (int) $activeTenant->getKey()), ); return $this->applyActiveTab($query); }); } private function applyActiveTab(Builder $query): Builder { return match ($this->activeTab) { 'active' => $query->whereIn('status', [ OperationRunStatus::Queued->value, OperationRunStatus::Running->value, ]), 'succeeded' => $query ->where('status', OperationRunStatus::Completed->value) ->where('outcome', OperationRunOutcome::Succeeded->value), 'partial' => $query ->where('status', OperationRunStatus::Completed->value) ->where('outcome', OperationRunOutcome::PartiallySucceeded->value), 'failed' => $query ->where('status', OperationRunStatus::Completed->value) ->where('outcome', OperationRunOutcome::Failed->value), default => $query, }; } }