beyondcode / nova-filterable-cards
Filterable metric cards for Laravel Nova.
Installs: 8 076
Dependents: 0
Suggesters: 0
Security: 0
Stars: 55
Watchers: 4
Forks: 16
Open Issues: 17
Language:Vue
Requires
- php: >=7.1.0
- laravel/nova: *
- orchestra/testbench: ^3.7
Requires (Dev)
- mockery/mockery: ^1.1
- dev-master
- 0.0.1
- dev-dependabot/npm_and_yarn/y18n-3.2.2
- dev-dependabot/npm_and_yarn/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/ini-1.3.7
- dev-dependabot/npm_and_yarn/http-proxy-1.18.1
- dev-dependabot/npm_and_yarn/lodash.mergewith-4.6.2
- dev-dependabot/npm_and_yarn/node-sass-4.14.1
- dev-dependabot/npm_and_yarn/lodash-4.17.19
- dev-dependabot/npm_and_yarn/websocket-extensions-0.1.4
This package is auto-updated.
Last update: 2021-04-30 15:16:46 UTC
README
Add custom filters to your Laravel Nova metrics.
Installation
You can install the package in to a Laravel app that uses Nova via composer:
composer require beyondcode/nova-filterable-cards
Usage
To add the filter ability to your Laravel Nova metric cards, you need to add one of the Filterable
traits to your metrics.
Depending on your metric type, these are the available traits:
FilterableValue
FilterableTrend
FilterablePartition
For example, within your custom Nova value metric card:
// in your Nova value metric card class: import Beyondcode\FilterableCard\FilterableValue; use FilterableValue;
Defining Filters
The available filters for your cards can be defined, by adding a new property called $filters
to your metrics.
This must be an array and contains the names of the available filters, as well as the properties for this specific filter.
Example:
// in your filterable Nova metric card class: protected $filters = [ 'Firstname' => [ 'type' => 'text' ], 'Status' => [ 'type' => 'select', 'options' => [ 'all' => 'All', 'active' => 'Active', 'inactive' => 'Inactive' ], ] ];
Defining Filters Using Define Methods
Sometimes you might want to set the available filter options by using a database call, or load them from the configuration.
To enable this, you can also define the filter options using a method with the following naming convention: defineStudlyCaseFilterName
.
So for example, if you want to add and define a custom filter called User Status
, you can do it like this:
// in your filterable Nova metric card class: protected $filters = [ 'Firstname' => [ 'type' => 'text' ], 'User Status' ]; public function defineUserStatus() { return [ 'type' => 'select', 'options' => [ 'all' => 'All', 'active' => 'Active', 'inactive' => 'Inactive' ], ]; }
Available Filter Types
The available filter types are:
select
checkbox
text
email
url
number
And all other types that can be applied to HTML <input>
tags.
Apply The Filter Logic
To define in which way you want to filter your custom metric query, once a user filters it using the modal, you need to define custom filter methods. The naming convention is similar to defining custom filter options. It's filterStudlyCaseFilterName
.
This method receives a query builder object and the value of the filter input. You can add your own queries to the builder class and modify as you need. Just make sure that you return the query object.
Example:
// in your filterable Nova metric card class: public function filterUserStatus($query, $status) { return $query->where('status', $status); }
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email marcel@beyondco.de instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.