@props(['targets' => [], 'names' => [], 'meta' => [], 'id' => 'targetTable', 'highlightEpic' => null]) @php // Inlined (no per-cell sub-components) so large tables (thousands of rows) // render without exhausting memory. Client-side app.js handles filter/sort/page. $statusLabels = [ 'done' => 'Done', 'in_progress' => 'In progress', 'blocked' => 'Blocked', 'overdue' => 'Overdue', 'not_started' => 'Not started', 'unknown' => 'Unknown', ]; $whoName = function (?string $email) use ($names) { if (! $email) return '—'; if (! str_contains($email, '@')) return $email; return $names[$email] ?? \Illuminate\Support\Str::title(str_replace('.', ' ', explode('@', $email)[0])); }; @endphp
| Target story | Type | Parent | Project | Owner | Creator | Created | Updated | Period | Status |
|---|---|---|---|---|---|---|---|---|---|
| {{ $t->title }}@if ($t->jira_key) {{ $t->jira_key }} @endif |
{{ $t->story_type ?: 'Unspecified' }} | @if ($m && ($m['parent'] ?? null)){{ $m['parent'] }}@else —@endif | {{ $t->project }} | {{ $whoName($t->effective_owner) }} | {{ ($m['creator'] ?? null) ?: '—' }} | {{ ($m && ($m['created'] ?? null)) ? $m['created']->format('Y-m-d') : '—' }} | {{ ($m && ($m['updated'] ?? null)) ? $m['updated']->format('Y-m-d') : '—' }} | {{ $t->quarter ?: '—' }}@if ($t->month) / {{ $t->month }}@endif | {{ $sLabel }} |
| No stories match this filter. | |||||||||