@php $items = collect($items ?? []); $maxValue = max($items->pluck('value')->map(fn($value) => (float) $value)->max() ?? 0, 1); $totalValue = max($items->pluck('value')->map(fn($value) => (float) $value)->sum() ?? 0, 1); $chartClass = trim((string) ($chartClass ?? '')); $useCssPalette = (bool) ($useCssPalette ?? false); $preserveZeroBars = (bool) ($preserveZeroBars ?? true); @endphp
@foreach ($items as $item) @php $rawLabel = trim((string) ($item['label'] ?? '')); $labelParts = preg_split('/\s+/', $rawLabel, 2); $label = collect($labelParts)->map(fn($part) => e($part))->join('
'); $value = (float) ($item['value'] ?? 0); $height = $value <= 0 ? 0 : max(18, ($value / $maxValue) * 100); $percentage = isset($item['percentage']) ? (int) $item['percentage'] : ($totalValue > 0 ? round(($value / $totalValue) * 100) : 0); $barStyle = 'height: ' . $height . '%;'; if (!$useCssPalette) { $barStyle .= ' background: ' . ($item['color'] ?? '#9adbd8') . ';'; } @endphp
@if ($value > 0 || $preserveZeroBars)
{{ number_format($value, 0, ',', '.') }} {{ $percentage }}%
@endif
{!! $label !!}
@endforeach