Add front end badges (#960)

* Add front end badges

* I identify as a `string`

* Display even if there's no limit

* use `const`'s

---------

Co-authored-by: RMartinOscar <40749467+RMartinOscar@users.noreply.github.com>
This commit is contained in:
Charles 2025-01-30 06:21:28 -05:00 committed by GitHub
parent d5b8a4c501
commit 20125dbc6f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 65 additions and 0 deletions

View File

@ -20,6 +20,34 @@ class BackupResource extends Resource
protected static bool $canCreateAnother = false;
public const WARNING_THRESHOLD = 0.7;
public static function getNavigationBadge(): string
{
/** @var Server $server */
$server = Filament::getTenant();
$limit = $server->backup_limit;
return $server->backups->count() . ($limit === 0 ? '' : ' / ' . $limit);
}
public static function getNavigationBadgeColor(): ?string
{
/** @var Server $server */
$server = Filament::getTenant();
$limit = $server->backup_limit;
$count = $server->backups->count();
if ($limit === 0) {
return null;
}
return $count >= $limit ? 'danger'
: ($count >= $limit * self::WARNING_THRESHOLD ? 'warning' : 'success');
}
// TODO: find better way handle server conflict state
public static function canAccess(): bool
{

View File

@ -18,6 +18,35 @@ class DatabaseResource extends Resource
protected static ?string $navigationIcon = 'tabler-database';
public const WARNING_THRESHOLD = 0.7;
public static function getNavigationBadge(): string
{
/** @var Server $server */
$server = Filament::getTenant();
$limit = $server->database_limit;
return $server->databases->count() . ($limit === 0 ? '' : ' / ' . $limit);
}
public static function getNavigationBadgeColor(): ?string
{
/** @var Server $server */
$server = Filament::getTenant();
$limit = $server->database_limit;
$count = $server->databases->count();
if ($limit === 0) {
return null;
}
return $count >= $limit
? 'danger'
: ($count >= $limit * self::WARNING_THRESHOLD ? 'warning' : 'success');
}
// TODO: find better way handle server conflict state
public static function canAccess(): bool
{

View File

@ -38,6 +38,14 @@ class UserResource extends Resource
protected static ?string $tenantOwnershipRelationshipName = 'subServers';
public static function getNavigationBadge(): string
{
/** @var Server $server */
$server = Filament::getTenant();
return (string) $server->subusers->count();
}
// TODO: find better way handle server conflict state
public static function canAccess(): bool
{