nova-bi / nova-dashboard-manager
创建和管理动态仪表板
Requires
- php: >=7.4.0
- davidpiesse/nova-toggle: ^0.0.8
- digital-creative/chartjs-widget: dev-master
- digital-creative/nova-dashboard: dev-master
- digital-creative/nova-data-table: ^0.1.1
- digital-creative/nova-pill-filter: dev-master
- digital-creative/nova-range-input-filter: dev-master
- digital-creative/value-widget: dev-master
- digitalazgroup/nova-plain-text-field: ^0.0.4
- dillingham/nova-attach-many: ^1.0
- dillingham/nova-detail-link: ^1.0
- eminiarts/nova-relationship-selector: ^1.0
- eminiarts/nova-tabs: ^1.0
- epartment/nova-dependency-container: ^1.2.10
- ericlagarda/nova-text-card: ^1.2
- klepak/nova-multiselect-filter: ^1.2
- laramaker/redirect-after-asset: ^1.0
- marispro/nova-inline-morph-to: *
- optimistdigital/nova-sortable: ^2.0
- pdmfc/nova-info-card: ^1.0
- rcknr/nova-multiselect-filter: ^1.3
- spatie/laravel-schemaless-attributes: ^2
- dev-main
- 3.0
- 2.26
- 2.25
- 2.24
- 2.23
- 2.22
- 2.21
- 2.20
- 2.19
- 2.18
- 2.17
- 2.16
- 2.15
- 2.14
- 2.13
- 2.12
- 2.11
- 2.10
- 2.9
- 2.8
- 2.7
- 2.6
- 2.5
- 2.4
- 2.3
- 2.2
- 2.1
- 2.0
- 1.9
- 1.8
- 1.7
- 1.6
- 1.5
- 1.4
- 1.3
- 1.2
- 1.1
- 1.0
- 0.31
- 0.10
- 0.9
- 0.8
- 0.7
- 0.6
- 0.5
- 0.4
- 0.3
- 0.2
- 0.1
- 0.0.1
- dev-marispro-patch-1
- dev-cord-patch-8
- dev-cord-patch-7
- dev-cord-patch-6
- dev-cord-patch-5
- dev-cord-patch-4
- dev-cord-patch-3
- dev-cord-patch-2
- dev-cord-patch-1
- dev-reload-app-after-dashboard-creation
- dev-cord-fix
This package is auto-updated.
Last update: 2024-09-15 12:31:24 UTC
README
Nova-Dashboard 的仪表板管理器 Nova-Dashboard 允许您在 Nova-App 中配置仪表板
安装
您可以通过 composer 安装此包
composer require nova-bi/nova-dashboard-manager
如果您想指定自己的表名,您需要在运行迁移之前编辑配置
nova-dashboard.table_name
nova-dashboard-manager.tables
推荐:发布配置文件以调整 Nova-Dashboard 的模型和表名
php artisan vendor:publish --provider="DigitalCreative\NovaDashboard\ToolServiceProvider" --tag="config"
推荐:发布配置文件以调整 Nova-Dashboard-Manager 的所有配置
php artisan vendor:publish --provider="NovaBi\NovaDashboardManager\DashboardManagerServiceProvider" --tag="config"
可选:发布迁移
php artisan vendor:publish --provider="NovaBi\NovaDashboardManager\DashboardManagerServiceProvider" --tag="migrations"
运行迁移
php artisan migrate
使用方法
打开 NovaServiceProvider.php
添加类
use DigitalCreative\NovaDashboard\NovaDashboard; use NovaBi\NovaDashboardManager\DashboardManager;
增强 tools() 方法,如下所示
public function tools() { return [ new DashboardManager(), // must be loaded first !!! new NovaDashboard(), ]; }
从游乐场开始
此包包含可工作的游乐场示例,您可以测试功能,并将代码作为您自己的实现的示例。
默认情况下,游乐场设置已配置,这将为您提供以下基本指标
- 用户
- 看板
- 小部件
- 事件
- 事件类型
以下可视化目前可用
- 值
- ChartJS 线图
- ChartJS 柱状图
以下过滤器可用
- 日期范围
- 事件类型
转到仪表板管理器工具菜单并设置一些演示小部件、过滤器仪表板。
配置仪表板后,您需要重新加载 Nova 以显示新的菜单项以访问仪表板
开发和注册您自己的指标、过滤器可视化
指标计算与可视化的分离
指标类是所有指标计算的工具。计算适用于支持的可视化,例如,在 用户
指标中,您可以计算例如总用户数或为趋势可视化提供趋势数据。
可配置和可重用
使用自定义配置,您可以使您的板、指标、过滤器可视化可重用 - 查看以下示例 nova-bi/nova-dashboard-manager/src/Models/Datametricables/users.php
如何使用相同的指标显示总用户数和已验证电子邮件的用户。
代码结构
按照推荐的结构构建您自己的指标、过滤器可视化。请查看此包的源代码 nova-bi/nova-dashboard-manager/src
以获取详细信息
/myDashboard
/Calculations All calculations - could be done in metrics as well
/Models
/Datafilterables Models representing filters
/Datametricables Models representing metrics
/Datavisualables Models representing visuals
/Visuals Implementation of visuals,
must extend `DigitalCreative\ValueWidget\Widgets`
must use Trait \NovaBi\NovaDashboardManager\Models\Datavisualables\Visuals\Visuable
/Nova
/Datafilterables Resources for filter models
/Datametricables Resources for metric models
/Datavisualables Resources for visual models
在配置中注册您的源
nova-dashboard-manager.datafilterables
nova-dashboard-manager.datametricables
nova-dashboard-manager.datavisualables
现在您可以在仪表板配置中创建新的过滤器指标,并将它们附加到仪表板上。
计算调试
使用 Trait \NovaBi\NovaDashboardManager\Calculations\Calculatable,您可以使用 debugQuery() 方法查看原始 SQL
dd($calculation->debugQuery($calculationCurrentValue->query()));
直接访问仪表板
非常棒的 可折叠资源管理器 包允许您自定义菜单结构。
将 nova-dashboard-manager.showToolMenu
配置为 false
以隐藏工具菜单
以下代码允许通过菜单直接访问仪表板和配置(见下文 - 您知道如何解决此问题吗?)
// CollapsibleResourceManager use DigitalCreative\CollapsibleResourceManager\CollapsibleResourceManager; use DigitalCreative\CollapsibleResourceManager\Resources\Group; use DigitalCreative\CollapsibleResourceManager\Resources\NovaResource; use DigitalCreative\CollapsibleResourceManager\Resources\RawResource; use DigitalCreative\CollapsibleResourceManager\Resources\TopLevelResource; // Dashboard use DigitalCreative\NovaDashboard\NovaDashboard; use NovaBi\NovaDashboardManager\DashboardManager; use NovaBi\NovaDashboardManager\DashboardResource; use NovaBi\NovaDashboardManager\Nova\DashboardConfiguration; use NovaBi\NovaDashboardManager\Nova\Datafilter; use NovaBi\NovaDashboardManager\Nova\Datawidget; /** * Get the tools that should be listed in the Nova sidebar. * * @return array */ public function tools() { $analyticsDataboards = []; $dashboards = (new DashboardManager)->dashboards(); foreach ($dashboards as $dboard) { $analyticsDataboards[] = DashboardResource::make($dboard)->label($dboard->resourceLabel())->icon(faIcon('cog')); } return [ new DashboardManager(), // must be loaded first !!! new NovaDashboard(), // must be loaded as well new CollapsibleResourceManager([ 'navigation' => [ TopLevelResource::make([ 'label' => 'Databoards', 'icon' => '<svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor" class="sidebar-icon"><path d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path></svg>', 'resources' => $analyticsDataboards ]), TopLevelResource::make([ 'label' => 'Admin', 'icon' => '<svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor"><path d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path><path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>', 'resources' => [ \App\Nova\User::class, Group::make([ 'label' => 'Dashboard Configuration', 'expanded' => false, 'icon' => '', 'resources' => [ NovaResource::make( DashboardConfiguration::class)->index(), NovaResource::make( Datafilter::class)->index(), NovaResource::make( Datawidget::class)->index(), ] ] ) ] ]), ] ]) ]; }
已知问题
- 同一路由的页面在直接在视图之间导航时不会更新,例如使用 可折叠资源管理器。因此,在切换仪表板时,它们不会更新 - 我们希望很快解决这个问题。
贡献
如果您想贡献,请分叉项目并提交 PR。
查看https://github.com/Nova-BI/nova-databoards/issues以获取开放的开发任务和问题。
致谢说明
本软件高度依赖以下从laravel和nova的众多优秀软件包中精选的软件包。
- Nova-Dashboard
- 可折叠资源管理器
- 行内MorphTo字段
- Nova字段依赖容器
- Nova全局过滤器
- Nova排序
- Nova文本卡片
- laravel-schemaless-attributes
许可证
本软件根据MIT许可证(MIT)发布。