Files
panel-pelican-dev/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php

80 lines
2.9 KiB
PHP
Raw Normal View History

2024-03-24 01:48:03 -04:00
<?php
namespace App\Filament\Admin\Resources\Nodes\Pages;
2024-03-24 01:48:03 -04:00
2026-01-27 11:36:07 +01:00
use App\Enums\TablerIcon;
use App\Filament\Admin\Resources\Nodes\NodeResource;
use App\Filament\Components\Tables\Columns\NodeClientHealthColumn;
use App\Filament\Components\Tables\Columns\NodeHealthColumn;
2025-03-18 17:35:36 +01:00
use App\Filament\Components\Tables\Filters\TagsFilter;
2024-04-23 19:45:11 -04:00
use App\Models\Node;
use App\Traits\Filament\CanCustomizeHeaderActions;
use App\Traits\Filament\CanCustomizeHeaderWidgets;
use Filament\Actions\CreateAction;
use Filament\Actions\EditAction;
2025-09-24 13:34:19 +02:00
use Filament\Resources\Pages\ListRecords;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
2024-04-23 19:45:11 -04:00
use Filament\Tables\Table;
2024-03-24 01:48:03 -04:00
class ListNodes extends ListRecords
{
use CanCustomizeHeaderActions;
use CanCustomizeHeaderWidgets;
2024-03-24 01:48:03 -04:00
protected static string $resource = NodeResource::class;
2024-04-23 19:45:11 -04:00
public function table(Table $table): Table
{
return $table
->searchable(false)
2024-04-27 21:39:37 -04:00
->checkIfRecordIsSelectableUsing(fn (Node $node) => $node->servers_count <= 0)
2024-04-23 19:45:11 -04:00
->columns([
TextColumn::make('uuid')
2024-04-23 19:45:11 -04:00
->label('UUID')
->searchable()
->hidden(),
NodeHealthColumn::make('health'),
NodeClientHealthColumn::make('reachable'),
TextColumn::make('name')
->label(trans('admin/node.table.name'))
2024-04-23 19:45:11 -04:00
->sortable()
->searchable(),
TextColumn::make('fqdn')
2024-04-23 19:45:11 -04:00
->visibleFrom('md')
->label(trans('admin/node.table.address'))
2024-04-23 19:45:11 -04:00
->sortable()
->searchable(),
IconColumn::make('scheme')
2024-04-23 19:45:11 -04:00
->visibleFrom('xl')
->label('SSL')
2026-01-27 11:36:07 +01:00
->trueIcon(TablerIcon::Lock)
->falseIcon(TablerIcon::LockOpenOff)
2024-04-23 19:45:11 -04:00
->state(fn (Node $node) => $node->scheme === 'https'),
IconColumn::make('public')
->label(trans('admin/node.table.public'))
2024-04-23 19:45:11 -04:00
->visibleFrom('lg')
2026-01-27 11:36:07 +01:00
->trueIcon(TablerIcon::EyeCheck)
->falseIcon(TablerIcon::EyeCancel),
TextColumn::make('servers_count')
2024-04-23 19:45:11 -04:00
->visibleFrom('sm')
->counts('servers')
->label(trans('admin/node.table.servers'))
2025-09-16 11:44:59 -04:00
->sortable(),
2024-04-23 19:45:11 -04:00
])
->recordActions([
EditAction::make(),
2024-04-23 19:45:11 -04:00
])
->toolbarActions([
CreateAction::make(),
])
2026-01-27 11:36:07 +01:00
->emptyStateIcon(TablerIcon::Server2)
2024-04-26 06:49:11 -04:00
->emptyStateDescription('')
->emptyStateHeading(trans('admin/node.no_nodes'))
2025-03-18 17:35:36 +01:00
->filters([
TagsFilter::make()
->model(Node::class),
2024-04-23 19:45:11 -04:00
]);
}
2024-03-24 01:48:03 -04:00
}