Skip to content

Commit 61df96b

Browse files
authored
Combine result server columns (alexjustesen#2526)
Co-authored-by: Alex Justesen <[email protected]>
1 parent 5fa65d0 commit 61df96b

File tree

4 files changed

+65
-14
lines changed

4 files changed

+65
-14
lines changed

app/Filament/Resources/Results/Tables/ResultTable.php

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Enums\ResultStatus;
66
use App\Filament\Exports\ResultExporter;
7+
use App\Filament\Tables\Columns\ResultServerColumn;
78
use App\Helpers\Number;
89
use App\Models\Result;
910
use Filament\Actions\Action;
@@ -49,19 +50,9 @@ public static function table(Table $table): Table
4950
->label(__('results.service'))
5051
->toggleable(isToggledHiddenByDefault: true),
5152

52-
TextColumn::make('data.server.id')
53-
->label(__('results.server_id'))
54-
->toggleable(isToggledHiddenByDefault: false)
55-
->sortable(query: function (Builder $query, string $direction): Builder {
56-
return $query->orderBy('data->server->id', $direction);
57-
}),
58-
59-
TextColumn::make('data.server.name')
60-
->label(__('results.server_name'))
61-
->toggleable(isToggledHiddenByDefault: false)
62-
->sortable(query: function (Builder $query, string $direction): Builder {
63-
return $query->orderBy('data->server->name', $direction);
64-
}),
53+
ResultServerColumn::make('server')
54+
->label(__('general.server'))
55+
->toggleable(isToggledHiddenByDefault: false),
6556

6657
TextColumn::make('download')
6758
->label(__('results.download'))
@@ -131,7 +122,7 @@ public static function table(Table $table): Table
131122
->label(__('general.created_at'))
132123
->dateTime(config('app.datetime_format'))
133124
->timezone(config('app.display_timezone'))
134-
->toggleable(isToggledHiddenByDefault: true)
125+
->toggleable(isToggledHiddenByDefault: false)
135126
->sortable(),
136127
])
137128
->filters([
@@ -158,6 +149,7 @@ public static function table(Table $table): Table
158149
fn (Builder $query, $date): Builder => $query->whereDate('created_at', '<=', $date),
159150
);
160151
}),
152+
161153
SelectFilter::make('ip_address')
162154
->label(__('results.ip_address'))
163155
->multiple()
@@ -175,6 +167,7 @@ public static function table(Table $table): Table
175167
->toArray();
176168
})
177169
->attribute('data->interface->externalIp'),
170+
178171
SelectFilter::make('server_name')
179172
->label(__('results.server_name'))
180173
->multiple()
@@ -192,6 +185,25 @@ public static function table(Table $table): Table
192185
->toArray();
193186
})
194187
->attribute('data->server->name'),
188+
189+
SelectFilter::make('server_id')
190+
->label(__('results.server_id'))
191+
->multiple()
192+
->options(function (): array {
193+
return Result::query()
194+
->select('data->server->id AS data_server_id')
195+
->whereNotNull('data->server->id')
196+
->where('status', '=', ResultStatus::Completed)
197+
->distinct()
198+
->orderBy('data->server->id')
199+
->get()
200+
->mapWithKeys(function (Result $item, int $key) {
201+
return [$item['data_server_id'] => $item['data_server_id']];
202+
})
203+
->toArray();
204+
})
205+
->attribute('data->server->id'),
206+
195207
TernaryFilter::make('scheduled')
196208
->label(__('results.scheduled'))
197209
->nullable()
@@ -203,10 +215,12 @@ public static function table(Table $table): Table
203215
false: fn (Builder $query) => $query->where('scheduled', false),
204216
blank: fn (Builder $query) => $query,
205217
),
218+
206219
SelectFilter::make('status')
207220
->label(__('general.status'))
208221
->multiple()
209222
->options(ResultStatus::class),
223+
210224
TernaryFilter::make('healthy')
211225
->label(__('general.healthy'))
212226
->nullable()
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace App\Filament\Tables\Columns;
4+
5+
use Filament\Tables\Columns\Column;
6+
7+
class ResultServerColumn extends Column
8+
{
9+
protected string $view = 'filament.tables.columns.result-server-column';
10+
11+
protected ?string $serverName = null;
12+
13+
protected ?int $serverId = null;
14+
15+
public function getServerName(): ?string
16+
{
17+
$this->serverName = $this->record->server_name;
18+
19+
return $this->serverName;
20+
}
21+
22+
public function getServerId(): ?int
23+
{
24+
$this->serverId = $this->record->server_id;
25+
26+
return $this->serverId;
27+
}
28+
}

lang/en/general.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
'created_at' => 'Created at',
3838
'updated_at' => 'Updated at',
3939
'url' => 'URL',
40+
'server' => 'Server',
41+
'servers' => 'Servers',
4042
'stats' => 'Stats',
4143
'statistics' => 'Statistics',
4244

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<div {{ $getExtraAttributeBag() }} class="flex items-center gap-x-1.5 fi-ta-text-item fi-ta-text">
2+
{{ $getServerName() }}
3+
4+
@isset($getServerId)
5+
<span class="text-xs text-zinc-600 dark:text-zinc-400">(#{{ $getServerId() }})</span>
6+
@endisset
7+
</div>

0 commit comments

Comments
 (0)