mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-10-31 06:36:51 +01:00 
			
		
		
		
	Create custom number format method to catch invalid languages on php 8.4 (#1623)
This commit is contained in:
		
							parent
							
								
									5eff006843
								
							
						
					
					
						commit
						0104a08ba4
					
				| @ -5,7 +5,6 @@ namespace App\Filament\Admin\Resources\NodeResource\Widgets; | |||||||
| use App\Models\Node; | use App\Models\Node; | ||||||
| use Filament\Support\RawJs; | use Filament\Support\RawJs; | ||||||
| use Filament\Widgets\ChartWidget; | use Filament\Widgets\ChartWidget; | ||||||
| use Illuminate\Support\Number; |  | ||||||
| 
 | 
 | ||||||
| class NodeCpuChart extends ChartWidget | class NodeCpuChart extends ChartWidget | ||||||
| { | { | ||||||
| @ -82,8 +81,8 @@ class NodeCpuChart extends ChartWidget | |||||||
|     { |     { | ||||||
|         $data = array_slice(end($this->cpuHistory), -60); |         $data = array_slice(end($this->cpuHistory), -60); | ||||||
| 
 | 
 | ||||||
|         $cpu = Number::format($data['cpu'], maxPrecision: 2, locale: auth()->user()->language); |         $cpu = format_number($data['cpu'], maxPrecision: 2); | ||||||
|         $max = Number::format($this->threads * 100, locale: auth()->user()->language); |         $max = format_number($this->threads * 100); | ||||||
| 
 | 
 | ||||||
|         return trans('admin/node.cpu_chart', ['cpu' => $cpu, 'max' => $max]); |         return trans('admin/node.cpu_chart', ['cpu' => $cpu, 'max' => $max]); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -5,7 +5,6 @@ namespace App\Filament\Admin\Resources\NodeResource\Widgets; | |||||||
| use App\Models\Node; | use App\Models\Node; | ||||||
| use Filament\Support\RawJs; | use Filament\Support\RawJs; | ||||||
| use Filament\Widgets\ChartWidget; | use Filament\Widgets\ChartWidget; | ||||||
| use Illuminate\Support\Number; |  | ||||||
| 
 | 
 | ||||||
| class NodeMemoryChart extends ChartWidget | class NodeMemoryChart extends ChartWidget | ||||||
| { | { | ||||||
| @ -85,12 +84,12 @@ class NodeMemoryChart extends ChartWidget | |||||||
|         $latestMemoryUsed = array_slice(end($this->memoryHistory), -60); |         $latestMemoryUsed = array_slice(end($this->memoryHistory), -60); | ||||||
| 
 | 
 | ||||||
|         $used = config('panel.use_binary_prefix') |         $used = config('panel.use_binary_prefix') | ||||||
|             ? Number::format($latestMemoryUsed['memory'], maxPrecision: 2, locale: auth()->user()->language) .' GiB' |             ? format_number($latestMemoryUsed['memory'], maxPrecision: 2) .' GiB' | ||||||
|             : Number::format($latestMemoryUsed['memory'], maxPrecision: 2, locale: auth()->user()->language) . ' GB'; |             : format_number($latestMemoryUsed['memory'], maxPrecision: 2) . ' GB'; | ||||||
| 
 | 
 | ||||||
|         $total = config('panel.use_binary_prefix') |         $total = config('panel.use_binary_prefix') | ||||||
|             ? Number::format($this->totalMemory / 1024 / 1024 / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB' |             ? format_number($this->totalMemory / 1024 / 1024 / 1024, maxPrecision: 2) .' GiB' | ||||||
|             : Number::format($this->totalMemory / 1000 / 1000 / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB'; |             : format_number($this->totalMemory / 1000 / 1000 / 1000, maxPrecision: 2) . ' GB'; | ||||||
| 
 | 
 | ||||||
|         return trans('admin/node.memory_chart', ['used' => $used, 'total' => $total]); |         return trans('admin/node.memory_chart', ['used' => $used, 'total' => $total]); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -17,7 +17,6 @@ use Filament\Forms\Components\TextInput; | |||||||
| use Filament\Forms\Form; | use Filament\Forms\Form; | ||||||
| use Filament\Notifications\Notification; | use Filament\Notifications\Notification; | ||||||
| use Filament\Support\Enums\Alignment; | use Filament\Support\Enums\Alignment; | ||||||
| use Illuminate\Support\Number; |  | ||||||
| use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction; | use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction; | ||||||
| 
 | 
 | ||||||
| class Settings extends ServerFormPage | class Settings extends ServerFormPage | ||||||
| @ -104,7 +103,7 @@ class Settings extends ServerFormPage | |||||||
|                                     ->prefixIcon('tabler-cpu') |                                     ->prefixIcon('tabler-cpu') | ||||||
|                                     ->columnSpan(1) |                                     ->columnSpan(1) | ||||||
|                                     ->disabled() |                                     ->disabled() | ||||||
|                                     ->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : Number::format($server->cpu, locale: auth()->user()->language) . '%'), |                                     ->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : format_number($server->cpu) . '%'), | ||||||
|                                 TextInput::make('memory') |                                 TextInput::make('memory') | ||||||
|                                     ->label('') |                                     ->label('') | ||||||
|                                     ->prefix(trans('server/setting.server_info.limits.memory')) |                                     ->prefix(trans('server/setting.server_info.limits.memory')) | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ use Carbon\Carbon; | |||||||
| use Filament\Facades\Filament; | use Filament\Facades\Filament; | ||||||
| use Filament\Support\RawJs; | use Filament\Support\RawJs; | ||||||
| use Filament\Widgets\ChartWidget; | use Filament\Widgets\ChartWidget; | ||||||
| use Illuminate\Support\Number; |  | ||||||
| 
 | 
 | ||||||
| class ServerCpuChart extends ChartWidget | class ServerCpuChart extends ChartWidget | ||||||
| { | { | ||||||
| @ -31,7 +30,7 @@ class ServerCpuChart extends ChartWidget | |||||||
|         $cpu = collect(cache()->get("servers.{$this->server->id}.cpu_absolute")) |         $cpu = collect(cache()->get("servers.{$this->server->id}.cpu_absolute")) | ||||||
|             ->slice(-$period) |             ->slice(-$period) | ||||||
|             ->map(fn ($value, $key) => [ |             ->map(fn ($value, $key) => [ | ||||||
|                 'cpu' => Number::format($value, maxPrecision: 2), |                 'cpu' => round($value, 2), | ||||||
|                 'timestamp' => Carbon::createFromTimestamp($key, auth()->user()->timezone ?? 'UTC')->format('H:i:s'), |                 'timestamp' => Carbon::createFromTimestamp($key, auth()->user()->timezone ?? 'UTC')->format('H:i:s'), | ||||||
|             ]) |             ]) | ||||||
|             ->all(); |             ->all(); | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ use Carbon\Carbon; | |||||||
| use Filament\Facades\Filament; | use Filament\Facades\Filament; | ||||||
| use Filament\Support\RawJs; | use Filament\Support\RawJs; | ||||||
| use Filament\Widgets\ChartWidget; | use Filament\Widgets\ChartWidget; | ||||||
| use Illuminate\Support\Number; |  | ||||||
| 
 | 
 | ||||||
| class ServerMemoryChart extends ChartWidget | class ServerMemoryChart extends ChartWidget | ||||||
| { | { | ||||||
| @ -31,7 +30,7 @@ class ServerMemoryChart extends ChartWidget | |||||||
|         $memUsed = collect(cache()->get("servers.{$this->server->id}.memory_bytes")) |         $memUsed = collect(cache()->get("servers.{$this->server->id}.memory_bytes")) | ||||||
|             ->slice(-$period) |             ->slice(-$period) | ||||||
|             ->map(fn ($value, $key) => [ |             ->map(fn ($value, $key) => [ | ||||||
|                 'memory' => Number::format(config('panel.use_binary_prefix') ? $value / 1024 / 1024 / 1024 : $value / 1000 / 1000 / 1000, maxPrecision: 2), |                 'memory' => round(config('panel.use_binary_prefix') ? $value / 1024 / 1024 / 1024 : $value / 1000 / 1000 / 1000, 2), | ||||||
|                 'timestamp' => Carbon::createFromTimestamp($key, auth()->user()->timezone ?? 'UTC')->format('H:i:s'), |                 'timestamp' => Carbon::createFromTimestamp($key, auth()->user()->timezone ?? 'UTC')->format('H:i:s'), | ||||||
|             ]) |             ]) | ||||||
|             ->all(); |             ->all(); | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ use App\Models\Server; | |||||||
| use Carbon\CarbonInterface; | use Carbon\CarbonInterface; | ||||||
| use Filament\Notifications\Notification; | use Filament\Notifications\Notification; | ||||||
| use Filament\Widgets\StatsOverviewWidget; | use Filament\Widgets\StatsOverviewWidget; | ||||||
| use Illuminate\Support\Number; |  | ||||||
| use Livewire\Attributes\On; | use Livewire\Attributes\On; | ||||||
| 
 | 
 | ||||||
| class ServerOverview extends StatsOverviewWidget | class ServerOverview extends StatsOverviewWidget | ||||||
| @ -54,9 +53,9 @@ class ServerOverview extends StatsOverviewWidget | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         $data = collect(cache()->get("servers.{$this->server->id}.cpu_absolute"))->last(default: 0); |         $data = collect(cache()->get("servers.{$this->server->id}.cpu_absolute"))->last(default: 0); | ||||||
|         $cpu = Number::format($data, maxPrecision: 2, locale: auth()->user()->language) . ' %'; |         $cpu = format_number($data, maxPrecision: 2) . ' %'; | ||||||
| 
 | 
 | ||||||
|         return $cpu . ($this->server->cpu > 0 ? ' / ' . Number::format($this->server->cpu, locale: auth()->user()->language) . ' %' : ' / ∞'); |         return $cpu . ($this->server->cpu > 0 ? ' / ' . format_number($this->server->cpu) . ' %' : ' / ∞'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function memoryUsage(): string |     public function memoryUsage(): string | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ class ServerEntry extends Component | |||||||
|                 <div class="flex justify-between text-center items-center gap-4"> |                 <div class="flex justify-between text-center items-center gap-4"> | ||||||
|                     <div> |                     <div> | ||||||
|                         <p class="text-sm dark:text-gray-400">{{ trans('server/dashboard.cpu') }}</p> |                         <p class="text-sm dark:text-gray-400">{{ trans('server/dashboard.cpu') }}</p> | ||||||
|                         <p class="text-md font-semibold">{{ Number::format(0, precision: 2, locale: auth()->user()->language ?? 'en') . '%' }}</p> |                         <p class="text-md font-semibold">{{ format_number(0, precision: 2) . '%' }}</p> | ||||||
|                         <hr class="p-0.5"> |                         <hr class="p-0.5"> | ||||||
|                         <p class="text-xs dark:text-gray-400">{{ $server->formatResource(\App\Enums\ServerResourceType::CPULimit) }}</p> |                         <p class="text-xs dark:text-gray-400">{{ $server->formatResource(\App\Enums\ServerResourceType::CPULimit) }}</p> | ||||||
|                     </div> |                     </div> | ||||||
|  | |||||||
| @ -17,7 +17,6 @@ use Illuminate\Notifications\Notifiable; | |||||||
| use Illuminate\Database\Query\JoinClause; | use Illuminate\Database\Query\JoinClause; | ||||||
| use Illuminate\Support\Arr; | use Illuminate\Support\Arr; | ||||||
| use Illuminate\Support\Facades\Http; | use Illuminate\Support\Facades\Http; | ||||||
| use Illuminate\Support\Number; |  | ||||||
| use Psr\Http\Message\ResponseInterface; | use Psr\Http\Message\ResponseInterface; | ||||||
| use Illuminate\Database\Eloquent\Relations\HasOne; | use Illuminate\Database\Eloquent\Relations\HasOne; | ||||||
| use Illuminate\Database\Eloquent\Relations\HasMany; | use Illuminate\Database\Eloquent\Relations\HasMany; | ||||||
| @ -484,7 +483,7 @@ class Server extends Model implements Validatable | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if ($resourceType->isPercentage()) { |         if ($resourceType->isPercentage()) { | ||||||
|             return Number::format($resourceAmount, precision: 2, locale: auth()->user()->language ?? 'en') . '%'; |             return format_number($resourceAmount, precision: 2) . '%'; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return convert_bytes_to_readable($resourceAmount, base: 3); |         return convert_bytes_to_readable($resourceAmount, base: 3); | ||||||
|  | |||||||
| @ -45,7 +45,7 @@ if (!function_exists('convert_bytes_to_readable')) { | |||||||
|         $fromBase = log($bytes) / log($conversionUnit); |         $fromBase = log($bytes) / log($conversionUnit); | ||||||
|         $base ??= floor($fromBase); |         $base ??= floor($fromBase); | ||||||
| 
 | 
 | ||||||
|         return Number::format(pow($conversionUnit, $fromBase - $base), $decimals, locale: auth()->user()->language) . ' ' . $suffix[$base]; |         return format_number(pow($conversionUnit, $fromBase - $base), precision: $decimals) . ' ' . $suffix[$base]; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -98,3 +98,15 @@ if (!function_exists('get_ip_from_hostname')) { | |||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | if (!function_exists('format_number')) { | ||||||
|  |     function format_number(int|float $number, ?int $precision = null, ?int $maxPrecision = null): false|string | ||||||
|  |     { | ||||||
|  |         try { | ||||||
|  |             return Number::format($number, $precision, $maxPrecision, auth()->user()->language ?? 'en'); | ||||||
|  |         } catch (Throwable) { | ||||||
|  |             // User language is invalid, so default to english
 | ||||||
|  |             return Number::format($number, $precision, $maxPrecision, 'en'); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Boy132
						Boy132