44
55use App \Enums \ResultStatus ;
66use App \Filament \Exports \ResultExporter ;
7+ use App \Filament \Tables \Columns \ResultServerColumn ;
78use App \Helpers \Number ;
89use App \Models \Result ;
910use 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 ()
0 commit comments