diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index 371858d18..0bbf9b40d 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -88,10 +88,8 @@ class NodeResource extends Resource ->hidden(), Tables\Columns\IconColumn::make('health') ->alignCenter() - ->state(fn (Node $node) => $node->systemInformation()['version'] ?? false) - ->tooltip(fn (Node $node) => $node->systemInformation()['version'] ?? $node->systemInformation()['exception'] ?? 'Not Connected') - ->trueIcon('heroicon-m-heart') - ->default(false), + ->state(fn (Node $node) => $node) + ->view('livewire.columns.version-column'), Tables\Columns\TextColumn::make('name') ->searchable(), Tables\Columns\TextColumn::make('fqdn') diff --git a/app/Livewire/NodeSystemInformation.php b/app/Livewire/NodeSystemInformation.php new file mode 100644 index 000000000..cefda7f72 --- /dev/null +++ b/app/Livewire/NodeSystemInformation.php @@ -0,0 +1,30 @@ + + + + HTML; + } +} diff --git a/resources/views/livewire/columns/version-column.blade.php b/resources/views/livewire/columns/version-column.blade.php new file mode 100644 index 000000000..758cfd7c2 --- /dev/null +++ b/resources/views/livewire/columns/version-column.blade.php @@ -0,0 +1,31 @@ +@php + use Filament\Tables\Columns\IconColumn\IconColumnSize; + + $node = $getState(); + $size = $getSize($state) ?? IconColumnSize::Large; + + $sizeClasses = match ($size) { + IconColumnSize::ExtraSmall, 'xs' => 'fi-ta-icon-item-size-xs h-3 w-3', + IconColumnSize::Small, 'sm' => 'fi-ta-icon-item-size-sm h-4 w-4', + IconColumnSize::Medium, 'md' => 'fi-ta-icon-item-size-md h-5 w-5', + IconColumnSize::Large, 'lg' => 'fi-ta-icon-item-size-lg h-6 w-6', + IconColumnSize::ExtraLarge, 'xl' => 'fi-ta-icon-item-size-xl h-7 w-7', + IconColumnSize::TwoExtraLarge, IconColumnSize::ExtraExtraLarge, '2xl' => 'fi-ta-icon-item-size-2xl h-8 w-8', + default => $size, + } +@endphp + +
merge($getExtraAttributes(), escape: false) + ->class([ + 'fi-ta-icon flex gap-1.5', + 'flex-wrap' => $canWrap(), + 'px-3 py-4' => ! $isInline(), + 'flex-col' => $isListWithLineBreaks(), + ]) + }} +> + @livewire('node-system-information', ['node' => $node, 'lazy' => true, 'sizeClasses' => $sizeClasses]) +
diff --git a/resources/views/livewire/node-system-information.blade.php b/resources/views/livewire/node-system-information.blade.php new file mode 100644 index 000000000..6c1523356 --- /dev/null +++ b/resources/views/livewire/node-system-information.blade.php @@ -0,0 +1,17 @@ +
+ @switch($node->systemInformation()['version'] ?? 'false') + @case('false') + true]) + /> + @break + @default + true]) + @style([\Filament\Support\get_color_css_variables('success', shades: [400, 500], alias: 'tables::columns.icon-column.item') => true]) + /> + @endswitch +