1616use Filament \Forms \Components \DatePicker ;
1717use Filament \Forms \Components \Textarea ;
1818use Filament \Support \Enums \Alignment ;
19+ use Filament \Support \Icons \Heroicon ;
1920use Filament \Tables \Columns \IconColumn ;
2021use Filament \Tables \Columns \TextColumn ;
2122use Filament \Tables \Filters \Filter ;
@@ -35,57 +36,66 @@ public static function table(Table $table): Table
3536 ->label (__ ('general.id ' ))
3637 ->toggleable (isToggledHiddenByDefault: false )
3738 ->sortable (),
39+
40+ TextColumn::make ('status ' )
41+ ->label (__ ('general.status ' ))
42+ ->badge ()
43+ ->toggleable (isToggledHiddenByDefault: false ),
44+
3845 TextColumn::make ('data.interface.externalIp ' )
3946 ->label (__ ('results.ip_address ' ))
4047 ->toggleable (isToggledHiddenByDefault: true )
4148 ->sortable (query: function (Builder $ query , string $ direction ): Builder {
4249 return $ query ->orderBy ('data->interface->externalIp ' , $ direction );
4350 }),
51+
4452 TextColumn::make ('service ' )
4553 ->label (__ ('results.service ' ))
4654 ->toggleable (isToggledHiddenByDefault: true )
4755 ->sortable (),
56+
4857 TextColumn::make ('data.server.id ' )
4958 ->label (__ ('results.server_id ' ))
5059 ->toggleable (isToggledHiddenByDefault: false )
5160 ->sortable (query: function (Builder $ query , string $ direction ): Builder {
5261 return $ query ->orderBy ('data->server->id ' , $ direction );
5362 }),
54- TextColumn::make ('data.isp ' )
55- ->label (__ ('results.isp ' ))
56- ->toggleable (isToggledHiddenByDefault: true )
57- ->sortable (query: function (Builder $ query , string $ direction ): Builder {
58- return $ query ->orderBy ('data->isp ' , $ direction );
59- }),
60- TextColumn::make ('data.server.location ' )
61- ->label (__ ('results.server_location ' ))
62- ->toggleable (isToggledHiddenByDefault: true )
63- ->sortable (query: function (Builder $ query , string $ direction ): Builder {
64- return $ query ->orderBy ('data->server->location ' , $ direction );
65- }),
63+
6664 TextColumn::make ('data.server.name ' )
6765 ->label (__ ('results.server_name ' ))
6866 ->toggleable (isToggledHiddenByDefault: false )
6967 ->sortable (query: function (Builder $ query , string $ direction ): Builder {
7068 return $ query ->orderBy ('data->server->name ' , $ direction );
7169 }),
70+
7271 TextColumn::make ('download ' )
7372 ->label (__ ('results.download ' ))
7473 ->getStateUsing (fn (Result $ record ): ?string => ! blank ($ record ->download ) ? Number::toBitRate (bits: $ record ->download_bits , precision: 2 ) : null )
7574 ->toggleable (isToggledHiddenByDefault: false )
7675 ->sortable (),
76+
7777 TextColumn::make ('upload ' )
7878 ->label (__ ('results.upload ' ))
7979 ->getStateUsing (fn (Result $ record ): ?string => ! blank ($ record ->upload ) ? Number::toBitRate (bits: $ record ->upload_bits , precision: 2 ) : null )
8080 ->toggleable (isToggledHiddenByDefault: false )
8181 ->sortable (),
82+
8283 TextColumn::make ('ping ' )
8384 ->label (__ ('results.ping ' ))
8485 ->toggleable (isToggledHiddenByDefault: false )
8586 ->sortable ()
8687 ->formatStateUsing (function ($ state ) {
8788 return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
8889 }),
90+
91+ TextColumn::make ('data.packetLoss ' )
92+ ->label (__ ('results.packet_loss ' ))
93+ ->toggleable (isToggledHiddenByDefault: false )
94+ ->sortable ()
95+ ->formatStateUsing (function ($ state ) {
96+ return number_format ((float ) $ state , 2 , '. ' , '' ).' % ' ;
97+ }),
98+
8999 TextColumn::make ('data.download.latency.jitter ' )
90100 ->label (__ ('results.download_latency_jitter ' ))
91101 ->toggleable (isToggledHiddenByDefault: true )
@@ -95,6 +105,7 @@ public static function table(Table $table): Table
95105 ->formatStateUsing (function ($ state ) {
96106 return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
97107 }),
108+
98109 TextColumn::make ('data.download.latency.high ' )
99110 ->label (__ ('results.download_latency_high ' ))
100111 ->toggleable (isToggledHiddenByDefault: true )
@@ -104,6 +115,7 @@ public static function table(Table $table): Table
104115 ->formatStateUsing (function ($ state ) {
105116 return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
106117 }),
118+
107119 TextColumn::make ('data.download.latency.low ' )
108120 ->label (__ ('results.download_latency_low ' ))
109121 ->toggleable (isToggledHiddenByDefault: true )
@@ -113,15 +125,7 @@ public static function table(Table $table): Table
113125 ->formatStateUsing (function ($ state ) {
114126 return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
115127 }),
116- TextColumn::make ('data.download.latency.iqm ' )
117- ->label (__ ('results.download_latency_iqm ' ))
118- ->toggleable (isToggledHiddenByDefault: true )
119- ->sortable (query: function (Builder $ query , string $ direction ): Builder {
120- return $ query ->orderBy ('data->download->latency->iqm ' , $ direction );
121- })
122- ->formatStateUsing (function ($ state ) {
123- return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
124- }),
128+
125129 TextColumn::make ('data.upload.latency.jitter ' )
126130 ->label (__ ('results.upload_latency_jitter ' ))
127131 ->toggleable (isToggledHiddenByDefault: true )
@@ -131,6 +135,7 @@ public static function table(Table $table): Table
131135 ->formatStateUsing (function ($ state ) {
132136 return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
133137 }),
138+
134139 TextColumn::make ('data.upload.latency.high ' )
135140 ->label (__ ('results.upload_latency_high ' ))
136141 ->toggleable (isToggledHiddenByDefault: true )
@@ -140,6 +145,7 @@ public static function table(Table $table): Table
140145 ->formatStateUsing (function ($ state ) {
141146 return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
142147 }),
148+
143149 TextColumn::make ('data.upload.latency.low ' )
144150 ->label (__ ('results.upload_latency_low ' ))
145151 ->toggleable (isToggledHiddenByDefault: true )
@@ -149,58 +155,29 @@ public static function table(Table $table): Table
149155 ->formatStateUsing (function ($ state ) {
150156 return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
151157 }),
152- TextColumn::make ('data.upload.latency.iqm ' )
153- ->label (__ ('results.upload_latency_iqm ' ))
154- ->toggleable (isToggledHiddenByDefault: true )
155- ->sortable (query: function (Builder $ query , string $ direction ): Builder {
156- return $ query ->orderBy ('data->upload->latency->iqm ' , $ direction );
157- })
158- ->formatStateUsing (function ($ state ) {
159- return number_format ((float ) $ state , 0 , '. ' , '' ).' ms ' ;
160- }),
161- TextColumn::make ('data.packetLoss ' )
162- ->label (__ ('results.packet_loss ' ))
163- ->toggleable (isToggledHiddenByDefault: true )
164- ->sortable ()
165- ->formatStateUsing (function ($ state ) {
166- return number_format ((float ) $ state , 2 , '. ' , '' ).' % ' ;
167- }),
168- TextColumn::make ('status ' )
169- ->label (__ ('general.status ' ))
170- ->badge ()
158+
159+ IconColumn::make ('healthy ' )
160+ ->label (__ ('general.healthy ' ))
161+ ->boolean ()
162+ ->trueIcon (Heroicon::OutlinedCheckCircle)
163+ ->falseIcon (Heroicon::OutlinedExclamationCircle)
164+ ->trueColor ('success ' )
165+ ->falseColor ('warning ' )
171166 ->toggleable (isToggledHiddenByDefault: false )
172- ->sortable (),
167+ ->alignment (Alignment::Center),
168+
173169 IconColumn::make ('scheduled ' )
174170 ->label (__ ('results.scheduled ' ))
175171 ->boolean ()
176172 ->toggleable (isToggledHiddenByDefault: true )
177173 ->alignment (Alignment::Center),
178- IconColumn::make ('healthy ' )
179- ->label (__ ('general.healthy ' ))
180- ->boolean ()
181- ->toggleable (isToggledHiddenByDefault: true )
182- ->sortable ()
183- ->alignment (Alignment::Center),
184- TextColumn::make ('data.message ' )
185- ->label (__ ('results.error_message_title ' ))
186- ->limit (15 )
187- ->tooltip (fn ($ state ) => $ state )
188- ->toggleable (isToggledHiddenByDefault: true )
189- ->sortable (),
174+
190175 TextColumn::make ('created_at ' )
191176 ->label (__ ('general.created_at ' ))
192177 ->dateTime (config ('app.datetime_format ' ))
193178 ->timezone (config ('app.display_timezone ' ))
194- ->toggleable (isToggledHiddenByDefault: false )
195- ->sortable ()
196- ->alignment (Alignment::End),
197- TextColumn::make ('updated_at ' )
198- ->label (__ ('general.updated_at ' ))
199- ->dateTime (config ('app.datetime_format ' ))
200- ->timezone (config ('app.display_timezone ' ))
201179 ->toggleable (isToggledHiddenByDefault: true )
202- ->sortable ()
203- ->alignment (Alignment::End),
180+ ->sortable (),
204181 ])
205182 ->deferFilters (false )
206183 ->deferColumnManager (false )
0 commit comments