ryangjchandler/filament-progress-column

为您的 Filament 表格添加进度条列。

v1.0.0 2024-03-25 23:33 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包提供了一个 ProgessColumn,可以用于在 Filament 表格中显示进度条。

安装

您可以通过 Composer 安装此包

composer require ryangjchandler/filament-progress-column

如果您没有使用 filament/admin 包,您还应在 CSS 文件顶部添加以下行

@import '../../vendor/ryangjchandler/filament-progress-column/resources/dist/progress.css'

可选地,您可以使用以下方式发布视图

php artisan vendor:publish --tag="filament-progress-column-views"

用法

ProgressColumn 添加到您的表格中

use RyanChandler\FilamentProgressColumn\ProgressColumn;

protected function getTableColumns(): array
{
    return [
        ProgressColumn::make('progress'),
    ];
}

这将渲染一个进度条,并使用 $record->progress 的值作为当前进度。

动态进度计算

如果您希望动态计算进度,请为 ProgressColumn::progress() 方法提供一个 Closure

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 部分以避免颜色被清除,并创建类似

protected function getTableColumns(): array
{
    return [
        ProgressColumn::make('progress')
            ->color('bg-gradient-to-r from-indigo-500 via-purple-500 to-pink-500'),
    ];
}

动态颜色计算

如果您想动态计算颜色,请为 ProgressColumn::color() 方法提供一个 Closure

protected function getTableColumns(): array
{
    return [
        ProgressColumn::make('progress')->color(function ($record){
            return $record->progress > 50 ? 'primary' : 'success';
        })
    ];
}

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

有关如何报告安全漏洞,请参阅 我们的安全策略

致谢

许可协议

MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件