@props([ 'chart', // ['curves'=>[['name','plot'=>[...]],...], 'xMax', 'yMax'] 'q' => null, // zadane Q - pionowa linia robocza 'xLabel' => 'Q [m³/h]', 'yLabel' => 'H [m]', ]) @php $w = 760; $h = 360; $padL = 52; $padR = 16; $padT = 16; $padB = 34; $plotW = $w - $padL - $padR; $plotH = $h - $padT - $padB; $xMax = max(0.0001, (float) $chart['xMax']); $yMax = max(0.0001, (float) $chart['yMax']); $sx = fn ($x) => $padL + ($x / $xMax) * $plotW; $sy = fn ($y) => $padT + $plotH - ($y / $yMax) * $plotH; $fmt = fn ($v) => $v >= 100 ? number_format($v, 0, ',', ' ') : ($v >= 10 ? number_format($v, 1, ',', '') : number_format($v, 2, ',', '')); @endphp {{-- Siatka + etykiety osi --}} @for ($g = 0; $g <= 4; $g++) @php $gy = $padT + $plotH * $g / 4; $vy = $yMax * (1 - $g / 4); @endphp {{ $fmt($vy) }} @endfor @for ($g = 0; $g <= 5; $g++) @php $gx = $padL + $plotW * $g / 5; $vx = $xMax * $g / 5; @endphp {{ $fmt($vx) }} @endfor {{-- Osie --}} {{-- Linia robocza przy zadanym Q --}} @if ($q !== null && $q > 0 && $q <= $xMax) Q = {{ $fmt($q) }} @endif {{-- Nałożone krzywe H wszystkich dopasowanych pomp (kolorowe segmenty stref Q) --}} @foreach ($chart['curves'] as $curve) @foreach ($curve['plot']['segments'] as $seg) @php $poly = collect($seg['points'])->map(fn ($p) => round($sx($p['x']), 1).','.round($sy($p['y']), 1))->implode(' '); @endphp @endforeach {{-- Nazwa pompy przy końcu krzywej --}} @php $last = collect($curve['plot']['raw'])->last(); @endphp @if ($last) {{ $curve['name'] }} @endif @endforeach {{-- Etykiety osi --}} {{ $yLabel }} {{ $xLabel }}