norgeit / nova-bar-metrics
A Laravel Nova tool for bar chart metrics and frequency distributions.
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 3
pkg:composer/norgeit/nova-bar-metrics
Requires
- php: >=7.1.0
README
This Nova tool lets you:
- create bar charts
- create frequency distribution charts (using pie charts and/or bar charts)
Bar Chart Metric Screenshot
Frequency Distribution Metric Screenshot (Bar Chart)
Frequency Distribution Metric Screenshot (Pie Chart)
Bar Chart Metrics
For a bar chart metric, just create a metric class like you normally would for a Partition metric. All the available methods in a Partition metric are also available for BarChartMetric! Instead of extending Partition you would just need to extend BarChartMetric like so:
use Insenseanalytics\NovaBarMetrics\BarChartMetric; class BrandsPerCategory extends BarChartMetric { public function calculate(Request $request) { return $this->count($request, BrandCategory::class, 'category_name'); } }
You can also use the suffix, prefix, dollars and euros methods like in a TrendMetric in Laravel Nova. Besides this, we also have a precision method to set the precision of the avg metric shown in the top right corner of the bar chart.
Frequency Distributions for Bar Chart Metrics and Partition Metrics
To create a frequency distributions chart, either extend the BarChartMetric class or extend the Partition class and use the trait HasFrequencyDistributions. You can use the distributions helper method to create the frequency distribution chart like so:
Example for BarChartMetric
use Insenseanalytics\NovaBarMetrics\BarChartMetric; class BrandFacebookFollowers extends BarChartMetric { public function calculate(Request $request) { return $this->distributions($request, Brand::class, 'facebook_followers', 100000); } }
In the example above, 100000 is the step size to use for the ranges in the frequency distribution and facebook_followers is the column to distribute by ranges.
Instead of providing the step size, you may provide the max number of steps instead using the distributionsWithSteps method and the package would automatically calculate the step size like so:
use Insenseanalytics\NovaBarMetrics\BarChartMetric; class BrandFacebookFollowers extends BarChartMetric { public function calculate(Request $request) { return $this->distributionsWithSteps($request, Brand::class, 'facebook_followers', 15); } }
For friendly formatted ranges (K for thousands, M for millions, B for billions), you can use the withFormattedRangeLabels method like so:
public function calculate(Request $request) { return $this->distributions($request, Brand::class, 'facebook_followers', 100000) ->withFormattedRangeLabels(); }
Example for Partition Metric
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); } }
Requirements & Dependencies
There are no PHP dependencies except the Laravel Nova package. On the frontend JS, this package uses vue, chartist, chartist-plugin-tooltips and laravel-nova, all of which are also used by Nova itself.
Installation
You can install this tool into a Laravel app that uses Nova via composer:
composer require insenseanalytics/nova-bar-metrics
Next, if you do not have package discovery enabled, you need to register the provider in the config/app.php file.
'providers' => [ ..., Insenseanalytics\NovaBarMetrics\NovaBarMetricsServiceProvider::class, ]
Usage
You can use the console command php artisan nova:barmetric <classname> to create new BarMetric classes
Contributing
Contributions are welcome and will be fully credited as long as you use PSR-2, explain the issue/feature that you want to solve/add and back your code up with tests. Happy coding!
License
The MIT License (MIT). Please see License File for more information.