cookiemc337/filament-progress-column

为 Filament 表格添加进度条列。

1.0.2 2024-04-18 07:18 UTC

This package is auto-updated.

Last update: 2024-09-18 08:08:45 UTC


README

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

此包提供了一个 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)。请参阅 许可文件 以获取更多信息。