Информационные панели
Дашборд — это страница, которую пользователь видит при входе в панель. Он собирается из карточек (Card): приветственные заголовки, метрики, графики, сводки по ресурсам (Overlook), кастомные блоки. Frame поддерживает несколько дашбордов; они регистрируются в FrameServiceProvider.

Создание
php artisan frame:dashboard MainDashboard
Команда создаёт app/Frame/Dashboards/MainDashboard.php на основе стаба:
<?php
declare(strict_types=1);
namespace App\Frame\Dashboards;
use Frame\Core\Dashboards\Dashboard;
use Frame\Laravel\Http\Requests\FrameRequest;
class MainDashboard extends Dashboard
{
public static function cards(FrameRequest $request): array
{
return [
// TODO: Attach required cards.
];
}
public static function title(): string
{
return 'Dashboard';
}
}
Регистрация
Дашборд нужно подцепить в FrameServiceProvider::boot():
use App\Frame\Dashboards\MainDashboard;
use Frame\Core\Dashboards\DashboardManager;
use Frame\Core\Dashboards\Dashboards;
public function boot(): void
{
parent::boot();
app(DashboardManager::class)->buildUsing(
fn (Dashboards $dashboards) => $dashboards
->push(MainDashboard::class),
);
}
Можно зарегистрировать сразу несколько — они будут доступны через селектор дашбордов в навигации.
Карточки
Карточки описываются в методе cards(). Встроенные классы:
includes([...]) / excludes([...]) / alphabetical() управляют составом.ValueMetric, LineChartMetric, BarChartMetric, PieChartMetric) — см. ниже.Пример:
use App\Frame\Metrics\ActiveUsers;
use App\Frame\Metrics\UsersPerDay;
use App\Frame\Resources\UserResource;
use Frame\Laravel\Cards\DashboardHeading;
use Frame\Laravel\Cards\Overlook;
public static function cards(FrameRequest $request): array
{
return [
DashboardHeading::make('Активность'),
ActiveUsers::make('Активные пользователи'),
UsersPerDay::make('Регистрации по дням'),
DashboardHeading::make('Ресурсы'),
Overlook::make()
->includes([UserResource::class])
->alphabetical(),
];
}
Метрики
Метрики — это отдельные классы, каждый из которых считает одну величину или график. Создавать их через artisan пока нельзя — наследуйте нужный базовый класс и реализуйте calculate().
ValueMetric — одно число
<?php
declare(strict_types=1);
namespace App\Frame\Metrics;
use App\Models\User;
use Frame\Laravel\Http\Requests\FrameRequest;
use Frame\LaravelMetrics\DTO\StatValue;
use Frame\LaravelMetrics\ValueMetric;
class ActiveUsers extends ValueMetric
{
public function calculate(FrameRequest $request): StatValue
{
return StatValue::make(
$this->count($request, User::query(), dateColumn: 'last_seen_at'),
);
}
}
Доступные хелперы внутри ValueMetric: count(), sum($column), average($column), min($column), max($column). Все принимают FrameRequest и модель/билдер, плюс опциональную колонку для фильтрации по дате.
LineChartMetric / BarChartMetric — график
<?php
declare(strict_types=1);
namespace App\Frame\Metrics;
use App\Models\User;
use Frame\Laravel\Http\Requests\FrameRequest;
use Frame\LaravelMetrics\DTO\LineChart;
use Frame\LaravelMetrics\LineChartMetric;
class UsersPerDay extends LineChartMetric
{
public function calculate(FrameRequest $request): LineChart
{
return $this->count($request, User::query(), dateColumn: 'created_at');
}
}
PieChartMetric — распределение
Используйте PieChartMetric для показа долей по категории (например, статусы заявок). Классы возвращают PieChart DTO, сегменты которого задаются методом addSectors(['Новые' => 12, 'В работе' => 5]) (или поштучно через addDataPoint(new PieDataPoint($name, $value))).
Опции дашборда
tabler-home-2). Показывается в селекторе дашбордов.kebab-case имени класса без суффикса Dashboard.Пример с кастомизацией:
public static function title(): string
{
return 'Главная';
}
public static function caption(): string
{
return 'Сводка по активности пользователей и ресурсам';
}
public static function icon(): ?string
{
return 'tabler-home-2';
}
Что дальше
- Агрегации — похожий инструмент для итогов в таблицах
- Опции ресурса (
setUp()) — управление поиском, пагинацией, экспортом