diff --git a/app/Livewire/ProjectTable.php b/app/Livewire/ProjectTable.php index 387240d..8c564d0 100644 --- a/app/Livewire/ProjectTable.php +++ b/app/Livewire/ProjectTable.php @@ -4,6 +4,9 @@ namespace App\Livewire; use Rappasoft\LaravelLivewireTables\DataTableComponent; use Rappasoft\LaravelLivewireTables\Views\Column; +use Rappasoft\LaravelLivewireTables\Views\Columns\{BooleanColumn, ButtonGroupColumn, LinkColumn, ImageColumn}; +use Rappasoft\LaravelLivewireTables\Views\Filters\{DateFilter, MultiSelectFilter, SelectFilter}; + use App\Models\Project; class ProjectTable extends DataTableComponent @@ -14,53 +17,91 @@ class ProjectTable extends DataTableComponent { $this->setPrimaryKey('id') ->setDefaultSort('created_at', 'desc') - ->setTableAttributes(['class' => 'table-auto w-full']) - ->setThAttributes(['class' => 'px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider']) - ->setTdAttributes(['class' => 'px-4 py-2 whitespace-nowrap text-sm text-gray-900']); + ->setTableAttributes(['class' => 'table-auto w-full']); + + $this->setThAttributes(function(Column $column) { + return ['class' => 'px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider']; + }); + + $this->setTdAttributes(function(Column $column) { + return ['class' => 'px-4 py-2 whitespace-nowrap text-sm text-gray-900']; + }); } public function columns(): array { return [ + Column::make(__('ID'), 'id') + ->sortable() + ->searchable(), + Column::make(__('Project Name'), 'name') ->sortable() ->searchable(), + Column::make(__('Address'), 'address') ->sortable() ->searchable(), + Column::make(__('Status'), 'status') - ->sortable() - ->filterable([ - 'planning' => __('Planning'), - 'in_progress' => __('In progress'), - 'paused' => __('Paused'), - 'completed' => __('Completed'), - ]) - ->label(fn ($value, $row, $column) => - match ($value) { - 'planning' => ''.__('Planning').'', - 'in_progress' => ''.__('In progress').'', - 'paused' => ''.__('Paused').'', - 'completed' => ''.__('Completed').'', - default => $value - } - ), + ->sortable(), + Column::make(__('Start Date'), 'start_date') ->sortable() ->format(fn ($value, $row, $column) => $value ? $value->format('Y-m-d') : ''), + Column::make(__('Estimated End Date'), 'end_date_estimated') ->sortable() ->format(fn ($value, $row, $column) => $value ? $value->format('Y-m-d') : ''), + Column::make(__('Actions')) - ->label(fn ($row) => '