digital-creative / nova-dashboard
nova 丢失的仪表板。
v1.1.3
2024-03-28 03:45 UTC
Requires
- php: >=8.1
- laravel/nova: ^4.28.0
README
Laravel Nova 丢失的仪表板!
安装
您可以通过 composer 安装此包。
composer require digital-creative/nova-dashboard
当前可用的小部件列表
- 值小部件: https://github.com/dcasia/value-widget
- 表格小部件: https://github.com/dcasia/table-widget
- ChartJs 小部件: https://github.com/dcasia/chartjs-widget
- 在此处添加您的小部件。
用法
仪表板本身只是一个标准的 Laravel Nova 卡片,因此您可以用作任何资源的卡片或默认的 Nova 仪表板功能。
use DigitalCreative\NovaDashboard\Card\NovaDashboard; use DigitalCreative\NovaDashboard\Card\View; use Laravel\Nova\Dashboards\Main as Dashboard; class Main extends Dashboard { public function cards(): array { return [ NovaDashboard::make() ->addView('Website Performance', function (View $view) { return $view ->icon('window') ->addWidgets([ BounceRate::make(), ConversionRate::make(), WebsiteTraffic::make(), SessionDuration::make(), ]) ->addFilters([ LocationFilter::make(), UserTypeFilter::make(), DateRangeFilter::make(), ]); }), ]; } }
静态
默认情况下,每个小部件都是可拖动的,用户可以重新排列它。可以通过调用 $view->static()
来禁用此行为。
小部件
小部件负责在视图中显示您的数据;它们本质上就是标准的 Nova 卡片。然而,它们会响应仪表板事件并在过滤器更改时重新加载数据。
一旦您有一个小部件,通常可以这样配置
class MyCustomWidget extends ValueWidget { /** * Here you can configure your widget by calling whatever options are available for each widget */ public function configure(NovaRequest $request): void { $this->icon('<svg>...</svg>'); $this->title('Session Duration'); $this->textColor('#f95738'); $this->backgroundColor('#f957384f'); } /** * This function is responsible for returning the actual data that will be shown on the widget, * each widget expects its own format, so please refer to the widget documentation */ public function value(Filters $filters): mixed { /** * $filters contain all the set values from the filters that were shown on the frontend. * You can retrieve them and implement any custom logic you may have. */ $filterValue = $filters->getFilterValue(LikesFilter::class); return 'example'; } }
所有小部件都有配置大小和位置的共同方法。值不是以像素为单位,而是以网格单位表示,范围为 1
到 12
(对应于 12 列)。
$widget->layout(width: 2, height: 1, x: 0, y: 1); $widget->minWidth(2); $widget->minHeight(1);
过滤器
这些是标准的 nova 过滤器类,只有一个简单的不同之处,即默认情况下不会调用 ->apply()
方法。为什么?
use Illuminate\Http\Request; use Laravel\Nova\Filters\BooleanFilter; class ExampleFilter extends BooleanFilter { public function apply(Request $request, $query, $value) { // this function is required however it is not used by the nova-dashboard } }
通常您的 widget ->value()
函数将接收一个 DigitalCreative\NovaDashboard\Filters
实例,该类包含检索任何给定过滤器值的方法,例如
class SessionDuration extends ValueWidget { public function value(Filters $filters): mixed { $filterA = $filters->getFilterValue(YourFilterClass::class); $filterB = $filters->getFilterValue(YourSecondFilterClass::class); } }
然而,如果您想重用您之前在过滤器上设置的逻辑或与仪表板共享现有过滤器,可以调用 ->applyToQueryBuilder()
方法以获得相同的行为
class SessionDuration extends ValueWidget { public function value(Filters $filters): mixed { $result = $filters->applyToQueryBuilder(User::query())->get(); } }
->applyToQueryBuilder()
将运行每个过滤器通过 nova 的默认过滤逻辑。
⭐️ 表达您的支持
如果此项目对您有帮助,请给予 ⭐️。
您可能还喜欢的其他包
- Nova Dashboard - Laravel Nova 丢失的仪表板!
- Nova Welcome Card - Nova 带来的
帮助卡
的可配置版本。 - Icon Action Toolbar - 用基于图标的行为菜单替换默认的单调操作菜单。
- Expandable Table Row - 提供向资源表中的每一行添加额外数据的方法。
- Collapsible Resource Manager - 提供一种简单的方法来排序和分组侧边栏中的资源。
- Resource Navigation Tab - 将您的资源字段组织到选项卡中。
- Resource Navigation Link - 创建指向内部或外部资源的链接。
- Nova Mega Filter - 将所有过滤器以卡片形式显示,而不是小下拉菜单!
- Nova Pill Filter - 一种Laravel Nova过滤器,以可点击的药丸形式呈现。
- Nova Slider Filter - 一种Laravel Nova过滤器,可用于选择最小/最大值之间的范围。
- Nova Range Input Filter - 一种Laravel Nova范围输入过滤器。
- Nova FilePond - 使用Filepond上传文件、图片和视频的Nova字段。
- Custom Relationship Field - 在资源之间没有实际关系设置的情况下模拟HasMany关系。
- Column Toggler - 一款Laravel Nova包,允许您在索引视图中隐藏/显示列。
- Batch Edit Toolbar - 允许您直接从索引页面一次性更新资源的一列。
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。