feat: tambah Filament 5 resources dengan schemas dan tables
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Audits;
|
||||
|
||||
use App\Filament\Resources\Audits\Pages\CreateAudit;
|
||||
use App\Filament\Resources\Audits\Pages\EditAudit;
|
||||
use App\Filament\Resources\Audits\Pages\ListAudits;
|
||||
use App\Filament\Resources\Audits\Schemas\AuditForm;
|
||||
use App\Filament\Resources\Audits\Tables\AuditsTable;
|
||||
use App\Models\Audit;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class AuditResource extends Resource
|
||||
{
|
||||
protected static ?string $model = Audit::class;
|
||||
protected static string|\BackedEnum|null $navigationIcon = 'heroicon-o-magnifying-glass';
|
||||
protected static string|\UnitEnum|null $navigationGroup = 'Audit';
|
||||
protected static ?string $modelLabel = 'Temuan Audit';
|
||||
|
||||
public static function form(Schema $form): Schema
|
||||
{
|
||||
return AuditForm::configure($form);
|
||||
}
|
||||
|
||||
public static function table(Table $table): Table
|
||||
{
|
||||
return AuditsTable::configure($table);
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
{
|
||||
return [
|
||||
'index' => ListAudits::route('/'),
|
||||
'create' => CreateAudit::route('/create'),
|
||||
'edit' => EditAudit::route('/{record}/edit'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Audits\Pages;
|
||||
|
||||
use App\Filament\Resources\Audits\AuditResource;
|
||||
use Filament\Resources\Pages\CreateRecord;
|
||||
|
||||
class CreateAudit extends CreateRecord
|
||||
{
|
||||
protected static string $resource = AuditResource::class;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Audits\Pages;
|
||||
|
||||
use App\Filament\Resources\Audits\AuditResource;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditAudit extends EditRecord
|
||||
{
|
||||
protected static string $resource = AuditResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
DeleteAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Audits\Pages;
|
||||
|
||||
use App\Filament\Resources\Audits\AuditResource;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
|
||||
class ListAudits extends ListRecords
|
||||
{
|
||||
protected static string $resource = AuditResource::class;
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
CreateAction::make(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Audits\Schemas;
|
||||
|
||||
use App\Models\User;
|
||||
use Filament\Forms\Components\Select;
|
||||
use Filament\Forms\Components\Textarea;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Schemas\Schema;
|
||||
|
||||
class AuditForm
|
||||
{
|
||||
public static function configure(Schema $schema): Schema
|
||||
{
|
||||
return $schema->components([
|
||||
Select::make('auditor_id')->label('Auditor')
|
||||
->options(User::pluck('name', 'id'))
|
||||
->searchable()
|
||||
->required(),
|
||||
TextInput::make('model_type')->label('Tipe Model')->required(),
|
||||
TextInput::make('model_id')->label('ID Model')->numeric()->required(),
|
||||
Select::make('issue_type')->label('Jenis Temuan')
|
||||
->options(['warning' => 'Peringatan', 'critical' => 'Kritis'])
|
||||
->required(),
|
||||
Textarea::make('description')->label('Deskripsi')->rows(3)->required()->columnSpanFull(),
|
||||
Select::make('status')
|
||||
->options(['open' => 'Terbuka', 'resolved' => 'Selesai'])
|
||||
->default('open')
|
||||
->required(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Audits\Tables;
|
||||
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Filters\SelectFilter;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class AuditsTable
|
||||
{
|
||||
public static function configure(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->columns([
|
||||
TextColumn::make('auditor.name')->label('Auditor'),
|
||||
TextColumn::make('model_type')->label('Tipe'),
|
||||
TextColumn::make('issue_type')->label('Jenis')->badge()
|
||||
->color(fn ($state) => $state === 'critical' ? 'danger' : 'warning'),
|
||||
TextColumn::make('description')->label('Deskripsi')->limit(50),
|
||||
TextColumn::make('status')->badge()
|
||||
->color(fn ($state) => $state === 'resolved' ? 'success' : 'danger'),
|
||||
TextColumn::make('created_at')->label('Tanggal')->date('d M Y'),
|
||||
])
|
||||
->filters([
|
||||
SelectFilter::make('issue_type')->options(['warning' => 'Peringatan', 'critical' => 'Kritis']),
|
||||
SelectFilter::make('status')->options(['open' => 'Terbuka', 'resolved' => 'Selesai']),
|
||||
])
|
||||
->recordActions([EditAction::make()])
|
||||
->toolbarActions([BulkActionGroup::make([DeleteBulkAction::make()])]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user