Widgets
Display status statistics with widgets
Widgets
The Status Management plugin provides two abstract chart widgets to visualize how records are
distributed across statuses: StatusBarChart and StatusPieChart.
Both extend Filament's ChartWidget and declare a single abstract method you must implement —
getModel(): string — which returns the Statusable model class the chart should aggregate.
Status Bar Chart
use Beboost\StatusManagement\Filament\Widgets\StatusBarChart;
use App\Models\Order;
class OrderStatusBarChart extends StatusBarChart
{
protected static ?int $sort = 2;
public function getModel(): string
{
return Order::class;
}
}Register the widget in your panel provider (or return it from a resource/page):
public function panel(Panel $panel): Panel
{
return $panel
->widgets([
OrderStatusBarChart::class,
]);
}Status Pie Chart
use Beboost\StatusManagement\Filament\Widgets\StatusPieChart;
use App\Models\Order;
class OrderStatusPieChart extends StatusPieChart
{
protected static ?int $sort = 3;
public function getModel(): string
{
return Order::class;
}
}Each chart automatically builds its dataset from the statuses configured for the model, using each status's configured color, and appends a No Status slice for records that have no status yet.
Customize the data
Override getData() to post-process the dataset — for example to recolor it or filter the query.
Call parent::getData() to start from the package's default aggregation:
class OrderStatusBarChart extends StatusBarChart
{
public function getModel(): string
{
return Order::class;
}
protected function getData(): array
{
$data = parent::getData();
// e.g. override the bar colors
$data['datasets'][0]['backgroundColor'] = ['#FF6384', '#36A2EB', '#FFCE56', '#4BC0C0'];
return $data;
}
}StatusBarChart and StatusPieChart are Filament ChartWidgets, so all standard Filament widget
features apply — $sort, getHeading(), polling, and the built-in getFilters() / $filter
date-range filtering.
Next Steps
How is this guide?