Tabulka
PollColumn
Pokročilý auto-obnovující sloupec se stavovými automaty, sledováním postupu a pollingem podle podmínky. Ideální pro joby na pozadí, živý stav, progress bary.
Na této stránce
Pokročilý auto-obnovující sloupec se stavovými automaty, sledováním postupu a pollingem podle podmínky. Ideální pro joby na pozadí, živý stav, progress bary.
use NyonCode\WireTable\Columns\PollColumn;
Základní polling
PollColumn::make('status') ->intervalSeconds(5) ->stateDisplays([ 'pending' => 'Waiting...', 'processing' => 'In Progress', 'completed' => 'Done', 'failed' => 'Failed', ]) ->stateColors([ 'pending' => 'gray', 'processing' => 'info', 'completed' => 'success', 'failed' => 'danger', ]) ->stateIcons([ 'pending' => 'clock', 'processing' => 'refresh', 'completed' => 'check', 'failed' => 'x', ])
Preset stavu jobu
PollColumn::make('job_status') ->forJobStatus() // předkonfigurováno pro stavy Laravel Jobu ->intervalSeconds(3) ->stopWhen(fn ($record) => in_array($record->job_status, ['completed', 'failed']))
Preset progress baru
PollColumn::make('progress') ->forProgress() // UI progress baru (0-100) ->intervalSeconds(2) ->stopWhen(fn ($record) => $record->progress >= 100)
Podmíněný polling
PollColumn::make('sync_status') ->intervalSeconds(5) ->pollWhile(fn ($record) => $record->sync_state === 'syncing') // pollovat jen během syncování ->pollForever(false) // zastavit, když podmínka selže
Limit počtu pollů neexistuje.
maxPolls()ho sliboval a nevynucoval nic: sloupec nevidí, kolikrát už polloval — počítadlo by muselo žít v hostiteli, který ho nikdy nevedl. Polling omez přesstopWhen()/pollWhile()/stopOnComplete(), což jsou podmínky, které sloupec vyhodnotit umí.
Vlastní resolvování stavu
PollColumn::make('deployment') ->resolveStateUsing(fn ($record) => $record->fresh()->deployment_status) ->intervalSeconds(10)
Badge režim
PollColumn::make('status') ->badge() ->colors([ 'online' => 'success', 'offline' => 'danger', 'degraded' => 'warning', ]) ->intervalSeconds(30)
Mapa je klíčovaná stavem, stejně jako u BadgeColumn — a stejně jako
->stateColors() výše. Stav, který mapa neuvádí, spadne zpět na vlastní
->color() sloupce, a když ani ten není nastavený, na gray. Pokud je
pollovaný atribut enum cast implementující kontrakt HasColor, obarví si badge
sám i bez mapy.
Indikátor načítání
PollColumn::make('data') ->loadingIndicator('spinner') // zobrazit během fetche ->keepContentWhileLoading() // neproblikávat prázdno ->animateTransitions() // plynulé změny stavu
Callbacky
PollColumn::make('batch_progress') ->intervalSeconds(3) ->stopWhen(fn ($record) => $record->batch_progress === 'done')
Zastavení na koncovém stavu
stopOnComplete() je vypsaná obvyklá varianta: zastavit, jakmile stavový sloupec
dosáhne koncové hodnoty.
PollColumn::make('status') ->stopOnComplete() // status v completed|failed|cancelled ->stopOnComplete('state', ['done']) // jiný sloupec a stavy
Callbacky dostanou záznam, ne stav buňky —
stopWhen(fn ($record) => …). Closure porovnávající svůj argument s řetězcem by se nikdy netrefila a sloupec by polloval donekonečna.
API PollColumn
// Řízení pollingu->interval(int|Closure $milliseconds) // raw milisekundy (např. 5000)->intervalSeconds(int|Closure $seconds) // sekundy (použijte pro intervaly ve stylu '5s')->pollForever(bool $forever = true) // nezastavovat->stopWhen(Closure $fn) // fn($record, $column) => bool — zastaví, jakmile vrátí true->stopOnComplete(string $statusColumn = 'status', array $completeStates = ['completed', 'failed', 'cancelled'])->pollWhile(Closure $fn) // fn($record, $column) => bool — polluje, dokud vrací true->pollWhilePending() // zkratka: pollovat během 'pending' // Zobrazení stavu->stateDisplays(array $map) // ['state' => 'display text', ...]->displayForState(string $state, Closure $display)->defaultState(string|Closure $state)->stateClasses(array $map) // ['state' => 'css classes', ...]->stateIcons(array $map) // ['state' => 'icon name', ...]->stateColors(array $map) // ['state' => 'color name', ...]->resolveStateUsing(Closure $fn) // vlastní resolver stavu // Presety->forJobStatus() // preset životního cyklu jobu->forProgress() // preset progress baru // UI volby->badge(bool $badge = true) // vykreslit jako badge->colors(array $map) // ['state_value' => 'color_name'|Color, ...]->colorUsing(Closure $fn) // fn($state) => 'color_name'|Color|null->size(string $size) // velikost badge->loadingIndicator(?string $type) // 'spinner', 'dots', 'pulse'->withoutLoadingIndicator()->keepContentWhileLoading(bool $keep = true)->animateTransitions(bool $animate = true) // Na úrovni řádku->rowLevelPolling(bool $rowLevel = true) // pollovat per řádek (ne celou tabulku) // Callbacky->refreshMethod(string $method) // Livewire metoda při obnovení