Membuat Stats Overview Widget di List Resource menggunakan package Trand

namespace App\Filament\Resources\TransaksiResource\Widgets;

use App\Filament\Resources\TransaksiResource\Pages\ListTransaksis; use App\Models\Transaksi; use Filament\Widgets\Concerns\InteractsWithPageTable; use Filament\Widgets\StatsOverviewWidget as BaseWidget; use Filament\Widgets\StatsOverviewWidget\Stat; use Flowframe\Trend\Trend; use Flowframe\Trend\TrendValue;

class StatsOverviewTransaksi extends BaseWidget { use InteractsWithPageTable;

protected static ?string $pollingInterval = null;
 
protected function getTablePage(): string
{
return ListTransaksis::class;
}
 
protected function getStats(): array
{
$orderData = Trend::model(Transaksi::class)
->between(
start: now()->subYear(),
end: now(),
)
->perMonth()
->count();
 
return [
Stat::make('Orders', $this->getPageTableQuery()->count())
->chart(
$orderData
->map(fn (TrendValue $value) => $value->aggregate)
->toArray()
),
Stat::make('Paid orders', $this->getPageTableQuery()->whereIn('status', ['PAID'])->count()),
Stat::make('Average price', number_format($this->getPageTableQuery()->avg('total_amount'), 2)),
];
}

}buka listTransaksi.php. +-- app | +-- Filament | | +-- Resources | | | +-- TransaksiResource | | | | | +-- Pages | | | | | | +-- ListTransaksi.phptambahkan script berikut:protected function getHeaderWidgets(): array { return TransaksiResource::getWidgets(); }script ini menunjukkan dimana kita ingin meletakkan Stats yang barusan kita buat. kita ingin meletakkan nya di bagian header pada ListTransaksi.phpbuka TransaksiResource.php. +-- app | +-- Filament | | +-- Resources | | | +-- TransaksiResource.phptambahkan script berikut:public static function getWidgets(): array { return [ StatsOverviewTransaksi::class, ]; }Stats Overview Widgetreferensi:https://filamentphp.com/docs/3.x/widgets/chartshttps://github.com/Flowframe/laravel-trend

Komentar

Ada 0 komentar pada episode ini.