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']); $this->addColumn('name', __('Project Name')) ->setSortable() ->setSearchable(); $this->addColumn('address', __('Address')) ->setSortable() ->setSearchable(); $this->addColumn('status', __('Status')) ->setSortable() ->setFilterable([ 'planning' => __('Planning'), 'in_progress' => __('In progress'), 'paused' => __('Paused'), 'completed' => __('Completed'), ]) ->setLabel(fn ($value, $row, $column, $component) => match ($value) { 'planning' => ''.__('Planning').'', 'in_progress' => ''.__('In progress').'', 'paused' => ''.__('Paused').'', 'completed' => ''.__('Completed').'', default => $value } ); $this->addColumn('start_date', __('Start Date')) ->setSortable() ->setFormat(fn ($value, $row, $column) => $value ? $value->format('Y-m-d') : ''); $this->addColumn('end_date_estimated', __('Estimated End Date')) ->setSortable() ->setFormat(fn ($value, $row, $column) => $value ? $value->format('Y-m-d') : ''); $this->addColumn('actions', __('Actions')) ->setLabel(fn ($row) => '
') ->setHtmlAttribute(['class' => 'text-right']); } public function columns(): array { return [ 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 } ), 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) => '') ->htmlAttribute(['class' => 'text-right']), ]; } }