calvient / arbol
Laravel 应用程序的一个简单数据可视化工具。
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- inertiajs/inertia-laravel: ^1.2
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.1
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
README
Arbol 是使用 TypeScript 构建的 Laravel 应用程序的简单数据可视化工具。
它允许客户创建自己的报告、提取和简单的仪表板。
这是一个解决复杂问题 80% 的简单工具!所以你可能仍然需要付费的数据可视化工具。但如果你需要简单的东西,这可能正是你需要的。
安装
您可以通过 composer 安装此包
composer require calvient/arbol
使用以下命令发布所有资产:
php artisan vendor:publish --provider="Calvient\Arbol\ArbolServiceProvider"
使用以下命令运行迁移:
php artisan migrate
核心概念
Arbol 通过以下 4 个概念工作
- 序列
- 切片
- 过滤器
- 格式
序列
序列是用户可以与之交互的原始数据集。例如,您可能有一个“播客流”系列,它包含来自一个或多个来源的数据。唯一的限制是它必须以二维表的形式返回数据。
切片
切片是分组数据的一种方式。例如,您可能希望按州查看“播客流”。
过滤器
过滤器是您定义应用于数据的过滤器集合。例如,用户可能只关心查看过去一周的“播客流”。
快速入门
安装包
composer require calvient/arbol
发布包资产并运行迁移
php artisan vendor:publish --provider='Calvient\Arbol\ArbolServiceProvider'
php artisan migrate
每次更新后发布包资产
将以下内容添加到 composer.json 中“scripts” -> “post-update-cmd”键下
@php artisan vendor:publish --tag=arbol-assets --ansi --force
进行配置
我们假设您的 User 模型是 App\Models\User
。如果不是,您可以在 arbol.php 配置文件中覆盖它。
因为 Arbol 可以将报告分配给用户,所以您可能还想进一步限制哪些用户可以看到 Arbol。您可以在 User.php 中添加以下范围。
public function scopeArbol($query) { return $query->where('is_admin', true); }
创建一个新的序列
php artisan make:arbol-series PodcastStreams
添加数据和配置
示例
<?php namespace App\Arbol\Series; use Calvient\Arbol\DataObjects\ArbolBag; class PodcastStreams { public function data(ArbolBag $arbolBag) { // You should apply the filters here, which are in the variable $arbolBag. return PodcastStream::all(); } public function slices() { return [ 'States' => fn($row) => $row['state'], ]; } public function filters() { return [ 'Best State Ever' => fn($row) => $row['state'] === 'OK' ? 'Oklahoma' : 'Everyone else', 'Length Listened' => [ '< 15 minutes' => fn($row) => $row['listen_length'] < 15, '>= 15 minutes' => fn($row) => $row['listen_length'] >= 15, ] ]; } }
测试
composer test
变更日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
致谢
许可
MIT 许可证 (MIT)。请参阅 许可证文件 以获取更多信息。