Membuat Table Widget

namespace App\Filament\Widgets;

use App\Filament\Resources\TransaksiResource; use App\Helpers\Helper; use App\Models\Transaksi; use Filament\Tables; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; use Filament\Widgets\TableWidget as BaseWidget; use Squire\Models\Currency;

class LatestOrders extends BaseWidget { protected int | string | array $columnSpan = 'full';

protected static ?int $sort = 3;
 
public function table(Table $table): Table
{
return $table
->query(TransaksiResource::getEloquentQuery())
->defaultPaginationPageOption(5)
->defaultSort('created_at', 'desc')
->columns([
Tables\Columns\TextColumn::make('created_at')
->label('Order Date')
->date()
->sortable(),
TextColumn::make('paket.nama_paket')
->label('Paket')
->searchable()
->sortable(),
TextColumn::make('paket.harga')
->label('Harga')
->formatStateUsing(fn (string $state): string => "Rp. ".number_format($state))
->searchable()
->sortable()
->summarize([
Tables\Columns\Summarizers\Sum::make()
->money('Idr'),
]),
TextColumn::make('paket.limit')
->label('Masa Aktif')
->badge()
->formatStateUsing(fn (Transaksi $record): string => "{$record->paket->limit} {$record->paket->satuan} - sisa aktif ". $record->paket->satuan == 'seumur hidup' ? 'Seumur hidup' : Helper::siswaWaktu($record->created_at, $record->paket->satuan, $record->paket->limit))
->colors([
'primary',
]),
TextColumn::make('status')
->badge(),
TextColumn::make('user.email')
->label('User')
->searchable(),
TextColumn::make('reference'),
 
])
->actions([
Tables\Actions\Action::make('open')
->url(fn (Transaksi $record): string => TransaksiResource::getUrl('edit', ['record' => $record])),
]);
}

}kemudian anda bisa menambahkannya di panel dan akan muncul di halaman dashboard ->widgets([ Widgets\AccountWidget::class, Widgets\FilamentInfoWidget::class, LatestOrders::class ])jangan lupa mengimport LatestOrder::class tersebut di atastable widgetreferensi:https://filamentphp.com/docs/3.x/panels/dashboard#table-widgets

Komentar

Ada 0 komentar pada episode ini.