Overview
Once you have defined a metric, you are ready to attach it to a resource. Each resource generated by Nova contains acards method. To attach a metric to a resource, you should simply add it to the array of metrics / cards returned by this method:
make method to instantiate your metric:
make method will be passed to the constructor of your metric.
Detail Metrics
In addition to placing metrics on the resource index page, you may also attach a metric to the resource detail page. For example, if you are building a podcasting application, you may wish to display the total number of podcasts created by a specific user over time. To instruct a metric to be displayed on the detail page instead of the index page, invoke theonlyOnDetail method when registering your metric:
calculate method may access the resourceId property on the incoming $request:
Dashboard Metrics
You are also free to add metrics to your primary Nova “dashboard”, which is the default page that Nova displays after login. By default, this page displays some helpful links to the Nova documentation via the built-inHelp card. To add a metric to your dashboard, add the metric to the array of cards returned by the cards method of your app/Nova/Dashboards/Main class:
Authorization
If you would like to only expose a given metric to certain users, you may invoke thecanSee method when registering your metric. The canSee method accepts a closure which should return true or false. The closure will receive the incoming HTTP request:
Authorizable trait’s can method on our User model to determine if the authorized user is authorized for the viewUsersPerDay action. However, since proxying to authorization policy methods is a common use-case for canSee, you may use the canSeeWhen method to achieve the same behavior. The canSeeWhen method has the same method signature as the Illuminate\Foundation\Auth\Access\Authorizable trait’s can method:
Default Metric Range
You may wish to initially load a certain metric range by default. You can pass the range’s array key to thedefaultRange method of the metric to accomplish this:
Metric Sizes
By default, metrics take up one-third of the Nova content area. However, you are free to make them larger. To accomplish this, call thewidth method when registering the metric:
full, the height of the card will become dynamic. You may explicitly define this behaviour by calling the fixedHeight or dynamicHeight methods:
Metric Help Text / Tooltips
Sometimes a metric needs to offer the user more context about how the value is calculated or other details related to the metric’s value. To provide this context, Nova allows you to define a help text “tooltip”, which can be registered similarly to Field Help Text:
help method while registering your metric. The help method receives the help text as its only argument:
help method:
Refreshing Metrics
Laravel Nova will automatically fetch updated results (without requiring the user to refresh the page) for metrics attached to a resource based on following events:| Event | Behaviour |
|---|---|
| Resource Deleted | Automatic Update |
| Resource Restored | Automatic Update |
| Action Executed | Only update if the metric’s refreshWhenActionsRun method is invoked during registration |
| Filter Change | Only update if the metric’s refreshWhenFiltersChange method is invoked during registration |
Refresh After Actions
By default, Nova does not automatically update metric results after an action is executed without the user manually refreshing the page; however, you may indicate that metrics should automatically refresh after actions have executed by invoking therefreshWhenActionsRun method when registering your metric:
Refresh After Filter Changes
Likewise, Laravel Nova will only automatically update a metric’s value when a page’s selected filters change if the metric’srefreshWhenFiltersChange method is invoked when the metric is registered: