2024-03-24 01:48:03 -04:00
|
|
|
<?php
|
|
|
|
|
|
2025-09-08 13:12:33 -04:00
|
|
|
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;
|
2025-09-08 13:12:33 -04:00
|
|
|
use App\Filament\Admin\Resources\Nodes\NodeResource;
|
2026-02-12 17:06:38 -05:00
|
|
|
use App\Filament\Components\Tables\Columns\NodeClientHealthColumn;
|
2024-12-12 14:14:52 +01:00
|
|
|
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;
|
2025-06-19 18:24:25 +02:00
|
|
|
use App\Traits\Filament\CanCustomizeHeaderActions;
|
|
|
|
|
use App\Traits\Filament\CanCustomizeHeaderWidgets;
|
2025-09-08 13:12:33 -04:00
|
|
|
use Filament\Actions\CreateAction;
|
|
|
|
|
use Filament\Actions\EditAction;
|
2025-09-24 13:34:19 +02:00
|
|
|
use Filament\Resources\Pages\ListRecords;
|
2024-06-29 17:38:18 -04:00
|
|
|
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
|
|
|
|
|
{
|
2025-06-19 18:24:25 +02:00
|
|
|
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([
|
2024-06-29 17:38:18 -04:00
|
|
|
TextColumn::make('uuid')
|
2024-04-23 19:45:11 -04:00
|
|
|
->label('UUID')
|
|
|
|
|
->searchable()
|
|
|
|
|
->hidden(),
|
2025-02-22 21:44:49 +01:00
|
|
|
NodeHealthColumn::make('health'),
|
2026-02-12 17:06:38 -05:00
|
|
|
NodeClientHealthColumn::make('reachable'),
|
2024-06-29 17:38:18 -04:00
|
|
|
TextColumn::make('name')
|
2025-02-08 23:16:54 -05:00
|
|
|
->label(trans('admin/node.table.name'))
|
2024-04-23 19:45:11 -04:00
|
|
|
->sortable()
|
|
|
|
|
->searchable(),
|
2024-06-29 17:38:18 -04:00
|
|
|
TextColumn::make('fqdn')
|
2024-04-23 19:45:11 -04:00
|
|
|
->visibleFrom('md')
|
2025-02-08 23:16:54 -05:00
|
|
|
->label(trans('admin/node.table.address'))
|
2024-04-23 19:45:11 -04:00
|
|
|
->sortable()
|
|
|
|
|
->searchable(),
|
2024-06-29 17:38:18 -04:00
|
|
|
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'),
|
2024-06-29 17:38:18 -04:00
|
|
|
IconColumn::make('public')
|
2025-02-08 23:16:54 -05:00
|
|
|
->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),
|
2024-06-29 17:38:18 -04:00
|
|
|
TextColumn::make('servers_count')
|
2024-04-23 19:45:11 -04:00
|
|
|
->visibleFrom('sm')
|
|
|
|
|
->counts('servers')
|
2025-02-08 23:16:54 -05:00
|
|
|
->label(trans('admin/node.table.servers'))
|
2025-09-16 11:44:59 -04:00
|
|
|
->sortable(),
|
2024-04-23 19:45:11 -04:00
|
|
|
])
|
2025-09-08 13:12:33 -04:00
|
|
|
->recordActions([
|
2024-06-29 17:38:18 -04:00
|
|
|
EditAction::make(),
|
2024-04-23 19:45:11 -04:00
|
|
|
])
|
2026-01-27 20:07:18 -05:00
|
|
|
->toolbarActions([
|
2026-01-29 15:37:05 +01:00
|
|
|
CreateAction::make(),
|
2026-01-27 20:07:18 -05:00
|
|
|
])
|
2026-01-27 11:36:07 +01:00
|
|
|
->emptyStateIcon(TablerIcon::Server2)
|
2024-04-26 06:49:11 -04:00
|
|
|
->emptyStateDescription('')
|
2025-02-08 23:16:54 -05:00
|
|
|
->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
|
|
|
}
|