DEV Community

Horacio Degiorgi
Horacio Degiorgi

Posted on

 

Mejoras en las tablas

Algunas mejoras en las listas de Filament.

Description (o linea adicional en la celda)

 Tables\Columns\TextColumn::make('name')->searchable()->sortable()->wrap()
                ->description(fn (Repository $record): string => $record->institution->name??'')

Enter fullscreen mode Exit fullscreen mode

Image description

Badges (distintivo) en campo de tipo texto

//campo type tiene varios valores definidos en un array (ojs->OJS, etc) 
Tables\Columns\BadgeColumn::make('type')->enum(Repository::$typesform),
Enter fullscreen mode Exit fullscreen mode

Image description

Ocultar columnas

con el método ->toggleable(isToggledHiddenByDefault: true) se puede ocultar la Columna y luego activarla desde el ícono de la derecha.

Actualizar valor desde la tabla

Image description

Con el método action se puede disparar una actualizacion en la celda.

    ->action(function($record, $column) {
        $name = $column->getName();
        $record->update([
            $name => !$record->$name
        ]);
    });
Enter fullscreen mode Exit fullscreen mode

Definir orden default

// en la definición del recurso 
protected function getDefaultTableSortColumn(): ?string
        {
            return 'id';
        }

    protected function getDefaultTableSortDirection(): ?string
        {
            return 'desc';
        }
Enter fullscreen mode Exit fullscreen mode

Enlazar a otro modelo

Se puede crear una macro en el método Boot de AppServiceProvider y enlazar entre modelos usando la función linkRecord luego. Fuente (el modelo dependiente está conectado al modelo institution con la columna name)
en lugar de

Tables\Columns\TextColumn::make('institution.name')
->url(fn (Library $record): string => route('filament.resources.institutions.view', ['record' => $record->institution_id]))
Enter fullscreen mode Exit fullscreen mode

Se puede usar

Tables\Columns\TextColumn::make('institution.name')->linkRecord('view')

Enter fullscreen mode Exit fullscreen mode

Top comments (0)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.