112 lines
5.4 KiB
PHP
112 lines
5.4 KiB
PHP
@php
|
|
/** @var \App\Models\OperationRun $run */
|
|
$run = $this->run;
|
|
|
|
$scope = (string) data_get($run->context, 'runbook.scope', 'unknown');
|
|
$targetTenantId = data_get($run->context, 'runbook.target_tenant_id');
|
|
$reasonCode = data_get($run->context, 'reason.reason_code');
|
|
$reasonText = data_get($run->context, 'reason.reason_text');
|
|
|
|
$platformInitiator = data_get($run->context, 'platform_initiator', []);
|
|
@endphp
|
|
|
|
<x-filament-panels::page>
|
|
<div class="space-y-6">
|
|
<div class="rounded-lg border border-gray-200 bg-white p-4 dark:border-gray-800 dark:bg-gray-900">
|
|
<div class="flex items-start justify-between gap-4">
|
|
<div>
|
|
<div class="text-sm font-semibold text-gray-900 dark:text-gray-100">
|
|
Run #{{ (int) $run->getKey() }}
|
|
</div>
|
|
<div class="mt-1 text-sm text-gray-600 dark:text-gray-300">
|
|
{{ \App\Support\OperationCatalog::label((string) $run->type) }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="text-right text-xs text-gray-500 dark:text-gray-400">
|
|
<div>Started: {{ $run->started_at?->toDayDateTimeString() ?? '—' }}</div>
|
|
<div>Completed: {{ $run->completed_at?->toDayDateTimeString() ?? '—' }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-4 grid grid-cols-1 gap-3 sm:grid-cols-3">
|
|
<div class="rounded-md bg-gray-50 p-3 dark:bg-gray-800">
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">Status</div>
|
|
<div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">{{ (string) $run->status }}</div>
|
|
</div>
|
|
|
|
<div class="rounded-md bg-gray-50 p-3 dark:bg-gray-800">
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">Outcome</div>
|
|
<div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">{{ (string) $run->outcome }}</div>
|
|
</div>
|
|
|
|
<div class="rounded-md bg-gray-50 p-3 dark:bg-gray-800">
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">Scope</div>
|
|
<div class="mt-1 font-semibold text-gray-900 dark:text-gray-100">
|
|
@if ($scope === 'single_tenant')
|
|
Single tenant {{ is_numeric($targetTenantId) ? '#'.(int) $targetTenantId : '' }}
|
|
@elseif ($scope === 'all_tenants')
|
|
All tenants
|
|
@else
|
|
{{ $scope }}
|
|
@endif
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-4 text-sm text-gray-700 dark:text-gray-200">
|
|
<div class="grid grid-cols-1 gap-2 sm:grid-cols-2">
|
|
<div>
|
|
<span class="font-medium">Initiator:</span>
|
|
{{ (string) ($run->initiator_name ?? '—') }}
|
|
</div>
|
|
|
|
@if (is_array($platformInitiator) && ($platformInitiator['email'] ?? null))
|
|
<div class="sm:text-right">
|
|
<span class="font-medium">Platform user:</span>
|
|
{{ (string) ($platformInitiator['email'] ?? '') }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
@if (is_string($reasonCode) && is_string($reasonText) && trim($reasonCode) !== '' && trim($reasonText) !== '')
|
|
<div class="mt-3 rounded-md border border-gray-200 bg-gray-50 p-3 dark:border-gray-800 dark:bg-gray-800">
|
|
<div class="text-xs font-semibold text-gray-500 dark:text-gray-400">Reason</div>
|
|
<div class="mt-1 text-sm">
|
|
<span class="font-medium">{{ $reasonCode }}</span>
|
|
<span class="text-gray-600 dark:text-gray-300">—</span>
|
|
<span>{{ $reasonText }}</span>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
@if (! empty($run->summary_counts))
|
|
<div class="rounded-lg border border-gray-200 bg-white p-4 dark:border-gray-800 dark:bg-gray-900">
|
|
<div class="text-sm font-semibold text-gray-900 dark:text-gray-100">Summary counts</div>
|
|
<div class="mt-3">
|
|
@include('filament.partials.json-viewer', ['value' => $run->summary_counts])
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
@if (! empty($run->failure_summary))
|
|
<div class="rounded-lg border border-gray-200 bg-white p-4 dark:border-gray-800 dark:bg-gray-900">
|
|
<div class="text-sm font-semibold text-gray-900 dark:text-gray-100">Failures</div>
|
|
<div class="mt-3">
|
|
@include('filament.partials.json-viewer', ['value' => $run->failure_summary])
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="rounded-lg border border-gray-200 bg-white p-4 dark:border-gray-800 dark:bg-gray-900">
|
|
<div class="text-sm font-semibold text-gray-900 dark:text-gray-100">Context</div>
|
|
<div class="mt-3">
|
|
@include('filament.partials.json-viewer', ['value' => $run->context ?? []])
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</x-filament-panels::page>
|
|
|