mirror of
https://github.com/pelican-dev/panel.git
synced 2025-09-08 22:38:40 +02: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 Filament\Support\RawJs;
|
||||
use Filament\Widgets\ChartWidget;
|
||||
use Illuminate\Support\Number;
|
||||
|
||||
class NodeCpuChart extends ChartWidget
|
||||
{
|
||||
@ -82,8 +81,8 @@ class NodeCpuChart extends ChartWidget
|
||||
{
|
||||
$data = array_slice(end($this->cpuHistory), -60);
|
||||
|
||||
$cpu = Number::format($data['cpu'], maxPrecision: 2, locale: auth()->user()->language);
|
||||
$max = Number::format($this->threads * 100, locale: auth()->user()->language);
|
||||
$cpu = format_number($data['cpu'], maxPrecision: 2);
|
||||
$max = format_number($this->threads * 100);
|
||||
|
||||
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 Filament\Support\RawJs;
|
||||
use Filament\Widgets\ChartWidget;
|
||||
use Illuminate\Support\Number;
|
||||
|
||||
class NodeMemoryChart extends ChartWidget
|
||||
{
|
||||
@ -85,12 +84,12 @@ class NodeMemoryChart extends ChartWidget
|
||||
$latestMemoryUsed = array_slice(end($this->memoryHistory), -60);
|
||||
|
||||
$used = config('panel.use_binary_prefix')
|
||||
? Number::format($latestMemoryUsed['memory'], maxPrecision: 2, locale: auth()->user()->language) .' GiB'
|
||||
: Number::format($latestMemoryUsed['memory'], maxPrecision: 2, locale: auth()->user()->language) . ' GB';
|
||||
? format_number($latestMemoryUsed['memory'], maxPrecision: 2) .' GiB'
|
||||
: format_number($latestMemoryUsed['memory'], maxPrecision: 2) . ' GB';
|
||||
|
||||
$total = config('panel.use_binary_prefix')
|
||||
? Number::format($this->totalMemory / 1024 / 1024 / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB'
|
||||
: Number::format($this->totalMemory / 1000 / 1000 / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB';
|
||||
? format_number($this->totalMemory / 1024 / 1024 / 1024, maxPrecision: 2) .' GiB'
|
||||
: format_number($this->totalMemory / 1000 / 1000 / 1000, maxPrecision: 2) . ' GB';
|
||||
|
||||
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\Notifications\Notification;
|
||||
use Filament\Support\Enums\Alignment;
|
||||
use Illuminate\Support\Number;
|
||||
use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction;
|
||||
|
||||
class Settings extends ServerFormPage
|
||||
@ -104,7 +103,7 @@ class Settings extends ServerFormPage
|
||||
->prefixIcon('tabler-cpu')
|
||||
->columnSpan(1)
|
||||
->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')
|
||||
->label('')
|
||||
->prefix(trans('server/setting.server_info.limits.memory'))
|
||||
|
@ -7,7 +7,6 @@ use Carbon\Carbon;
|
||||
use Filament\Facades\Filament;
|
||||
use Filament\Support\RawJs;
|
||||
use Filament\Widgets\ChartWidget;
|
||||
use Illuminate\Support\Number;
|
||||
|
||||
class ServerCpuChart extends ChartWidget
|
||||
{
|
||||
@ -31,7 +30,7 @@ class ServerCpuChart extends ChartWidget
|
||||
$cpu = collect(cache()->get("servers.{$this->server->id}.cpu_absolute"))
|
||||
->slice(-$period)
|
||||
->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'),
|
||||
])
|
||||
->all();
|
||||
|
@ -7,7 +7,6 @@ use Carbon\Carbon;
|
||||
use Filament\Facades\Filament;
|
||||
use Filament\Support\RawJs;
|
||||
use Filament\Widgets\ChartWidget;
|
||||
use Illuminate\Support\Number;
|
||||
|
||||
class ServerMemoryChart extends ChartWidget
|
||||
{
|
||||
@ -31,7 +30,7 @@ class ServerMemoryChart extends ChartWidget
|
||||
$memUsed = collect(cache()->get("servers.{$this->server->id}.memory_bytes"))
|
||||
->slice(-$period)
|
||||
->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'),
|
||||
])
|
||||
->all();
|
||||
|
@ -8,7 +8,6 @@ use App\Models\Server;
|
||||
use Carbon\CarbonInterface;
|
||||
use Filament\Notifications\Notification;
|
||||
use Filament\Widgets\StatsOverviewWidget;
|
||||
use Illuminate\Support\Number;
|
||||
use Livewire\Attributes\On;
|
||||
|
||||
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);
|
||||
$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
|
||||
|
@ -38,7 +38,7 @@ class ServerEntry extends Component
|
||||
<div class="flex justify-between text-center items-center gap-4">
|
||||
<div>
|
||||
<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">
|
||||
<p class="text-xs dark:text-gray-400">{{ $server->formatResource(\App\Enums\ServerResourceType::CPULimit) }}</p>
|
||||
</div>
|
||||
|
@ -17,7 +17,6 @@ use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Database\Query\JoinClause;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Number;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
@ -484,7 +483,7 @@ class Server extends Model implements Validatable
|
||||
}
|
||||
|
||||
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);
|
||||
|
@ -45,7 +45,7 @@ if (!function_exists('convert_bytes_to_readable')) {
|
||||
$fromBase = log($bytes) / log($conversionUnit);
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
||||
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