discoverydesign/filament-gaze

查看谁正在查看Filament PHP中的资源。

1.1.12 2024-09-13 10:58 UTC

README

👀 查看谁正在查看Filament PHP中的资源 🔭

Marketing Banner

Packagist Version Total Downloads

演示

Gaze Demo Video

此软件包允许您显示其他用户何时在Filament PHP中查看相同的资源。

https://packagist.org.cn/packages/discoverydesign/filament-gaze

功能

  • 能够查看还有谁正在查看资源。
  • 能够将资源锁定给一个编辑器。
  • 能够条件性地允许用户控制已锁定的资源。

如何使用

  1. 使用 composer require discoverydesign/filament-gaze 安装软件包
  2. \DiscoveryDesign\FilamentGaze\FilamentGazePlugin::make() 添加到您的 Filament 面板提供者中。
$panel->plugins([
    \DiscoveryDesign\FilamentGaze\FilamentGazePlugin::make()
])
  1. 使用 php artisan filament:assets 发布资源。
  2. 在您的 Filament 资源中导入软件包 use DiscoveryDesign\FilamentGaze\Forms\Components\GazeBanner
  3. 使用 GazeBanner::make()GazeBanner 表单组件添加到您的表单中。
  4. 如有必要,使用 php artisan vendor:publish --tag=filament-gaze-translations 发布翻译文件。

示例

基本示例

<?php

namespace App\Filament\Resources;

use DiscoveryDesign\FilamentGaze\Forms\Components\GazeBanner;
// ...

class OrderResource extends Resource
{
    // ...

    public static function form(Form $form): Form
    {
        return $form
            ->schema([
                GazeBanner::make(),
                    
                // ...
            ]);
    }
    
    // ...
}

轮询计时器示例

GazeBanner::make()
    ->pollTimer(10),

标识符示例

GazeBanner::make()
    ->identifier('any-order'),

锁定示例

GazeBanner::make()
    ->lock()

带控制的锁定示例

GazeBanner::make()
    ->lock()
    ->canTakeControl(fn() => auth()->user()->isAdmin())

在创建表单中隐藏注视横幅示例

GazeBanner::make()
    ->hidden(fn (?Order $record) => $record === null),

还有一个辅助函数

GazeBanner::make()
    ->hideOnCreate(),

文档

->pollTimer($timeInSecs)

描述

polltimer 可以用来设置浏览器多久通知 Filament 用户仍在查看页面,同时获取其他正在查看的用户列表。建议不要设置得太短,因为这可能导致速率限制问题。但也不要设置得太长,因为这会导致新用户查看页面的更新延迟。

参数

timeInSeconds - (int) 每次轮询之间的秒数。默认为30秒。

->identifier($fnc)

描述

identifier 被用作此注视横幅的唯一标识符。具有相同标识符的任何其他注视横幅将共享相同的活跃用户列表。如果您想使两个或多个不同的资源共享相同的活跃查看用户列表,这很有用。

参数

fnc - (可选,闭包 | 字符串) 标识符的名称。默认是资源模型类与模型ID的组合。

->lock($fnc)

描述

lock 可以用来锁定资源,只有当前正在编辑表单的人除外。如果您想防止多人同时编辑相同的资源,这很有用。指定的控制器是第一个访问资源的人,或者已经控制资源的人。如果您在最近访问资源后启用此功能,可能需要运行 php artisan cache:clear,因为当前缓存的查看者可能没有标记的控制器(这仅是开发中可能出现的问题)。

参数

fnc - (可选,闭包 | bool) 资源是否可以锁定。

->canTakeControl($fnc)

描述

canTakeControl 可以用来允许用户在资源被其他人锁定时控制该资源。如果您想允许用户控制资源,这很有用。

参数

fnc - (可选,闭包 | bool) 用户是否可以控制资源。默认为 true。如果传递闭包,它应返回 bool 值。

->hideOnCreate()

描述

hideOnCreate 是一个辅助函数,可以用来在创建表单中隐藏横幅。

自定义

更改图标

要在横幅中自定义图标,您可以使用以下别名

  • filament-gaze::banner.locked 用于锁图标
  • filament-gaze::banner.view 用于眼睛图标

作者

🚀 Discovery Design