Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Livewire\Punishment;
- use App\Models\Core\Punishment\Utils\PunishmentTemplate;
- use Filament\Actions\Action;
- use Filament\Actions\Concerns\InteractsWithActions;
- use Filament\Actions\Contracts\HasActions;
- use Filament\Schemas\Concerns\InteractsWithSchemas;
- use Filament\Schemas\Contracts\HasSchemas;
- use Filament\Tables\Columns\TextColumn;
- use Filament\Tables\Concerns\InteractsWithTable;
- use Filament\Tables\Contracts\HasTable;
- use Filament\Tables\Grouping\Group;
- use Filament\Tables\Table;
- use Illuminate\Contracts\View\View;
- use Livewire\Component;
- class TemplateTable extends Component implements HasTable, HasActions, HasSchemas
- {
- use InteractsWithActions;
- use InteractsWithTable;
- use InteractsWithSchemas;
- public function table(Table $table): Table
- {
- return $table
- ->query(PunishmentTemplate::query()->orderBy("category"))
- ->defaultGroup(Group::make("category")
- ->getTitleFromRecordUsing(fn(PunishmentTemplate $record) => strtoupper($record->category))
- ->titlePrefixedWithLabel(false)
- ->collapsible()
- )
- ->columns([
- TextColumn::make("name")
- ->label("Name"),
- TextColumn::make("description")
- ->label("Beschreibung")
- ->wrap(),
- TextColumn::make("punishment_type")
- ->label("Strafart"),
- TextColumn::make("duration")
- ->label("Dauer")
- ->formatStateUsing(fn(PunishmentTemplate $record) => $record->formatDuration())
- ])
- ->recordActions([
- Action::make("select")
- ->label("Auswählen")
- ->action(function (PunishmentTemplate $record) {
- $this->dispatch("template-selected", templateId: $record->id);
- })
- ])
- ->paginated(false);
- }
- public function render(): View
- {
- return view('filament.modals.template-table');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment