40 lines
1.6 KiB
PHP
40 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Widgets;
|
|
|
|
use Filament\Tables;
|
|
use Filament\Widgets\TableWidget as BaseWidget;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class RecentPhotosTable extends BaseWidget
|
|
{
|
|
protected static ?string $heading = 'Recent uploads';
|
|
protected int|string|array $columnSpan = 'full';
|
|
|
|
public function table(Tables\Table $table): Tables\Table
|
|
{
|
|
$query = DB::table('photos')->orderByDesc('created_at')->limit(10);
|
|
|
|
return $table
|
|
->query($query)
|
|
->columns([
|
|
Tables\Columns\ImageColumn::make('thumbnail_path')->label('Thumb')->circular(),
|
|
Tables\Columns\TextColumn::make('id')->label('#'),
|
|
Tables\Columns\TextColumn::make('event_id')->label('Event'),
|
|
Tables\Columns\TextColumn::make('likes_count')->label('Likes'),
|
|
Tables\Columns\TextColumn::make('created_at')->since(),
|
|
])
|
|
->actions([
|
|
Tables\Actions\Action::make('feature')
|
|
->label('Feature')
|
|
->visible(fn($record) => ! (bool)($record->is_featured ?? 0))
|
|
->action(fn($record) => DB::table('photos')->where('id', $record->id)->update(['is_featured' => 1, 'updated_at' => now()])),
|
|
Tables\Actions\Action::make('unfeature')
|
|
->label('Unfeature')
|
|
->visible(fn($record) => (bool)($record->is_featured ?? 0))
|
|
->action(fn($record) => DB::table('photos')->where('id', $record->id)->update(['is_featured' => 0, 'updated_at' => now()])),
|
|
])
|
|
->paginated(false);
|
|
}
|
|
}
|