cookiemc337 / filament-progress-column
为 Filament 表格添加进度条列。
Requires
- php: ^8.2
- filament/filament: ^3.0
- illuminate/contracts: ^11.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- nunomaduro/collision: ^8.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^10.0
- spatie/laravel-ray: ^1.26
README
此包提供了一个 ProgessColumn
,可用于在 Filament 表格中显示进度条。
安装
您可以通过 Composer 安装此包
composer require cookiemc337/filament-progress-column
如果您没有使用 filament/admin
包,您还应在 CSS 的顶部添加以下行
@import '../../vendor/cookiemc337/filament-progress-column/resources/dist/progress.css'
可选地,您可以使用以下方式发布视图
php artisan vendor:publish --tag="filament-progress-column-views"
用法
将 ProgressColumn
添加到您的表格中
use CookieMC337\FilamentProgressColumn\ProgressColumn; protected function getTableColumns(): array { return [ ProgressColumn::make('progress'), ]; }
这将渲染一个进度条,并使用 $record->progress
的值作为当前进度。
动态进度计算
如果您想动态计算进度,请将一个 Closure
提供给 ProgressColumn::progress()
方法。
protected function getTableColumns(): array { return [ ProgressColumn::make('progress') ->progress(function ($record) { return ($record->rows_complete / $record->total_rows) * 100; }), ]; }
轮询
如果您希望进度条在一段时间后更新,请调用 ProgressBar::poll()
方法并提供一个有效的修改器字符串作为 wire:poll
指令。
protected function getTableColumns(): array { return [ ProgressColumn::make('progress') ->poll('5s') ]; }
这将导致添加一个 wire:poll.5s
指令到列中,您的进度条值将每5秒更新一次。
动态轮询
可能存在一些场景,您只想在满足某些条件时轮询。这可以通过从 Closure
返回 ?string
来实现。
protected function getTableColumns(): array { return [ ProgressColumn::make('progress') ->poll(function ($record) { return $record->progress < 100 ? '5s' : null; }) ]; }
现在进度条只有在进度小于100的情况下才会每5秒更新一次。
颜色
默认情况下,进度条将与您的 primary
颜色相同。如果您想更改此设置,请向 ProgressBar::color()
提供一个新的字符串。
protected function getTableColumns(): array { return [ ProgressColumn::make('progress') ->color('warning'), ]; }
使用自定义的 Filament 主题,您可以将 './app/Filament/Resources/*.php'
添加到 tailwind.config.js
中的 content
部分,以便不会清除颜色并创建类似下面的 自定义 Filament 主题
protected function getTableColumns(): array { return [ ProgressColumn::make('progress') ->color('bg-gradient-to-r from-indigo-500 via-purple-500 to-pink-500'), ]; }
动态颜色计算
如果您想动态计算颜色,请将一个 Closure
提供给 ProgressColumn::color()
方法。
protected function getTableColumns(): array { return [ ProgressColumn::make('progress')->color(function ($record){ return $record->progress > 50 ? 'primary' : 'success'; }) ]; }
测试
composer test
变更日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 以获取详细信息。
安全漏洞
请查看我们关于如何报告安全漏洞的 安全策略。
鸣谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。