Files
hoshpoint-backend/app/Filament/Resources/TemplateGenerations/Tables/TemplateGenerationsTable.php

68 lines
2.8 KiB
PHP

<?php
namespace App\Filament\Resources\TemplateGenerations\Tables;
use App\Enums\TemplateGenerationStatus;
use App\Filament\Resources\TemplateGenerations\Actions\DownloadGenerationAction;
use App\Filament\Resources\TemplateGenerations\Actions\RetryGenerationAction;
use Filament\Actions\ViewAction;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
class TemplateGenerationsTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
TextColumn::make('uuid')
->label('شناسه')
->searchable()
->copyable(),
TextColumn::make('template.title')
->label('قالب')
->searchable()
->sortable(),
TextColumn::make('status')
->label('وضعیت')
->badge()
->formatStateUsing(fn (TemplateGenerationStatus $state): string => $state->label())
->color(fn (TemplateGenerationStatus $state): string => match ($state) {
TemplateGenerationStatus::Pending => 'gray',
TemplateGenerationStatus::Processing => 'warning',
TemplateGenerationStatus::Completed => 'success',
TemplateGenerationStatus::Failed => 'danger',
}),
TextColumn::make('requester.name')
->label('درخواست‌دهنده')
->searchable()
->placeholder('—'),
TextColumn::make('error_message')
->label('خطا')
->limit(50)
->placeholder('—'),
TextColumn::make('created_at')
->label('تاریخ')
->dateTime()
->sortable(),
])
->defaultSort('created_at', 'desc')
->filters([
SelectFilter::make('status')
->label('وضعیت')
->options([
TemplateGenerationStatus::Pending->value => TemplateGenerationStatus::Pending->label(),
TemplateGenerationStatus::Processing->value => TemplateGenerationStatus::Processing->label(),
TemplateGenerationStatus::Completed->value => TemplateGenerationStatus::Completed->label(),
TemplateGenerationStatus::Failed->value => TemplateGenerationStatus::Failed->label(),
]),
])
->recordActions([
ViewAction::make(),
DownloadGenerationAction::make(),
RetryGenerationAction::make(),
]);
}
}