@extends('reports.pdf.layout') @section('title', $data['meta']['title']) @php $meta = $data['meta']; $k = $data['kpis']; $rows = $data['rows']; $fmtNum = function ($v, $unit = '') { if ($v === null) return '—'; $s = is_numeric($v) ? number_format((float) $v, (is_int($v) || ((float) $v) == (int) $v) ? 0 : 1, ',', ' ') : (string) $v; return trim($s . ' ' . $unit); }; // Horizontal-bar geometry — score /100 per garage, ranked desc. $barCount = max(1, count($rows)); $rowH = 22; $svgPad = 8; $labelW = 140; $svgW = 480; $svgH = $svgPad * 2 + $rowH * $barCount; $maxScore = 100; $trackW = $svgW - $labelW - $svgPad - 60; // leave 60pt for the value text $scoreColor = function ($s) { if ($s >= 80) return '#10B981'; if ($s >= 60) return '#FBBF24'; return '#EF4444'; }; $scoreTone = function ($s) { if ($s >= 80) return 'success'; if ($s >= 60) return 'warning'; return 'danger'; }; @endphp @section('content')
Aucun OT garage sur la période.
@endif| Garage | OT | Délai (j) | Coût moy. | Récl. | Score |
|---|---|---|---|---|---|
| {{ $r['garage'] }} | {{ $r['ot'] }} | {{ $r['delay_days'] !== null ? number_format($r['delay_days'], 1, ',', ' ') . ' j' : '—' }} | {{ $r['avg_cost'] !== null ? number_format($r['avg_cost'], 0, ',', ' ') . ' €' : '—' }} | À venir | {{ $r['score'] }} |
Note clients : module évaluation à venir. Score basé sur le délai moyen et le coût relatif.
@elseAucun garage à afficher.
@endif @endsection