@props(['slices', 'label' => 'Répartition', 'stacked' => false]) @php // $slices : liste de ['name', 'value'] triée ; au-delà de 6 parts, le reste est regroupé en « Autres ». $palette = ['#12388a', '#f97316', '#0ea5e9', '#16a34a', '#a855f7', '#eab308', '#94a3b8']; $slices = collect($slices)->values(); if ($slices->count() > 7) { $slices = $slices->take(6)->push(['name' => 'Autres', 'value' => $slices->slice(6)->sum('value')]); } $total = (int) $slices->sum('value'); $r = 70; $c = 2 * M_PI * $r; $offset = 0; @endphp
! $stacked])> {{ $label }} @if ($total > 0) @foreach ($slices as $i => $slice) @php $len = $c * $slice['value'] / $total; @endphp @if ($len > 0) {{ $slice['name'] }} : {{ \App\Support\Money::format($slice['value']) }} ({{ round($slice['value'] * 100 / $total) }} %) @endif @php $offset += $len; @endphp @endforeach @endif Total {{ \App\Support\Money::compact($total) }}