insenseanalytics/nova-bar-metrics

Laravel Nova 的柱状图指标和频率分布工具。

v1.0.2 2018-12-16 13:47 UTC

This package is auto-updated.

Last update: 2024-09-04 18:13:07 UTC


README

License Latest Stable Version Scrutinizer Code Quality Total Downloads Monthly Downloads

这个 Nova 工具可以让您

  • 创建柱状图
  • 创建频率分布图(使用饼图和/或柱状图)

柱状图指标截图

screenshot of the backup tool

频率分布指标截图(柱状图)

screenshot of the backup tool

频率分布指标截图(饼图)

screenshot of the backup tool

柱状图指标

对于柱状图指标,只需像通常为 Partition 指标那样创建一个指标类。所有在 Partition 指标中可用的方法也都在 BarChartMetric 中可用!您不需要扩展 Partition,只需像这样扩展 BarChartMetric

use Insenseanalytics\NovaBarMetrics\BarChartMetric;

class BrandsPerCategory extends BarChartMetric
{
  public function calculate(Request $request)
  {
    return $this->count($request, BrandCategory::class, 'category_name');
  }
}

您还可以像在 Laravel Nova 中的 TrendMetric 一样使用 suffixprefixdollarseuros 方法。除此之外,我们还有一个 precision 方法来设置柱状图右上角显示的 avg 指标的精度。

柱状图指标和分区指标的频率分布

要创建频率分布图,可以扩展 BarChartMetric 类或扩展 Partition 类并使用 HasFrequencyDistributions 特性。您可以使用 distributions 辅助方法创建频率分布图,如下所示

BarChartMetric 的示例

use Insenseanalytics\NovaBarMetrics\BarChartMetric;

class BrandFacebookFollowers extends BarChartMetric
{
  public function calculate(Request $request)
  {
    return $this->distributions($request, Brand::class, 'facebook_followers', 100000);
  }
}

在上面的示例中,100000 是用于频率分布中范围的 步长,而 facebook_followers 是按范围分布的

您可以使用 distributionsWithSteps 方法而不是提供 步长,然后包会自动计算步长

use Insenseanalytics\NovaBarMetrics\BarChartMetric;

class BrandFacebookFollowers extends BarChartMetric
{
  public function calculate(Request $request)
  {
    return $this->distributionsWithSteps($request, Brand::class, 'facebook_followers', 15);
  }
}

对于友好的格式化范围(K 表示千,M 表示百万,B 表示十亿),您可以使用 withFormattedRangeLabels 方法

public function calculate(Request $request)
{
  return $this->distributions($request, Brand::class, 'facebook_followers', 100000)
              ->withFormattedRangeLabels();
}

Partition 指标的示例

use Laravel\Nova\Metrics\Partition;
use Insenseanalytics\NovaBarMetrics\HasFrequencyDistributions;

class BrandFacebookFollowers extends Partition
{
  use HasFrequencyDistributions;
  
  public function calculate(Request $request)
  {
    return $this->distributions($request, Brand::class, 'facebook_followers', 100000);
  }
}

要求 & 依赖

除了 Laravel Nova 包之外,没有 PHP 依赖。在客户端 JS 中,此包使用 vuechartistchartist-plugin-tooltipslaravel-nova,这些也都是 Nova 本身使用的。

安装

您可以通过 composer 将此工具安装到使用 Nova 的 Laravel 应用中

composer require insenseanalytics/nova-bar-metrics

接下来,如果您没有启用包发现,您需要将提供者在 config/app.php 文件中注册。

'providers' => [
    ...,
    Insenseanalytics\NovaBarMetrics\NovaBarMetricsServiceProvider::class,
]

用法

您可以使用控制台命令 php artisan nova:barmetric <classname> 创建新的 BarMetric 类

贡献

欢迎贡献,只要您使用 PSR-2,解释您想要解决的问题/功能,并用测试支持您的代码,您的贡献将被充分认可。快乐编码!

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件