nova-bi/nova-databoards

此软件包已被废弃,不再维护。未建议替代软件包。

为Nova提供的强大BI数据板

This package is auto-updated.

Last update: 2021-07-08 07:52:47 UTC


README

此软件包已被https://github.com/Nova-BI/nova-dashboard-manager替代

Nova数据板

为Laravel Nova提供现成可用的分析数据板

Latest Stable Version Total Downloads Latest Unstable Version License

指标计算与可视化的分离

Nova-Databoards指标类是所有指标计算的容器。计算结果适用于支持的可视化,例如,在“用户”指标中,您可以计算例如用于值可视化的总用户数,或为趋势可视化提供趋势数据。

可配置和可重用

通过自定义配置,您可以使您的板、指标、筛选器和可视化可重用 - 检查nova-bi/nova-databoards/src/Models/Datametricables/users.php,了解如何使用相同的指标显示总用户数和已验证电子邮件的用户数。

感谢laravel-schemaless-attributes,您可以在不更改数据库模式的情况下为您的板、指标、筛选器和可视化添加配置选项。

可筛选和动态

通过添加属性nova-bi/nova-databoards/src/Traits/DynamicMetricsTrait.php,Nova指标(或任何自定义指标卡)变得可归属性。

感谢Muzaffer Dede开发Nova全局筛选器,这对于动态更新筛选器更改时的小部件至关重要。

介绍

数据可视化是常见的业务需求。默认的Nova指标提供了显示应用程序中某些数据的一种简单方式。

然而,将指标计算和可视化合并到一个文件中的方法限制了您想要重用指标的情况。

使用Nova指标,您需要3个文件来可视化同一KPI的3个筛选后的部分,例如。

  • 总收入
  • 按地区划分的收入
  • 按客户群体划分的收入

在Nova数据板中,您将开发1个可筛选的数据指标,具有配置选项和不同的可视化,如值、趋势、分区或自定义可视化。

一旦开发出数据指标,您就可以配置无限的小部件并将它们分配给无限的数据板。

数据板是可筛选和动态的 - 因此,当更改筛选器时,小部件会重新加载新数据。

安装

使用composer添加软件包

composer require nova-bi/nova-databoards

运行迁移

php artisan migrate

将以下内容添加到您的NovaServiceProvider.php文件中的tools()方法中

    use NovaBI\NovaDataboards\NovaDataboards;

    public function tools()
    {
        return [
            new NovaDataboards()
        ];
    }

推荐:发布配置文件

php artisan vendor:publish --provider="NovaBI\NovaDataboards\NovaDataboardsServiceProvider" --tag="config"

使用 showToolMenu 可以配置是否使用工具菜单的默认资源列表。当与 可折叠资源管理器 一起使用时,设置为 false

可选: 发布迁移

php artisan vendor:publish --provider="NovaBI\NovaDataboards\NovaDataboardsServiceProvider" --tag="migrations"

沙盒环境

默认情况下,沙盒环境已配置,这将为您提供以下 Nova 安装的基本指标

  • 用户
  • 看板
  • 小部件
  • 操作事件

以下可视化可根据指标使用

  • 趋势
  • 分区

以下过滤器可用。

  • 日期从
  • 日期到
  • 操作事件类型

直接访问仪表板

出色的 可折叠资源管理器 软件包允许您自定义菜单结构。

以下代码允许通过菜单直接访问 Databoards(见下文 已知问题 - 您知道如何解决这个问题吗?)

    use NovaBI\NovaDataboards\NovaDataboards;
    use DigitalCreative\CollapsibleResourceManager\CollapsibleResourceManager;
    use DigitalCreative\CollapsibleResourceManager\Resources\Group;
    use DigitalCreative\CollapsibleResourceManager\Resources\NovaResource;
    use DigitalCreative\CollapsibleResourceManager\Resources\TopLevelResource;


    /**
     * Get the tools that should be listed in the Nova sidebar.
     *
     * @return array
     */
    public function tools()
    {
        $analyticsDataboards = [];

        $databoards = \NovaBI\NovaDataboards\Models\Databoard::all();
        $analyticsDataboards[] = NovaResource::make(\NovaBI\NovaDataboards\Nova\Databoard::class)->label(__('All Databoards'));
        foreach ($databoards as $databoard) {
            $analyticsDataboards[] = NovaResource::make(\NovaBI\NovaDataboards\Nova\Databoard::class)->detail($databoard->id)->label($databoard->name);
        }

        return [
            new NovaDataboards(),
            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' => 'Databoard Configuration',
                                    'expanded' => false,
                                    'icon' => '',
                                    'resources' =>
                                        [
                                            \NovaBI\NovaDataboards\Nova\DataboardConfiguration::class,
                                            \NovaBI\NovaDataboards\Nova\Datafilter::class,
                                            \NovaBI\NovaDataboards\Nova\Datawidget::class
                                        ]
                                ]
                            )
                        ]
                    ]),
                ]
            ])
        ];
    }

已知问题

扩展

概念

指标计算和可视化的分离

Nova Databoards 遵循 Nova 资源的概念来表示模型,并按以下结构组织

\Nova\Databoardables -> \Models\Databoardables

\Nova\Datafilterables -> \Models\Datafilterables

\Nova\Datametricables -> \Models\Datametricables

\Nova\Datavisualables -> \Models\Datavisualables

您可以将自定义资源和模型放在任何子目录中。要使它们可用,请将其注册到配置文件 config/nova-databoards.php 中。请参考 vendor/nova-bi/nova-databoards/src/ 目录中的沙盒环境示例。

路线图

github 上的开放开发任务

  • 支持自定义过滤器
  • 使用 (https://innologica.github.io/vue2-daterange-picker) 的数据范围过滤器
  • 增强过滤器栏,包括主要过滤器(始终可见)和次要过滤器(单击按钮添加)
  • 为 Nova 卡添加布局灵活性(例如高度、排序顺序)
  • artisan 命令用于生成指标、可视化
  • 添加可视化,例如 Chart JS、Google Charts、APEX 与常见数据 API
  • 交互式可视化(待办事项 - 单击分区将设置一个过滤器,该过滤器更新所有小部件)
  • 通过 API 公开指标数据以供外部可视化
  • 添加 ETL 以进行数据聚合
  • 图形用户界面增强
    • 使用图标/描述选择指标
    • 使用图标/描述选择可视化
    • 使用图标/描述选择过滤器
  • 小部件的拖放排序

已知问题

贡献

如果您想贡献,请fork项目并提交PR。

查看 https://github.com/Nova-BI/nova-databoards/issues 以获取开放的开发任务和问题。

致谢声明

本包高度依赖于从大量优秀的laravel和nova包中选择的一系列包。

许可证

本软件发布于 MIT许可证(MIT)