@php $rygOpts = ['red','yellow','green','super_green','emerald']; $rygChip = function ($ryg) use ($rygColors, $rygLabels) { if (! $ryg || ! isset($rygColors[$ryg])) return ''; [$bg,$fg] = $rygColors[$ryg]; return ''.($rygLabels[$ryg] ?? $ryg).''; }; @endphp

Performance · Job Scorecard

@if ($isLead) @endif @if ($scorecard) @php $allIds = $scorecard->objectives->pluck('id')->values()->all(); @endphp @endif
@if (! $scorecard)

No scorecard imported for {{ $names[$member] ?? $member }} · {{ $quarter }}. Import a Performance Appraisal →

@else {{-- Header --}}
{{ $scorecard->overall_score !== null ? number_format($scorecard->overall_score, 2) : '—' }} {!! $rygChip($scorecard->overall_ryg) !!} overall weighted score (out of 5)
{{-- Sections --}} @php // Scale-column header meta: level => [label, bg, fg] (Emerald darkest → Red). $scaleHead = [ 5 => ['Emerald', '#166534', '#ffffff'], 4 => ['Super Green', '#16a34a', '#ffffff'], 3 => ['Green', '#4ade80', '#064e3b'], 2 => ['Yellow', '#facc15', '#1f2937'], 1 => ['Red', '#dc2626', '#ffffff'], ]; $rygLevel = ['emerald' => 5, 'super_green' => 4, 'green' => 3, 'yellow' => 2, 'red' => 1]; @endphp @foreach ($sectionsMeta as $key => $meta) @php $objs = $grouped[$key] ?? collect(); // Group consecutive rows by objective title (title is a merged cell over its metrics). $groups = []; foreach ($objs as $o) { if (! $groups || end($groups)['title'] !== (string) $o->title) { $groups[] = ['title' => (string) $o->title, 'rows' => []]; } $groups[count($groups) - 1]['rows'][] = $o; } @endphp

{{ $meta['label'] }} · weight {{ (int) ($meta['weight'] * 100) }}%

section score: {{ isset($sectionScores[$key]) ? number_format($sectionScores[$key], 2) : '—' }} / 5
@forelse ($groups as $gi => $g) {{-- Desired-result badge; its metrics follow below. --}} @foreach ($g['rows'] as $o) {{-- Collapsible RYG scale for this metric --}} @endforeach @empty @endforelse
Metrics Weight Rating Score Live (linked) Result Evidence
{{ $gi + 1 }} · {{ $g['title'] }}
% @php [$fb,$ff] = $rygColors[$o->ryg] ?? ['', '']; @endphp {{ $o->score !== null ? number_format($o->score, 2) : '—' }} @if ($lv = $live[$o->id] ?? null) @php [$lb,$lf] = $rygColors[$lv['ryg']] ?? ['#eef2f7', '#334155']; @endphp
Live: {{ $lv['value'] }}
@endif
@foreach ($scaleHead as $lvl => [$lbl, $bg, $fg]) @php $achieved = ($rygLevel[$o->ryg] ?? null) === $lvl; @endphp
{{ $lvl }} · {{ $lbl }}
{{ $o->{'scale_'.$lvl} ?: '—' }}
@endforeach
No {{ strtolower($meta['label']) }} rows imported.
@endforeach {{-- Feedback --}} @if ($scorecard->feedback->count())

Performance feedback

@foreach ($scorecard->feedback as $f)
@endforeach
@endif @endif