From 6fb3d95ef0be47daa0013718fb75c77fe39b7ca4 Mon Sep 17 00:00:00 2001 From: xiaomlove Date: Tue, 28 Jun 2022 13:33:18 +0800 Subject: [PATCH] add filament dashboard --- app/Filament/Custom/Widgets/StatTable.php | 29 ++++++++++++++ app/Filament/Resources/User/UserResource.php | 3 +- .../User/UserResource/Pages/UserProfile.php | 13 ++++++ app/Filament/Widgets/LatestTorrents.php | 2 +- app/Filament/Widgets/SystemInfo.php | 26 ++++++++++++ app/Filament/Widgets/TorrentStat.php | 26 ++++++++++++ app/Filament/Widgets/UserClassStat.php | 26 ++++++++++++ app/Filament/Widgets/UserStat.php | 26 ++++++++++++ app/Http/Middleware/EncryptCookies.php | 2 +- app/Http/Middleware/Locale.php | 5 +-- app/Models/User.php | 16 +++++++- app/Repositories/DashboardRepository.php | 25 +++++++----- resources/lang/en/dashboard.php | 1 + resources/lang/zh_CN/dashboard.php | 1 + resources/lang/zh_TW/dashboard.php | 1 + .../pages/user-profile.blade.php | 3 ++ .../filament/widgets/stat-table.blade.php | 40 +++++++++++++++++++ 17 files changed, 229 insertions(+), 16 deletions(-) create mode 100644 app/Filament/Custom/Widgets/StatTable.php create mode 100644 app/Filament/Resources/User/UserResource/Pages/UserProfile.php create mode 100644 app/Filament/Widgets/SystemInfo.php create mode 100644 app/Filament/Widgets/TorrentStat.php create mode 100644 app/Filament/Widgets/UserClassStat.php create mode 100644 app/Filament/Widgets/UserStat.php create mode 100644 resources/views/filament/resources/user/user-resource/pages/user-profile.blade.php create mode 100644 resources/views/filament/widgets/stat-table.blade.php diff --git a/app/Filament/Custom/Widgets/StatTable.php b/app/Filament/Custom/Widgets/StatTable.php new file mode 100644 index 00000000..1ff84dac --- /dev/null +++ b/app/Filament/Custom/Widgets/StatTable.php @@ -0,0 +1,29 @@ + $this->getHeader(), + 'data' => $this->getTableRows(), + ]; + } +} diff --git a/app/Filament/Resources/User/UserResource.php b/app/Filament/Resources/User/UserResource.php index fbca1a51..137a08fa 100644 --- a/app/Filament/Resources/User/UserResource.php +++ b/app/Filament/Resources/User/UserResource.php @@ -90,7 +90,8 @@ class UserResource extends Resource 'index' => Pages\ListUsers::route('/'), 'create' => Pages\CreateUser::route('/create'), // 'edit' => Pages\EditUser::route('/{record}/edit'), - 'view' => Pages\ViewUser::route('/{record}'), +// 'view' => Pages\ViewUser::route('/{record}'), + 'view' => Pages\UserProfile::route('/{record}'), ]; } diff --git a/app/Filament/Resources/User/UserResource/Pages/UserProfile.php b/app/Filament/Resources/User/UserResource/Pages/UserProfile.php new file mode 100644 index 00000000..ca304169 --- /dev/null +++ b/app/Filament/Resources/User/UserResource/Pages/UserProfile.php @@ -0,0 +1,13 @@ +limit(40), + Tables\Columns\TextColumn::make('name')->limit(30), Tables\Columns\TextColumn::make('user.username'), Tables\Columns\TextColumn::make('size')->formatStateUsing(fn ($state) => mksize($state)), Tables\Columns\TextColumn::make('added')->dateTime(), diff --git a/app/Filament/Widgets/SystemInfo.php b/app/Filament/Widgets/SystemInfo.php new file mode 100644 index 00000000..a2df957b --- /dev/null +++ b/app/Filament/Widgets/SystemInfo.php @@ -0,0 +1,26 @@ +getSystemInfo(); + } + +} diff --git a/app/Filament/Widgets/TorrentStat.php b/app/Filament/Widgets/TorrentStat.php new file mode 100644 index 00000000..e361fa74 --- /dev/null +++ b/app/Filament/Widgets/TorrentStat.php @@ -0,0 +1,26 @@ +statTorrents(); + } + +} diff --git a/app/Filament/Widgets/UserClassStat.php b/app/Filament/Widgets/UserClassStat.php new file mode 100644 index 00000000..8541580e --- /dev/null +++ b/app/Filament/Widgets/UserClassStat.php @@ -0,0 +1,26 @@ +statUserClass(); + } + +} diff --git a/app/Filament/Widgets/UserStat.php b/app/Filament/Widgets/UserStat.php new file mode 100644 index 00000000..b25210e5 --- /dev/null +++ b/app/Filament/Widgets/UserStat.php @@ -0,0 +1,26 @@ +statUsers(); + } + +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php index b3e748d8..59b712bb 100644 --- a/app/Http/Middleware/EncryptCookies.php +++ b/app/Http/Middleware/EncryptCookies.php @@ -17,6 +17,6 @@ class EncryptCookies extends Middleware 'c_secure_login', 'c_secure_ssl', 'c_secure_tracker_ssl', - + 'c_lang_folder', ]; } diff --git a/app/Http/Middleware/Locale.php b/app/Http/Middleware/Locale.php index 08c32cf0..81d680b4 100644 --- a/app/Http/Middleware/Locale.php +++ b/app/Http/Middleware/Locale.php @@ -28,9 +28,8 @@ class Locale { $user = $request->user(); if ($user) { - $language = $user->language; - $locale = self::$languageMaps[$language->site_lang_folder] ?? 'en'; - do_log("user: {$user->id}, language: {$language->id}, set locale: $locale"); + $locale = $user->locale; + do_log("user: {$user->id}, set locale: $locale"); App::setLocale($locale); Carbon::setLocale($locale); } diff --git a/app/Models/User.php b/app/Models/User.php index 0c02232d..28185cfc 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -11,6 +11,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Cookie; use Illuminate\Support\Facades\DB; use Laravel\Sanctum\HasApiTokens; use Nexus\Database\NexusDB; @@ -245,7 +246,20 @@ class User extends Authenticatable implements FilamentUser, HasName public function getLocaleAttribute() { - return Locale::$languageMaps[$this->language->site_lang_folder] ?? 'en'; + $log = ""; + if (IN_NEXUS) { + $lang = get_langfolder_cookie(); + $log .= ", IN_NEXUS, get_langfolder_cookie(): $lang"; + } else { + $lang = Cookie::get('c_lang_folder'); + $log .= ", Cookie::get(): $lang"; + } + if (!$lang) { + $lang = $this->language->site_lang_folder; + $log .= ", [NO_DATA], from database: $lang"; + } + do_log($log); + return Locale::$languageMaps[$lang] ?? 'en'; } public function getSiteLangFolderAttribute() diff --git a/app/Repositories/DashboardRepository.php b/app/Repositories/DashboardRepository.php index 4b41a193..bdb6e5d3 100644 --- a/app/Repositories/DashboardRepository.php +++ b/app/Repositories/DashboardRepository.php @@ -7,6 +7,7 @@ use App\Models\Setting; use App\Models\Torrent; use App\Models\User; use Carbon\Carbon; +use Filament\Facades\Filament; use Illuminate\Support\Facades\DB; class DashboardRepository extends BaseRepository @@ -32,6 +33,12 @@ class DashboardRepository extends BaseRepository 'text' => nexus_trans("dashboard.system_info.$name"), 'value' => \Illuminate\Foundation\Application::VERSION, ]; + $name = 'filament_version'; + $result[$name] = [ + 'name' => $name, + 'text' => nexus_trans("dashboard.system_info.$name"), + 'value' => '2.13.11', + ]; $name = 'php_version'; $result[$name] = [ 'name' => $name, @@ -44,12 +51,12 @@ class DashboardRepository extends BaseRepository 'text' => nexus_trans("dashboard.system_info.$name"), 'value' => DB::select(DB::raw('select version() as info'))[0]->info, ]; -// $name = 'os'; -// $result[$name] = [ -// 'name' => $name, -// 'text' => nexus_trans("dashboard.system_info.$name"), -// 'value' => PHP_OS, -// ]; + $name = 'os'; + $result[$name] = [ + 'name' => $name, + 'text' => nexus_trans("dashboard.system_info.$name"), + 'value' => PHP_OS, + ]; $name = 'server_software'; $result[$name] = [ 'name' => $name, @@ -100,9 +107,9 @@ class DashboardRepository extends BaseRepository break; } $result[$class] = [ - 'class' => $class, - 'class_text' => $value['text'], - 'counts' => $userClasses->has($class) ? $userClasses->get($class) : 0, + 'name' => $class, + 'text' => $value['text'], + 'value' => $userClasses->has($class) ? $userClasses->get($class) : 0, ]; } return $result; diff --git a/resources/lang/en/dashboard.php b/resources/lang/en/dashboard.php index b61c48d1..6c373525 100644 --- a/resources/lang/en/dashboard.php +++ b/resources/lang/en/dashboard.php @@ -46,6 +46,7 @@ return [ 'os' => 'OS', 'server_software' => 'Web software', 'load_average' => 'Server load average', + 'filament_version' => 'Filament version', ], 'latest_user' => [ 'page_title' => 'User latest', diff --git a/resources/lang/zh_CN/dashboard.php b/resources/lang/zh_CN/dashboard.php index 9d1f0c37..1a1f34f4 100644 --- a/resources/lang/zh_CN/dashboard.php +++ b/resources/lang/zh_CN/dashboard.php @@ -46,6 +46,7 @@ return [ 'os' => '操作系统', 'server_software' => 'Web 软件', 'load_average' => '服务器平均负载', + 'filament_version' => 'Filament 版本', ], 'latest_user' => [ 'page_title' => '最新用户', diff --git a/resources/lang/zh_TW/dashboard.php b/resources/lang/zh_TW/dashboard.php index 9c9e8510..63fcbdea 100644 --- a/resources/lang/zh_TW/dashboard.php +++ b/resources/lang/zh_TW/dashboard.php @@ -46,6 +46,7 @@ return [ 'os' => '操作系統', 'server_software' => 'Web 軟件', 'load_average' => '服務器平均負載', + 'filament_version' => 'Filament 版本', ], 'latest_user' => [ 'page_title' => '最新用戶', diff --git a/resources/views/filament/resources/user/user-resource/pages/user-profile.blade.php b/resources/views/filament/resources/user/user-resource/pages/user-profile.blade.php new file mode 100644 index 00000000..cd00dafb --- /dev/null +++ b/resources/views/filament/resources/user/user-resource/pages/user-profile.blade.php @@ -0,0 +1,3 @@ + + + diff --git a/resources/views/filament/widgets/stat-table.blade.php b/resources/views/filament/widgets/stat-table.blade.php new file mode 100644 index 00000000..cf4b9e5c --- /dev/null +++ b/resources/views/filament/widgets/stat-table.blade.php @@ -0,0 +1,40 @@ + + +
+
+
+
+

+ {{$header}} +

+
+ + + +
+ + + @foreach(array_chunk($data, 2) as $chunk) + + @foreach($chunk as $item) + + + @endforeach + + @endforeach + + +
{{$item['text']}}
count == 1) + colspan="3" + @endif + > +
{{$item['value']}}
+
+ +
+
+
+
+
+